gitlab-ci-local 4.45.1 → 4.45.2

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/README.md CHANGED
@@ -106,7 +106,7 @@ Executing `gitlab-ci-local` with `--variable MSYS_NO_PATHCONV=1` can be useful i
106
106
  # Overrides .gitlab-ci.yml as the default git ci/cd file
107
107
  export GCL_NEEDS='true' >> ~/.bashrc
108
108
  export GCL_FILE='.gitlab-ci-local.yml' >> ~/.bashrc
109
- export GLC_VARIABLES="IMAGE=someimage SOMEOTHERIMAGE=someotherimage"
109
+ export GCL_VARIABLE="IMAGE=someimage SOMEOTHERIMAGE=someotherimage"
110
110
  ```
111
111
 
112
112
  ### DotEnv file
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Tired of pushing to test your .gitlab-ci.yml?",
4
4
  "main": "src/index.js",
5
5
  "bin": "src/index.js",
6
- "version": "4.45.1",
6
+ "version": "4.45.2",
7
7
  "scripts": {
8
8
  "pkg-linux": "pkg src/index.js --public -t node18-linux-x64 -o bin/linux/gitlab-ci-local && chmod +x bin/linux/gitlab-ci-local && gzip -c bin/linux/gitlab-ci-local > bin/linux.gz",
9
9
  "pkg-macos": "pkg src/index.js --public -t node18-macos-x64 -o bin/macos/gitlab-ci-local && gzip -c bin/macos/gitlab-ci-local > bin/macos.gz",
package/src/argv.js CHANGED
@@ -186,4 +186,4 @@ class Argv {
186
186
  }
187
187
  }
188
188
  exports.Argv = Argv;
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyZ3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQywyQ0FBNkI7QUFDN0IsMERBQWtDO0FBRWxDLE1BQWEsSUFBSTtJQUVMLEdBQUcsR0FBcUIsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUV2RCxZQUFhLElBQVM7UUFDbEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sWUFBWSxDQUFFLHVCQUErQixFQUFFLElBQVM7UUFDNUQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztZQUN0RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7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QjtRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLElBQUksUUFBUSxDQUFDO0lBQzNELENBQUM7Q0FDSjtBQTlMRCxvQkE4TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgZG90ZW52IGZyb20gXCJkb3RlbnZcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBjYW1lbENhc2UgZnJvbSBcImNhbWVsY2FzZVwiO1xuXG5leHBvcnQgY2xhc3MgQXJndiB7XG5cbiAgICBwcml2YXRlIG1hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgICBjb25zdHJ1Y3RvciAoYXJndjogYW55KSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3YpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluamVjdERvdGVudihgJHt0aGlzLmhvbWV9Ly5naXRsYWItY2ktbG9jYWwvLmVudmAsIGFyZ3YpO1xuICAgICAgICB0aGlzLmluamVjdERvdGVudihgJHt0aGlzLmN3ZH0vLmdpdGxhYi1jaS1sb2NhbC1lbnZgLCBhcmd2KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluamVjdERvdGVudiAocG90ZW50aWFsRG90ZW52RmlsZXBhdGg6IHN0cmluZywgYXJndjogYW55KSB7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBvdGVudGlhbERvdGVudkZpbGVwYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gZG90ZW52LnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwb3RlbnRpYWxEb3RlbnZGaWxlcGF0aCkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ0tleSA9IGNhbWVsQ2FzZShrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChhcmd2W2FyZ0tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5zZXQoYXJnS2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGN3ZCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGN3ZCA9IHRoaXMubWFwLmdldChcImN3ZFwiKSA/PyBcIi5cIjtcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBjd2QgIT0gXCJvYmplY3RcIiwgXCItLWN3ZCBvcHRpb24gY2Fubm90IGJlIGFuIGFycmF5XCIpO1xuICAgICAgICBjd2QgPSBwYXRoLm5vcm1hbGl6ZShgJHtwcm9jZXNzLmN3ZCgpfS8ke2N3ZH1gKTtcbiAgICAgICAgY3dkID0gY3dkLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcbiAgICAgICAgYXNzZXJ0KGZzLnBhdGhFeGlzdHNTeW5jKGN3ZCksIGAke2N3ZH0gaXMgbm90IGEgZGlyZWN0b3J5YCk7XG4gICAgICAgIHJldHVybiBjd2Q7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGUgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJmaWxlXCIpID8/IFwiLmdpdGxhYi1jaS55bWxcIjtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGVEaXIgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5tYXAuZ2V0KFwic3RhdGVEaXJcIikgPz8gXCIuZ2l0bGFiLWNpLWxvY2FsXCIpLnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcbiAgICB9XG5cbiAgICBnZXQgaG9tZSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1hcC5nZXQoXCJob21lXCIpID8/IHByb2Nlc3MuZW52LkhPTUUgPz8gXCJcIikucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICAgIH1cblxuICAgIGdldCB2b2x1bWUgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwidm9sdW1lXCIpID8/IFtdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiID8gdmFsLnNwbGl0KFwiIFwiKSA6IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgbmV0d29yayAoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJuZXR3b3JrXCIpID8/IFtdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiID8gdmFsLnNwbGl0KFwiIFwiKSA6IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgZXh0cmFIb3N0ICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcImV4dHJhSG9zdFwiKSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IHJlbW90ZVZhcmlhYmxlcyAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInJlbW90ZVZhcmlhYmxlc1wiKTtcbiAgICB9XG5cbiAgICBnZXQgdmFyaWFibGUgKCk6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwidmFyaWFibGVcIik7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgICAgICAocGFpcnMgPz8gW10pLmZvckVhY2goKHZhcmlhYmxlUGFpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGVjID0gLyg/PGtleT5cXHcqPykoPSkoPzx2YWx1ZT4uKikvLmV4ZWModmFyaWFibGVQYWlyKTtcbiAgICAgICAgICAgIGlmIChleGVjPy5ncm91cHM/LmtleSkge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlc1tleGVjLmdyb3Vwcy5rZXldID0gZXhlYz8uZ3JvdXBzPy52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXM7XG4gICAgfVxuXG4gICAgZ2V0IHVuc2V0VmFyaWFibGVzICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJ1bnNldFZhcmlhYmxlXCIpID8/IFtdO1xuICAgIH1cblxuICAgIGdldCBtYW51YWwgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwibWFudWFsXCIpID8/IFtdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiID8gdmFsLnNwbGl0KFwiIFwiKSA6IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgam9iICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJqb2JcIikgPz8gW107XG4gICAgfVxuXG4gICAgZ2V0IGF1dG9Db21wbGV0aW5nICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImF1dG9Db21wbGV0aW5nXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBjbGVhbnVwICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNsZWFudXBcIikgPz8gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgcXVpZXQgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicXVpZXRcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHVtYXNrICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInVtYXNrXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHByaXZpbGVnZWQgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHJpdmlsZWdlZFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgdWxpbWl0ICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgdWxpbWl0ID0gdGhpcy5tYXAuZ2V0KFwidWxpbWl0XCIpO1xuICAgICAgICBpZiAoIXVsaW1pdCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB1bGltaXQ7XG4gICAgfVxuXG4gICAgZ2V0IG5lZWRzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm5lZWRzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBvbmx5TmVlZHMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwib25seU5lZWRzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzdGFnZSAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJzdGFnZVwiKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCBjb21wbGV0aW9uICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNvbXBsZXRpb25cIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3QgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibGlzdFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdEFsbCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0QWxsXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0SnNvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0SnNvblwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdENzdiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0Q3N2XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0Q3N2QWxsICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RDc3ZBbGxcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHByZXZpZXcgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicHJldmlld1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgc2hlbGxJc29sYXRpb24gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwic2hlbGxJc29sYXRpb25cIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGZldGNoSW5jbHVkZXMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiZmV0Y2hJbmNsdWRlc1wiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbW91bnRDYWNoZSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJtb3VudENhY2hlXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBhcnRpZmFjdHNUb1NvdXJjZSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJhcnRpZmFjdHNUb1NvdXJjZVwiKSA/PyB0cnVlO1xuICAgIH1cblxuICAgIGdldCBzaG93VGltZXN0YW1wcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJ0aW1lc3RhbXBzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBtYXhKb2JOYW1lUGFkZGluZyAoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJtYXhKb2JOYW1lUGFkZGluZ1wiKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGdldCBjb25jdXJyZW5jeSAoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gdGhpcy5tYXAuZ2V0KFwiY29uY3VycmVuY3lcIik7XG4gICAgICAgIGlmICghY29uY3VycmVuY3kpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gTnVtYmVyKGNvbmN1cnJlbmN5KTtcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyRXhlY3V0YWJsZSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImNvbnRhaW5lckV4ZWN1dGFibGVcIikgPz8gXCJkb2NrZXJcIjtcbiAgICB9XG59XG4iXX0=
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyZ3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQywyQ0FBNkI7QUFDN0IsMERBQWtDO0FBRWxDLE1BQWEsSUFBSTtJQUVMLEdBQUcsR0FBcUIsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUV2RCxZQUFhLElBQVM7UUFDbEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLFlBQVksQ0FBRSx1QkFBK0IsRUFBRSxJQUFTO1FBQzVELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztZQUN0RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLG1CQUFTLEVBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLElBQUksSUFBSSxDQUFDLE1BQU0s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QUFZLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDM0QsQ0FBQztDQUNKO0FBOUxELG9CQThMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGNhbWVsQ2FzZSBmcm9tIFwiY2FtZWxjYXNlXCI7XG5cbmV4cG9ydCBjbGFzcyBBcmd2IHtcblxuICAgIHByaXZhdGUgbWFwOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICAgIGNvbnN0cnVjdG9yIChhcmd2OiBhbnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJndikpIHtcbiAgICAgICAgICAgIHRoaXMubWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5qZWN0RG90ZW52KGAke3RoaXMuaG9tZX0vLmdpdGxhYi1jaS1sb2NhbC8uZW52YCwgYXJndik7XG4gICAgICAgIHRoaXMuaW5qZWN0RG90ZW52KGAke3RoaXMuY3dkfS8uZ2l0bGFiLWNpLWxvY2FsLWVudmAsIGFyZ3YpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5qZWN0RG90ZW52IChwb3RlbnRpYWxEb3RlbnZGaWxlcGF0aDogc3RyaW5nLCBhcmd2OiBhbnkpIHtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocG90ZW50aWFsRG90ZW52RmlsZXBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBkb3RlbnYucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBvdGVudGlhbERvdGVudkZpbGVwYXRoKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnS2V5ID0gY2FtZWxDYXNlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3ZbYXJnS2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnNldChhcmdLZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgY3dkICgpOiBzdHJpbmcge1xuICAgICAgICBsZXQgY3dkID0gdGhpcy5tYXAuZ2V0KFwiY3dkXCIpID8/IFwiLlwiO1xuICAgICAgICBhc3NlcnQodHlwZW9mIGN3ZCAhPSBcIm9iamVjdFwiLCBcIi0tY3dkIG9wdGlvbiBjYW5ub3QgYmUgYW4gYXJyYXlcIik7XG4gICAgICAgIGN3ZCA9IHBhdGgubm9ybWFsaXplKGAke3Byb2Nlc3MuY3dkKCl9LyR7Y3dkfWApO1xuICAgICAgICBjd2QgPSBjd2QucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICAgICAgICBhc3NlcnQoZnMucGF0aEV4aXN0c1N5bmMoY3dkKSwgYCR7Y3dkfSBpcyBub3QgYSBkaXJlY3RvcnlgKTtcbiAgICAgICAgcmV0dXJuIGN3ZDtcbiAgICB9XG5cbiAgICBnZXQgZmlsZSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImZpbGVcIikgPz8gXCIuZ2l0bGFiLWNpLnltbFwiO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZURpciAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1hcC5nZXQoXCJzdGF0ZURpclwiKSA/PyBcIi5naXRsYWItY2ktbG9jYWxcIikucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICAgIH1cblxuICAgIGdldCBob21lICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMubWFwLmdldChcImhvbWVcIikgPz8gcHJvY2Vzcy5lbnYuSE9NRSA/PyBcIlwiKS5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgfVxuXG4gICAgZ2V0IHZvbHVtZSAoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJ2b2x1bWVcIikgPz8gW107XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgIH1cblxuICAgIGdldCBuZXR3b3JrICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubWFwLmdldChcIm5ldHdvcmtcIikgPz8gW107XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgIH1cblxuICAgIGdldCBleHRyYUhvc3QgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5tYXAuZ2V0KFwiZXh0cmFIb3N0XCIpID8/IFtdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiID8gdmFsLnNwbGl0KFwiIFwiKSA6IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgcmVtb3RlVmFyaWFibGVzICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwicmVtb3RlVmFyaWFibGVzXCIpO1xuICAgIH1cblxuICAgIGdldCB2YXJpYWJsZSAoKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJ2YXJpYWJsZVwiKTtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgICAgICBjb25zdCBwYWlycyA9IHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiA/IHZhbC5zcGxpdChcIiBcIikgOiB2YWw7XG4gICAgICAgIChwYWlycyA/PyBbXSkuZm9yRWFjaCgodmFyaWFibGVQYWlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4ZWMgPSAvKD88a2V5Plxcdyo/KSg9KSg/PHZhbHVlPi4qKS8uZXhlYyh2YXJpYWJsZVBhaXIpO1xuICAgICAgICAgICAgaWYgKGV4ZWM/Lmdyb3Vwcz8ua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVzW2V4ZWMuZ3JvdXBzLmtleV0gPSBleGVjPy5ncm91cHM/LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgICB9XG5cbiAgICBnZXQgdW5zZXRWYXJpYWJsZXMgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInVuc2V0VmFyaWFibGVcIikgPz8gW107XG4gICAgfVxuXG4gICAgZ2V0IG1hbnVhbCAoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLm1hcC5nZXQoXCJtYW51YWxcIikgPz8gW107XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyB2YWwuc3BsaXQoXCIgXCIpIDogdmFsO1xuICAgIH1cblxuICAgIGdldCBqb2IgKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImpvYlwiKSA/PyBbXTtcbiAgICB9XG5cbiAgICBnZXQgYXV0b0NvbXBsZXRpbmcgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiYXV0b0NvbXBsZXRpbmdcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGNsZWFudXAgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY2xlYW51cFwiKSA/PyB0cnVlO1xuICAgIH1cblxuICAgIGdldCBxdWlldCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJxdWlldFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgdW1hc2sgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwidW1hc2tcIikgPz8gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgcHJpdmlsZWdlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJwcml2aWxlZ2VkXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCB1bGltaXQgKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCB1bGltaXQgPSB0aGlzLm1hcC5nZXQoXCJ1bGltaXRcIik7XG4gICAgICAgIGlmICghdWxpbWl0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHVsaW1pdDtcbiAgICB9XG5cbiAgICBnZXQgbmVlZHMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibmVlZHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG9ubHlOZWVkcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJvbmx5TmVlZHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHN0YWdlICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInN0YWdlXCIpID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXBsZXRpb24gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY29tcGxldGlvblwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgbGlzdCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJsaXN0XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0QWxsICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RBbGxcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3RKc29uICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RKc29uXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBsaXN0Q3N2ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImxpc3RDc3ZcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxpc3RDc3ZBbGwgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwibGlzdENzdkFsbFwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgcHJldmlldyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJwcmV2aWV3XCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaGVsbElzb2xhdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJzaGVsbElzb2xhdGlvblwiKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgZmV0Y2hJbmNsdWRlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoXCJmZXRjaEluY2x1ZGVzXCIpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBtb3VudENhY2hlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm1vdW50Q2FjaGVcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGFydGlmYWN0c1RvU291cmNlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcImFydGlmYWN0c1RvU291cmNlXCIpID8/IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dUaW1lc3RhbXBzICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcInRpbWVzdGFtcHNcIikgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heEpvYk5hbWVQYWRkaW5nICgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChcIm1heEpvYk5hbWVQYWRkaW5nXCIpID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmN1cnJlbmN5ICgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm1hcC5nZXQoXCJjb25jdXJyZW5jeVwiKTtcbiAgICAgICAgaWYgKCFjb25jdXJyZW5jeSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBOdW1iZXIoY29uY3VycmVuY3kpO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJFeGVjdXRhYmxlICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KFwiY29udGFpbmVyRXhlY3V0YWJsZVwiKSA/PyBcImRvY2tlclwiO1xuICAgIH1cbn1cbiJdfQ==
package/src/commander.js CHANGED
@@ -228,4 +228,4 @@ class Commander {
228
228
  }
229
229
  }
230
230
  exports.Commander = Commander;
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbWFuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUcxQixtQ0FBOEI7QUFFOUIseUNBQW9DO0FBQ3BDLHdEQUEwQjtBQUUxQixtQ0FBc0M7QUFFdEMsTUFBYSxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFFLElBQVUsRUFBRSxNQUFjLEVBQUUsWUFBMEI7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsTUFBTSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLE1B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QyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1NBQy9DO1FBRUQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDdEgsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUo7QUFwUUQsOEJBb1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IHtQYXJzZXJ9IGZyb20gXCIuL3BhcnNlclwiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge0V4ZWN1dG9yfSBmcm9tIFwiLi9leGVjdXRvclwiO1xuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kZXIge1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1blBpcGVsaW5lIChhcmd2OiBBcmd2LCBwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IHBhcnNlci5qb2JzO1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuXG4gICAgICAgIGxldCBwb3RlbnRpYWxTdGFydGVycyA9IFsuLi5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm1hbnVhbFwiIHx8IGFyZ3YubWFudWFsLmluY2x1ZGVzKGoubmFtZSkpO1xuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucHJpbnRSZXBvcnQoe1xuICAgICAgICAgICAgY3dkOiBhcmd2LmN3ZCxcbiAgICAgICAgICAgIHNob3dUaW1lc3RhbXBzOiBhcmd2LnNob3dUaW1lc3RhbXBzLFxuICAgICAgICAgICAgc3RhdGVEaXI6IGFyZ3Yuc3RhdGVEaXIsXG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM6IHdyaXRlU3RyZWFtcyxcbiAgICAgICAgICAgIGpvYnM6IGpvYnMsXG4gICAgICAgICAgICBzdGFnZXM6IHN0YWdlcyxcbiAgICAgICAgICAgIGpvYk5hbWVQYWQ6IHBhcnNlci5qb2JOYW1lUGFkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgcnVuSm9ic0luU3RhZ2UgKGFyZ3Y6IEFyZ3YsIHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gcGFyc2VyLmpvYnMuZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gYXJndi5zdGFnZSk7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG5cbiAgICAgICAgbGV0IHBvdGVudGlhbFN0YXJ0ZXJzID0gWy4uLmpvYnMudmFsdWVzKCldO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibWFudWFsXCIgfHwgYXJndi5tYW51YWwuaW5jbHVkZXMoai5uYW1lKSk7XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gYXJndi5zdGFnZSk7XG4gICAgICAgIGF3YWl0IEV4ZWN1dG9yLnJ1bkxvb3AoYXJndiwgam9icywgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBydW5Kb2JzIChhcmd2OiBBcmd2LCBwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3QgbmVlZHMgPSBhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzO1xuICAgICAgICBjb25zdCBqb2JBcmdzID0gYXJndi5qb2I7XG4gICAgICAgIGNvbnN0IGpvYnMgPSBwYXJzZXIuam9icztcbiAgICAgICAgY29uc3Qgc3RhZ2VzID0gcGFyc2VyLnN0YWdlcztcblxuICAgICAgICBjb25zdCBwb3RlbnRpYWxTdGFydGVyczogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgam9iU2V0ID0gbmVlZHMgPyBuZXcgU2V0KGpvYnMpIDogbmV3IFNldDxKb2I+KCk7XG4gICAgICAgIGpvYkFyZ3MuZm9yRWFjaChqb2JBcmdOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VKb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLmJhc2VOYW1lID09IGpvYkFyZ05hbWUgfHwgai5uYW1lID09PSBqb2JBcmdOYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYiBvZiBiYXNlSm9icykge1xuICAgICAgICAgICAgICAgIGpvYlNldC5hZGQoYik7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzLnB1c2goLi4uRXhlY3V0b3IuZ2V0UGFzdFRvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGIsIGFyZ3YubWFudWFsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzLnB1c2goYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwb3RlbnRpYWxTdGFydGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqb2JBcmdzLmpvaW4oXCIsXCIpfX0gY291bGQgbm90IGJlIGZvdW5kYH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhcnRlcnMgPSBhcmd2Lm9ubHlOZWVkc1xuICAgICAgICAgICAgPyBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIocCA9PiAham9iQXJncy5pbmNsdWRlcyhwLm5hbWUpKVxuICAgICAgICAgICAgOiBwb3RlbnRpYWxTdGFydGVycztcblxuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIEFycmF5LmZyb20oam9iU2V0KSwgc3RhZ2VzLCBzdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBwcmludFJlcG9ydCAoe2N3ZCwgc3RhdGVEaXIsIHNob3dUaW1lc3RhbXBzLCB3cml0ZVN0cmVhbXMsIGpvYnMsIHN0YWdlcywgam9iTmFtZVBhZH06IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIHNob3dUaW1lc3RhbXBzOiBib29sZWFuO1xuICAgICAgICBzdGF0ZURpcjogc3RyaW5nO1xuICAgICAgICB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcztcbiAgICAgICAgam9iczogUmVhZG9ubHlBcnJheTxKb2I+O1xuICAgICAgICBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAgICAgICBqb2JOYW1lUGFkOiBudW1iZXI7XG4gICAgfSkge1xuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyRHVyYXRpb24gPSAoZHVyYXRpb246IHN0cmluZykgPT4gc2hvd1RpbWVzdGFtcHMgPyBgIFske2R1cmF0aW9uLnBhZFN0YXJ0KDcpfV1gIDogXCJcIjtcblxuICAgICAgICBjb25zdCBwcmVTY3JpcHRzOiB7c3VjY2Vzc2Z1bDogSm9iW107IGZhaWxlZDogSm9iW107IHdhcm5lZDogSm9iW119ID0ge1xuICAgICAgICAgICAgc3VjY2Vzc2Z1bDogW10sXG4gICAgICAgICAgICBmYWlsZWQ6IFtdLFxuICAgICAgICAgICAgd2FybmVkOiBbXSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWZ0ZXJTY3JpcHRzOiB7d2FybmVkOiBKb2JbXX0gPSB7XG4gICAgICAgICAgICB3YXJuZWQ6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChqb2Iuc3RhcnRlZCAmJiBqb2IuYWZ0ZXJTY3JpcHRzRXhpdENvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLnB1c2goam9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmICgham9iLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGpvYi5wcmVTY3JpcHRzRXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqb2IuYWxsb3dGYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgcHJlU2NyaXB0cy53YXJuZWQucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLmZhaWxlZC5wdXNoKGpvYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlU2NyaXB0cy5zdWNjZXNzZnVsLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLmZvckVhY2goKHtjb3ZlcmFnZVBlcmNlbnQsIG5hbWUsIHByZXR0eUR1cmF0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVQYWQgPSBuYW1lLnBhZEVuZChqb2JOYW1lUGFkKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ0dyZWVuQnJpZ2h0ICBQQVNTIH0ke3JlbmRlckR1cmF0aW9uKHByZXR0eUR1cmF0aW9uKX0ge2JsdWVCcmlnaHQgJHtuYW1lUGFkfX1gKTtcbiAgICAgICAgICAgICAgICBpZiAoY292ZXJhZ2VQZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICR7Y292ZXJhZ2VQZXJjZW50fSUge2dyZXkgY292ZXJhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMud2FybmVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMud2FybmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1llbGxvd0JyaWdodCAgV0FSTiB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19ICBwcmVfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7eWVsbG93ID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWZ0ZXJTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGFmdGVyU2NyaXB0cy53YXJuZWQuc29ydCgoYSwgYikgPT4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKSk7XG4gICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLmZvckVhY2goKHtuYW1lLCBwcmV0dHlEdXJhdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lUGFkID0gbmFtZS5wYWRFbmQoam9iTmFtZVBhZCk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSR7cmVuZGVyRHVyYXRpb24ocHJldHR5RHVyYXRpb24pfSB7Ymx1ZUJyaWdodCAke25hbWVQYWR9fSAgYWZ0ZXJfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLmZhaWxlZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMuZmFpbGVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMuZmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1JlZCAgRkFJTCB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7cmVkID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSBqb2IuZW52aXJvbm1lbnQ7XG4gICAgICAgICAgICBpZiAoZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZS5uYW1lO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gZS51cmw7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fSBlbnZpcm9ubWVudDogXFx7IG5hbWU6IHtib2xkICR7bmFtZX19YCk7XG4gICAgICAgICAgICBpZiAodXJsICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCwgdXJsOiB7Ym9sZCAke3VybH19YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwiIH1cXG5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgcnVuTGlzdCAocGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBsaXN0QWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdoZW5QYWRFbmQgPSA0O1xuICAgICAgICBqb2JzLmZvckVhY2goaiA9PiB3aGVuUGFkRW5kID0gTWF0aC5tYXgoai53aGVuLmxlbmd0aCwgd2hlblBhZEVuZCkpO1xuXG4gICAgICAgIGxldCBzdGFnZVBhZEVuZCA9IDU7XG4gICAgICAgIHN0YWdlcy5mb3JFYWNoKHMgPT4gc3RhZ2VQYWRFbmQgPSBNYXRoLm1heChzLmxlbmd0aCwgc3RhZ2VQYWRFbmQpKTtcblxuICAgICAgICBsZXQgZGVzY3JpcHRpb25QYWRFbmQgPSAxMTtcbiAgICAgICAgam9icy5mb3JFYWNoKGogPT4gZGVzY3JpcHRpb25QYWRFbmQgPSBNYXRoLm1heChqLmRlc2NyaXB0aW9uLmxlbmd0aCwgZGVzY3JpcHRpb25QYWRFbmQpKTtcblxuICAgICAgICBjb25zdCBqb2JOYW1lUGFkID0gcGFyc2VyLmpvYk5hbWVQYWQ7XG5cbiAgICAgICAgaWYgKCFsaXN0QWxsKSB7XG4gICAgICAgICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtncmV5ICR7XCJuYW1lXCIucGFkRW5kKGpvYk5hbWVQYWQpfSAgJHtcImRlc2NyaXB0aW9uXCIucGFkRW5kKGRlc2NyaXB0aW9uUGFkRW5kKX19ICBgKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSAke1wic3RhZ2VcIi5wYWRFbmQoc3RhZ2VQYWRFbmQpfSAgJHtcIndoZW5cIi5wYWRFbmQod2hlblBhZEVuZCl9fSAgYCk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2dyZXkgYWxsb3dfZmFpbHVyZSAgbmVlZHN9XFxuYCk7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyTGluZSA9IChqb2I6IEpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93RmFpbHVyZSA9IGpvYi5hbGxvd0ZhaWx1cmUgPyBcInRydWUgXCIgOiBcImZhbHNlXCI7XG4gICAgICAgICAgICBsZXQgam9iTGluZSA9IGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWUucGFkRW5kKGpvYk5hbWVQYWQpfX0gICR7am9iLmRlc2NyaXB0aW9uLnBhZEVuZChkZXNjcmlwdGlvblBhZEVuZCl9ICBgO1xuICAgICAgICAgICAgam9iTGluZSArPSBjaGFsa2B7eWVsbG93ICR7am9iLnN0YWdlLnBhZEVuZChzdGFnZVBhZEVuZCl9fSAgJHtqb2Iud2hlbi5wYWRFbmQod2hlblBhZEVuZCl9ICAke2FsbG93RmFpbHVyZS5wYWRFbmQoMTEpfWA7XG4gICAgICAgICAgICBpZiAobmVlZHMpIHtcbiAgICAgICAgICAgICAgICBqb2JMaW5lICs9IGNoYWxrYCAgICBbe2JsdWVCcmlnaHQgJHtuZWVkc319XWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke2pvYkxpbmV9XFxuYCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgam9icy5mb3JFYWNoKChqb2IpID0+IHJlbmRlckxpbmUoam9iKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJ1bkpzb24gKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QganNvbjogYW55W10gPSBbXTtcblxuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAganNvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBqb2IubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogam9iLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHN0YWdlOiBqb2Iuc3RhZ2UsXG4gICAgICAgICAgICAgICAgd2hlbjogam9iLndoZW4sXG4gICAgICAgICAgICAgICAgYWxsb3dfZmFpbHVyZTogam9iLmFsbG93RmFpbHVyZSxcbiAgICAgICAgICAgICAgICBuZWVkczogam9iLm5lZWRzPy5maWx0ZXIobiA9PiAhbi5wcm9qZWN0ICYmICFuLnBpcGVsaW5lKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfVxcbmApO1xuICAgIH1cblxuICAgIHN0YXRpYyBydW5Dc3YgKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgYWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFhbGwpIHtcbiAgICAgICAgICAgIGpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJuYW1lO2Rlc2NyaXB0aW9uO3N0YWdlO3doZW47YWxsb3dGYWlsdXJlO25lZWRzXFxuXCIpO1xuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKS5qb2luKFwiLFwiKSA/PyBbXTtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoYCR7am9iLm5hbWV9O1wiJHtqb2IuZGVzY3JpcHRpb259XCI7JHtqb2Iuc3RhZ2V9OyR7am9iLndoZW59OyR7am9iLmFsbG93RmFpbHVyZX07WyR7bmVlZHN9XVxcbmApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbWFuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUcxQixtQ0FBOEI7QUFFOUIseUNBQW9DO0FBQ3BDLHdEQUEwQjtBQUUxQixtQ0FBc0M7QUFFdEMsTUFBYSxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFFLElBQVUsRUFBRSxNQUFjLEVBQUUsWUFBMEI7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsTUFBTSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLE1B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Q0FBQztDQUVKO0FBcFFELDhCQW9RQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7UGFyc2VyfSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IHtFeGVjdXRvcn0gZnJvbSBcIi4vZXhlY3V0b3JcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndlwiO1xuaW1wb3J0IHtBc3NlcnRpb25FcnJvcn0gZnJvbSBcImFzc2VydFwiO1xuXG5leHBvcnQgY2xhc3MgQ29tbWFuZGVyIHtcblxuICAgIHN0YXRpYyBhc3luYyBydW5QaXBlbGluZSAoYXJndjogQXJndiwgcGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKSB7XG4gICAgICAgIGNvbnN0IGpvYnMgPSBwYXJzZXIuam9icztcbiAgICAgICAgY29uc3Qgc3RhZ2VzID0gcGFyc2VyLnN0YWdlcztcblxuICAgICAgICBsZXQgcG90ZW50aWFsU3RhcnRlcnMgPSBbLi4uam9icy52YWx1ZXMoKV07XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm5ldmVyXCIpO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJtYW51YWxcIiB8fCBhcmd2Lm1hbnVhbC5pbmNsdWRlcyhqLm5hbWUpKTtcbiAgICAgICAgYXdhaXQgRXhlY3V0b3IucnVuTG9vcChhcmd2LCBqb2JzLCBzdGFnZXMsIHBvdGVudGlhbFN0YXJ0ZXJzKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnByaW50UmVwb3J0KHtcbiAgICAgICAgICAgIGN3ZDogYXJndi5jd2QsXG4gICAgICAgICAgICBzaG93VGltZXN0YW1wczogYXJndi5zaG93VGltZXN0YW1wcyxcbiAgICAgICAgICAgIHN0YXRlRGlyOiBhcmd2LnN0YXRlRGlyLFxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zOiB3cml0ZVN0cmVhbXMsXG4gICAgICAgICAgICBqb2JzOiBqb2JzLFxuICAgICAgICAgICAgc3RhZ2VzOiBzdGFnZXMsXG4gICAgICAgICAgICBqb2JOYW1lUGFkOiBwYXJzZXIuam9iTmFtZVBhZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkpvYnNJblN0YWdlIChhcmd2OiBBcmd2LCBwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IHBhcnNlci5qb2JzLmZpbHRlcihqID0+IGouc3RhZ2UgPT09IGFyZ3Yuc3RhZ2UpO1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuXG4gICAgICAgIGxldCBwb3RlbnRpYWxTdGFydGVycyA9IFsuLi5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm1hbnVhbFwiIHx8IGFyZ3YubWFudWFsLmluY2x1ZGVzKGoubmFtZSkpO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGouc3RhZ2UgPT09IGFyZ3Yuc3RhZ2UpO1xuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucHJpbnRSZXBvcnQoe1xuICAgICAgICAgICAgY3dkOiBhcmd2LmN3ZCxcbiAgICAgICAgICAgIHNob3dUaW1lc3RhbXBzOiBhcmd2LnNob3dUaW1lc3RhbXBzLFxuICAgICAgICAgICAgc3RhdGVEaXI6IGFyZ3Yuc3RhdGVEaXIsXG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM6IHdyaXRlU3RyZWFtcyxcbiAgICAgICAgICAgIGpvYnM6IGpvYnMsXG4gICAgICAgICAgICBzdGFnZXM6IHN0YWdlcyxcbiAgICAgICAgICAgIGpvYk5hbWVQYWQ6IHBhcnNlci5qb2JOYW1lUGFkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgcnVuSm9icyAoYXJndjogQXJndiwgcGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKSB7XG4gICAgICAgIGNvbnN0IG5lZWRzID0gYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcztcbiAgICAgICAgY29uc3Qgam9iQXJncyA9IGFyZ3Yuam9iO1xuICAgICAgICBjb25zdCBqb2JzID0gcGFyc2VyLmpvYnM7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG5cbiAgICAgICAgY29uc3QgcG90ZW50aWFsU3RhcnRlcnM6IEpvYltdID0gW107XG4gICAgICAgIGNvbnN0IGpvYlNldCA9IG5lZWRzID8gbmV3IFNldChqb2JzKSA6IG5ldyBTZXQ8Sm9iPigpO1xuICAgICAgICBqb2JBcmdzLmZvckVhY2goam9iQXJnTmFtZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBiYXNlSm9icyA9IGpvYnMuZmlsdGVyKGogPT4gai5iYXNlTmFtZSA9PSBqb2JBcmdOYW1lIHx8IGoubmFtZSA9PT0gam9iQXJnTmFtZSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGIgb2YgYmFzZUpvYnMpIHtcbiAgICAgICAgICAgICAgICBqb2JTZXQuYWRkKGIpO1xuICAgICAgICAgICAgICAgIGlmIChuZWVkcykge1xuICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxTdGFydGVycy5wdXNoKC4uLkV4ZWN1dG9yLmdldFBhc3RUb1dhaXRGb3Ioam9icywgc3RhZ2VzLCBiLCBhcmd2Lm1hbnVhbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxTdGFydGVycy5wdXNoKGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocG90ZW50aWFsU3RhcnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iQXJncy5qb2luKFwiLFwiKX19IGNvdWxkIG5vdCBiZSBmb3VuZGB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0ZXJzID0gYXJndi5vbmx5TmVlZHNcbiAgICAgICAgICAgID8gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKHAgPT4gIWpvYkFyZ3MuaW5jbHVkZXMocC5uYW1lKSlcbiAgICAgICAgICAgIDogcG90ZW50aWFsU3RhcnRlcnM7XG5cbiAgICAgICAgYXdhaXQgRXhlY3V0b3IucnVuTG9vcChhcmd2LCBBcnJheS5mcm9tKGpvYlNldCksIHN0YWdlcywgc3RhcnRlcnMpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucHJpbnRSZXBvcnQoe1xuICAgICAgICAgICAgY3dkOiBhcmd2LmN3ZCxcbiAgICAgICAgICAgIHNob3dUaW1lc3RhbXBzOiBhcmd2LnNob3dUaW1lc3RhbXBzLFxuICAgICAgICAgICAgc3RhdGVEaXI6IGFyZ3Yuc3RhdGVEaXIsXG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM6IHdyaXRlU3RyZWFtcyxcbiAgICAgICAgICAgIGpvYnM6IGpvYnMsXG4gICAgICAgICAgICBzdGFnZXM6IHN0YWdlcyxcbiAgICAgICAgICAgIGpvYk5hbWVQYWQ6IHBhcnNlci5qb2JOYW1lUGFkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgcHJpbnRSZXBvcnQgKHtjd2QsIHN0YXRlRGlyLCBzaG93VGltZXN0YW1wcywgd3JpdGVTdHJlYW1zLCBqb2JzLCBzdGFnZXMsIGpvYk5hbWVQYWR9OiB7XG4gICAgICAgIGN3ZDogc3RyaW5nO1xuICAgICAgICBzaG93VGltZXN0YW1wczogYm9vbGVhbjtcbiAgICAgICAgc3RhdGVEaXI6IHN0cmluZztcbiAgICAgICAgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXM7XG4gICAgICAgIGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPjtcbiAgICAgICAgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgICAgICAgam9iTmFtZVBhZDogbnVtYmVyO1xuICAgIH0pIHtcblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwiXFxuXCIpO1xuXG4gICAgICAgIGNvbnN0IHJlbmRlckR1cmF0aW9uID0gKGR1cmF0aW9uOiBzdHJpbmcpID0+IHNob3dUaW1lc3RhbXBzID8gYCBbJHtkdXJhdGlvbi5wYWRTdGFydCg3KX1dYCA6IFwiXCI7XG5cbiAgICAgICAgY29uc3QgcHJlU2NyaXB0czoge3N1Y2Nlc3NmdWw6IEpvYltdOyBmYWlsZWQ6IEpvYltdOyB3YXJuZWQ6IEpvYltdfSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3NmdWw6IFtdLFxuICAgICAgICAgICAgZmFpbGVkOiBbXSxcbiAgICAgICAgICAgIHdhcm5lZDogW10sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFmdGVyU2NyaXB0czoge3dhcm5lZDogSm9iW119ID0ge1xuICAgICAgICAgICAgd2FybmVkOiBbXSxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBqb2JzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBpZiAoam9iLnN0YXJ0ZWQgJiYgam9iLmFmdGVyU2NyaXB0c0V4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXJTY3JpcHRzLndhcm5lZC5wdXNoKGpvYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBqb2JzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBpZiAoIWpvYi5zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChqb2IucHJlU2NyaXB0c0V4aXRDb2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLnB1c2goam9iKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoam9iLmFsbG93RmFpbHVyZSkge1xuICAgICAgICAgICAgICAgIHByZVNjcmlwdHMud2FybmVkLnB1c2goam9iKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJlU2NyaXB0cy5mYWlsZWQucHVzaChqb2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZVNjcmlwdHMuc3VjY2Vzc2Z1bC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMuc3VjY2Vzc2Z1bC5zb3J0KChhLCBiKSA9PiBzdGFnZXMuaW5kZXhPZihhLnN0YWdlKSAtIHN0YWdlcy5pbmRleE9mKGIuc3RhZ2UpKTtcbiAgICAgICAgICAgIHByZVNjcmlwdHMuc3VjY2Vzc2Z1bC5mb3JFYWNoKCh7Y292ZXJhZ2VQZXJjZW50LCBuYW1lLCBwcmV0dHlEdXJhdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lUGFkID0gbmFtZS5wYWRFbmQoam9iTmFtZVBhZCk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdHcmVlbkJyaWdodCAgUEFTUyB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19YCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdmVyYWdlUGVyY2VudCkge1xuICAgICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCAke2NvdmVyYWdlUGVyY2VudH0lIHtncmV5IGNvdmVyYWdlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwiXFxuXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlU2NyaXB0cy53YXJuZWQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBwcmVTY3JpcHRzLndhcm5lZC5zb3J0KChhLCBiKSA9PiBzdGFnZXMuaW5kZXhPZihhLnN0YWdlKSAtIHN0YWdlcy5pbmRleE9mKGIuc3RhZ2UpKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qge25hbWUsIHByZXR0eUR1cmF0aW9ufSBvZiBwcmVTY3JpcHRzLndhcm5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVQYWQgPSBuYW1lLnBhZEVuZChqb2JOYW1lUGFkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzYWZlTmFtZSA9IFV0aWxzLnNhZmVEb2NrZXJTdHJpbmcobmFtZSk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSR7cmVuZGVyRHVyYXRpb24ocHJldHR5RHVyYXRpb24pfSB7Ymx1ZUJyaWdodCAke25hbWVQYWR9fSAgcHJlX3NjcmlwdFxcbmApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dExvZyA9IGF3YWl0IGZzLnJlYWRGaWxlKGAke2N3ZH0vJHtzdGF0ZURpcn0vb3V0cHV0LyR7c2FmZU5hbWV9LmxvZ2AsIFwidXRmOFwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2Ygb3V0cHV0TG9nLnNwbGl0KC9cXHI/XFxuLykuZmlsdGVyKGogPT4gIWouaW5jbHVkZXMoXCJbMzJtJCBcIikpLmZpbHRlcihqID0+IGogIT09IFwiXCIpLnNsaWNlKC0zKSkge1xuICAgICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCAge3llbGxvdyA+fSAke2xpbmV9XFxuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFmdGVyU2NyaXB0cy53YXJuZWQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgYWZ0ZXJTY3JpcHRzLndhcm5lZC5mb3JFYWNoKCh7bmFtZSwgcHJldHR5RHVyYXRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2JsYWNrLmJnWWVsbG93QnJpZ2h0ICBXQVJOIH0ke3JlbmRlckR1cmF0aW9uKHByZXR0eUR1cmF0aW9uKX0ge2JsdWVCcmlnaHQgJHtuYW1lUGFkfX0gIGFmdGVyX3NjcmlwdFxcbmApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlU2NyaXB0cy5mYWlsZWQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBwcmVTY3JpcHRzLmZhaWxlZC5zb3J0KChhLCBiKSA9PiBzdGFnZXMuaW5kZXhPZihhLnN0YWdlKSAtIHN0YWdlcy5pbmRleE9mKGIuc3RhZ2UpKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qge25hbWUsIHByZXR0eUR1cmF0aW9ufSBvZiBwcmVTY3JpcHRzLmZhaWxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVQYWQgPSBuYW1lLnBhZEVuZChqb2JOYW1lUGFkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzYWZlTmFtZSA9IFV0aWxzLnNhZmVEb2NrZXJTdHJpbmcobmFtZSk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdSZWQgIEZBSUwgfSR7cmVuZGVyRHVyYXRpb24ocHJldHR5RHVyYXRpb24pfSB7Ymx1ZUJyaWdodCAke25hbWVQYWR9fVxcbmApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dExvZyA9IGF3YWl0IGZzLnJlYWRGaWxlKGAke2N3ZH0vJHtzdGF0ZURpcn0vb3V0cHV0LyR7c2FmZU5hbWV9LmxvZ2AsIFwidXRmOFwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2Ygb3V0cHV0TG9nLnNwbGl0KC9cXHI/XFxuLykuZmlsdGVyKGogPT4gIWouaW5jbHVkZXMoXCJbMzJtJCBcIikpLmZpbHRlcihqID0+IGogIT09IFwiXCIpLnNsaWNlKC0zKSkge1xuICAgICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCAge3JlZCA+fSAke2xpbmV9XFxuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBqb2Igb2YgcHJlU2NyaXB0cy5zdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gam9iLmVudmlyb25tZW50O1xuICAgICAgICAgICAgaWYgKGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGUudXJsO1xuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Ymx1ZUJyaWdodCAke2pvYi5uYW1lfX0gZW52aXJvbm1lbnQ6IFxceyBuYW1lOiB7Ym9sZCAke25hbWV9fWApO1xuICAgICAgICAgICAgaWYgKHVybCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2AsIHVybDoge2JvbGQgJHt1cmx9fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChcIiB9XFxuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHJ1bkxpc3QgKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgbGlzdEFsbDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuICAgICAgICBsZXQgam9icyA9IFsuLi5wYXJzZXIuam9icy52YWx1ZXMoKV07XG4gICAgICAgIGpvYnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCB3aGVuUGFkRW5kID0gNDtcbiAgICAgICAgam9icy5mb3JFYWNoKGogPT4gd2hlblBhZEVuZCA9IE1hdGgubWF4KGoud2hlbi5sZW5ndGgsIHdoZW5QYWRFbmQpKTtcblxuICAgICAgICBsZXQgc3RhZ2VQYWRFbmQgPSA1O1xuICAgICAgICBzdGFnZXMuZm9yRWFjaChzID0+IHN0YWdlUGFkRW5kID0gTWF0aC5tYXgocy5sZW5ndGgsIHN0YWdlUGFkRW5kKSk7XG5cbiAgICAgICAgbGV0IGRlc2NyaXB0aW9uUGFkRW5kID0gMTE7XG4gICAgICAgIGpvYnMuZm9yRWFjaChqID0+IGRlc2NyaXB0aW9uUGFkRW5kID0gTWF0aC5tYXgoai5kZXNjcmlwdGlvbi5sZW5ndGgsIGRlc2NyaXB0aW9uUGFkRW5kKSk7XG5cbiAgICAgICAgY29uc3Qgam9iTmFtZVBhZCA9IHBhcnNlci5qb2JOYW1lUGFkO1xuXG4gICAgICAgIGlmICghbGlzdEFsbCkge1xuICAgICAgICAgICAgam9icyA9IGpvYnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm5ldmVyXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSAke1wibmFtZVwiLnBhZEVuZChqb2JOYW1lUGFkKX0gICR7XCJkZXNjcmlwdGlvblwiLnBhZEVuZChkZXNjcmlwdGlvblBhZEVuZCl9fSAgYCk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2dyZXkgJHtcInN0YWdlXCIucGFkRW5kKHN0YWdlUGFkRW5kKX0gICR7XCJ3aGVuXCIucGFkRW5kKHdoZW5QYWRFbmQpfX0gIGApO1xuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtncmV5IGFsbG93X2ZhaWx1cmUgIG5lZWRzfVxcbmApO1xuXG4gICAgICAgIGNvbnN0IHJlbmRlckxpbmUgPSAoam9iOiBKb2IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gam9iLm5lZWRzPy5maWx0ZXIobiA9PiAhbi5wcm9qZWN0ICYmICFuLnBpcGVsaW5lKS5tYXAobiA9PiBuLmpvYik7XG4gICAgICAgICAgICBjb25zdCBhbGxvd0ZhaWx1cmUgPSBqb2IuYWxsb3dGYWlsdXJlID8gXCJ0cnVlIFwiIDogXCJmYWxzZVwiO1xuICAgICAgICAgICAgbGV0IGpvYkxpbmUgPSBjaGFsa2B7Ymx1ZUJyaWdodCAke2pvYi5uYW1lLnBhZEVuZChqb2JOYW1lUGFkKX19ICAke2pvYi5kZXNjcmlwdGlvbi5wYWRFbmQoZGVzY3JpcHRpb25QYWRFbmQpfSAgYDtcbiAgICAgICAgICAgIGpvYkxpbmUgKz0gY2hhbGtge3llbGxvdyAke2pvYi5zdGFnZS5wYWRFbmQoc3RhZ2VQYWRFbmQpfX0gICR7am9iLndoZW4ucGFkRW5kKHdoZW5QYWRFbmQpfSAgJHthbGxvd0ZhaWx1cmUucGFkRW5kKDExKX1gO1xuICAgICAgICAgICAgaWYgKG5lZWRzKSB7XG4gICAgICAgICAgICAgICAgam9iTGluZSArPSBjaGFsa2AgICAgW3tibHVlQnJpZ2h0ICR7bmVlZHN9fV1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgJHtqb2JMaW5lfVxcbmApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGpvYnMuZm9yRWFjaCgoam9iKSA9PiByZW5kZXJMaW5lKGpvYikpO1xuICAgIH1cblxuICAgIHN0YXRpYyBydW5Kc29uIChwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IFsuLi5wYXJzZXIuam9icy52YWx1ZXMoKV07XG4gICAgICAgIGNvbnN0IGpzb246IGFueVtdID0gW107XG5cbiAgICAgICAgam9icy5mb3JFYWNoKChqb2IpID0+IHtcbiAgICAgICAgICAgIGpzb24ucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogam9iLm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGpvYi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzdGFnZTogam9iLnN0YWdlLFxuICAgICAgICAgICAgICAgIHdoZW46IGpvYi53aGVuLFxuICAgICAgICAgICAgICAgIGFsbG93X2ZhaWx1cmU6IGpvYi5hbGxvd0ZhaWx1cmUsXG4gICAgICAgICAgICAgICAgbmVlZHM6IGpvYi5uZWVkcz8uZmlsdGVyKG4gPT4gIW4ucHJvamVjdCAmJiAhbi5waXBlbGluZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgJHtKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKX1cXG5gKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcnVuQ3N2IChwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMsIGFsbDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuICAgICAgICBsZXQgam9icyA9IFsuLi5wYXJzZXIuam9icy52YWx1ZXMoKV07XG4gICAgICAgIGpvYnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghYWxsKSB7XG4gICAgICAgICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwibmFtZTtkZXNjcmlwdGlvbjtzdGFnZTt3aGVuO2FsbG93RmFpbHVyZTtuZWVkc1xcblwiKTtcbiAgICAgICAgam9icy5mb3JFYWNoKChqb2IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gam9iLm5lZWRzPy5maWx0ZXIobiA9PiAhbi5wcm9qZWN0ICYmICFuLnBpcGVsaW5lKS5tYXAobiA9PiBuLmpvYikuam9pbihcIixcIikgPz8gW107XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke2pvYi5uYW1lfTtcIiR7am9iLmRlc2NyaXB0aW9ufVwiOyR7am9iLnN0YWdlfTske2pvYi53aGVufTske2pvYi5hbGxvd0ZhaWx1cmV9O1ske25lZWRzfV1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG4iXX0=
@@ -32,6 +32,7 @@ const deep_extend_1 = __importDefault(require("deep-extend"));
32
32
  const assert_1 = __importStar(require("assert"));
33
33
  const job_1 = require("./job");
34
34
  const object_traversal_1 = require("object-traversal");
35
+ const utils_1 = require("./utils");
35
36
  const extendsMaxDepth = 11;
36
37
  const extendsRecurse = (gitlabData, jobName, jobData, parents, depth) => {
37
38
  (0, assert_1.default)(depth < extendsMaxDepth, (0, chalk_1.default) `{blueBright ${jobName}}: circular dependency detected in \`extends\``);
@@ -52,7 +53,7 @@ function jobExtends(gitlabData) {
52
53
  for (const [jobName, jobData] of Object.entries(gitlabData)) {
53
54
  if (job_1.Job.illegalJobNames.has(jobName))
54
55
  continue;
55
- if (Object.getPrototypeOf(jobData) !== Object.prototype)
56
+ if (!utils_1.Utils.isObject(jobData))
56
57
  continue;
57
58
  const parentDatas = extendsRecurse(gitlabData, jobName, jobData, [], 0);
58
59
  gitlabData[jobName] = (0, deep_extend_1.default)({}, ...parentDatas, jobData);
@@ -60,7 +61,7 @@ function jobExtends(gitlabData) {
60
61
  for (const [jobName, jobData] of Object.entries(gitlabData)) {
61
62
  if (job_1.Job.illegalJobNames.has(jobName))
62
63
  continue;
63
- if (Object.getPrototypeOf(jobData) !== Object.prototype)
64
+ if (!utils_1.Utils.isObject(jobData))
64
65
  continue;
65
66
  delete jobData.extends;
66
67
  }
@@ -153,8 +154,13 @@ function cacheEach(jobName, gitlabData) {
153
154
  reference(gitlabData, jobData.cache);
154
155
  jobData.cache = jobData.cache.flat(5);
155
156
  for (const [i, c] of Object.entries(jobData.cache)) {
157
+ if (c.key?.files instanceof Array) {
158
+ (0, assert_1.default)(c.key.files.length === 1 || c.key.files.length === 2, `cache:key:files should be an array of one or two file paths. Got ${c.key.files.length}`);
159
+ }
156
160
  jobData.cache[i] = cacheComplex(c);
157
161
  }
162
+ // Remove cache elements with empty paths array (gitlab.com works the same way.)
163
+ jobData.cache = jobData.cache.filter((c) => c.paths?.length !== undefined);
158
164
  }
159
165
  exports.cacheEach = cacheEach;
160
166
  function servicesComplex(data) {
@@ -241,7 +247,7 @@ function defaults(gitlabData) {
241
247
  exports.defaults = defaults;
242
248
  function globalVariables(gitlabData) {
243
249
  for (const [key, value] of Object.entries(gitlabData.variables ?? {})) {
244
- if (typeof value == "object" && !Array.isArray(value)) {
250
+ if (utils_1.Utils.isObject(value)) {
245
251
  gitlabData.variables[key] = value["value"];
246
252
  }
247
253
  }
@@ -255,4 +261,4 @@ function flattenLists(gitlabData) {
255
261
  });
256
262
  }
257
263
  exports.flattenLists = flattenLists;
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsOERBQXFDO0FBQ3JDLGlEQUE4QztBQUM5QywrQkFBMEI7QUFDMUIsdURBQTBDO0FBRTFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWUsRUFBRSxPQUFlLEVBQUUsT0FBWSxFQUFFLE9BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNyRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQSxlQUFlLE9BQU8sZ0RBQWdELENBQUMsQ0FBQztJQUM3RyxLQUFLLEVBQUUsQ0FBQztJQUVSLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDNUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUN0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBQSxnQkFBTSxFQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsSUFBQSxlQUFLLEVBQUEsZUFBZSxVQUFVLHlDQUF5QyxPQUFPLFdBQVcsQ0FBQyxDQUFDO1FBQ3RILGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLFNBQWdCLFVBQVUsQ0FBRSxVQUFlO0lBQ3ZDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLFVBQVUsQ0FBQyxFQUFFO1FBQzlELElBQUksU0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQUUsU0FBUztRQUMvQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssTUFBTSxDQUFDLFNBQVM7WUFBRSxTQUFTO1FBQ2xFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUEscUJBQVUsRUFBQyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDakU7SUFFRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBTSxVQUFVLENBQUMsRUFBRTtRQUM5RCxJQUFJLFNBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUFFLFNBQVM7UUFDL0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1lBQUUsU0FBUztRQUNsRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDMUI7QUFDTCxDQUFDO0FBYkQsZ0NBYUM7QUFFRCxTQUFnQixTQUFTLENBQUUsVUFBZSxFQUFFLFdBQWdCO0lBQ3hELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUMvRCxJQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDdEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0U7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNsQyxTQUFTLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQixNQUFNLElBQUksdUJBQWMsQ0FBQyxFQUFDLE9BQU8sRUFBRSx1Q0FBdUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxFQUFDLENBQUMsQ0FBQztTQUN0RztLQUNKO0FBQ0wsQ0FBQztBQVpELDhCQVlDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQWUsRUFBRSxhQUF1QixFQUFFLEVBQUU7SUFDdkUsSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDO0lBQy9CLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1FBQ3ZDLElBQUEsZ0JBQU0sRUFBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLEVBQUUsZUFBZSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pHLGFBQWEsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLFNBQVMsZ0JBQWdCLENBQUUsSUFBUztJQUNoQyxJQUFJO1FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN4QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLFlBQVksU0FBUyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLHVDQUF1QyxDQUFDLEVBQUU7WUFDekYsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBRSxVQUFlO0lBQzNDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLFVBQVUsQ0FBQyxFQUFFO1FBQzlELElBQUksU0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQUUsU0FBUztRQUMvQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7WUFBRSxTQUFTO1FBQzFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0IsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvQixZQUFZLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDL0c7QUFDTCxDQUFDO0FBVkQsd0NBVUM7QUFFRCxTQUFnQixZQUFZLENBQUUsSUFBUztJQUNuQyxPQUFPO1FBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSTtRQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO1FBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUs7UUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtRQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO0tBQ2hDLENBQUM7QUFDTixDQUFDO0FBUkQsb0NBUUM7QUFFRCxTQUFnQixTQUFTLENBQUUsT0FBZSxFQUFFLFVBQWU7SUFDdkQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztRQUFFLE9BQU87SUFFM0IsU0FBUyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEM7QUFDTCxDQUFDO0FBVEQsOEJBU0M7QUFFRCxTQUFnQixZQUFZLENBQUUsSUFBUztJQUNuQyxPQUFPO1FBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLFdBQVc7UUFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksWUFBWTtLQUNsQyxDQUFDO0FBQ04sQ0FBQztBQVBELG9DQU9DO0FBRUQsU0FBZ0IsU0FBUyxDQUFFLE9BQWUsRUFBRSxVQUFlO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVuQixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0QztBQUNMLENBQUM7QUFYRCw4QkFXQztBQUVELFNBQWdCLGVBQWUsQ0FBRSxJQUFTO0lBQ3RDLE9BQU87UUFDSCxJQUFJLEVBQUUsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1FBQ2pELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtRQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztLQUM1QixDQUFDO0FBQ04sQ0FBQztBQVJELDBDQVFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFFLE9BQWUsRUFBRSxVQUFlO0lBQzFELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTztJQUV0QixPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUN4RCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1QztBQUNMLENBQUM7QUFaRCxvQ0FZQztBQUVELFNBQWdCLFlBQVksQ0FBRSxJQUFTO0lBQ25DLElBQUksSUFBSSxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QixPQUFPO1FBQ0gsSUFBSSxFQUFFLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtRQUNqRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDOUIsQ0FBQztBQUNOLENBQUM7QUFORCxvQ0FNQztBQUVELFNBQWdCLFNBQVMsQ0FBRSxPQUFlLEVBQUUsVUFBZTtJQUN2RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU87SUFFbkIsU0FBUyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsUUFBUSxDQUFFLFVBQWU7SUFDckMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNoRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDakIsSUFBSSxTQUFTLEVBQUU7UUFDWCxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtLQUNKO0lBRUQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUN4RSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDcEIsSUFBSSxXQUFXLEVBQUU7UUFDYixRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsS0FBSyxNQUFNLENBQUMsSUFBSSxXQUFXLEVBQUU7WUFDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQztLQUNKO0lBRUQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQ3hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDbkYsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxZQUFZLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQztJQUVoRixLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBTSxVQUFVLENBQUMsRUFBRTtRQUM5RCxJQUFJLFNBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUFFLFNBQVM7UUFDL0MsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRO1lBQUUsU0FBUztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTO1lBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLFFBQVE7WUFBRSxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksV0FBVztZQUFFLE9BQU8sQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLFlBQVk7WUFBRSxPQUFPLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztLQUNwRjtBQUNMLENBQUM7QUFsQ0QsNEJBa0NDO0FBRUQsU0FBZ0IsZUFBZSxDQUFFLFVBQWU7SUFDNUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQU0sVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUN4RSxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDOUM7S0FDSjtBQUNMLENBQUM7QUFORCwwQ0FNQztBQUVELFNBQWdCLFlBQVksQ0FBRSxVQUFlO0lBQ3pDLElBQUEsMkJBQVEsRUFBQyxVQUFVLEVBQUUsQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLFFBQVE7WUFBRSxPQUFPO1FBQzlFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUxELG9DQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IGRlZXBFeHRlbmQgZnJvbSBcImRlZXAtZXh0ZW5kXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7dHJhdmVyc2V9IGZyb20gXCJvYmplY3QtdHJhdmVyc2FsXCI7XG5cbmNvbnN0IGV4dGVuZHNNYXhEZXB0aCA9IDExO1xuY29uc3QgZXh0ZW5kc1JlY3Vyc2UgPSAoZ2l0bGFiRGF0YTogYW55LCBqb2JOYW1lOiBzdHJpbmcsIGpvYkRhdGE6IGFueSwgcGFyZW50czogYW55W10sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICBhc3NlcnQoZGVwdGggPCBleHRlbmRzTWF4RGVwdGgsIGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iTmFtZX19OiBjaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGluIFxcYGV4dGVuZHNcXGBgKTtcbiAgICBkZXB0aCsrO1xuXG4gICAgam9iRGF0YS5leHRlbmRzID0gdHlwZW9mIGpvYkRhdGEuZXh0ZW5kcyA9PT0gXCJzdHJpbmdcIiA/IFtqb2JEYXRhLmV4dGVuZHNdIDogam9iRGF0YS5leHRlbmRzO1xuICAgIGpvYkRhdGEuZXh0ZW5kcyA9IGpvYkRhdGEuZXh0ZW5kcyA/PyBbXTtcbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YS5leHRlbmRzKTtcbiAgICBqb2JEYXRhLmV4dGVuZHMgPSBqb2JEYXRhLmV4dGVuZHMuZmxhdCg1KTtcblxuICAgIGZvciAoY29uc3QgcGFyZW50TmFtZSBvZiBqb2JEYXRhLmV4dGVuZHMpIHtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YSA9IGdpdGxhYkRhdGFbcGFyZW50TmFtZV07XG4gICAgICAgIGFzc2VydChwYXJlbnREYXRhICE9IG51bGwsIGNoYWxrYHtibHVlQnJpZ2h0ICR7cGFyZW50TmFtZX19IGlzIHVuc3BlY2lmaWVkLCB1c2VkIGJ5IHtibHVlQnJpZ2h0ICR7am9iTmFtZX19IGV4dGVuZHNgKTtcbiAgICAgICAgZXh0ZW5kc1JlY3Vyc2UoZ2l0bGFiRGF0YSwgcGFyZW50TmFtZSwgcGFyZW50RGF0YSwgcGFyZW50cywgZGVwdGgpO1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50RGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGpvYkV4dGVuZHMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihqb2JEYXRhKSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHBhcmVudERhdGFzID0gZXh0ZW5kc1JlY3Vyc2UoZ2l0bGFiRGF0YSwgam9iTmFtZSwgam9iRGF0YSwgW10sIDApO1xuICAgICAgICBnaXRsYWJEYXRhW2pvYk5hbWVdID0gZGVlcEV4dGVuZCh7fSwgLi4ucGFyZW50RGF0YXMsIGpvYkRhdGEpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihqb2JEYXRhKSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgY29udGludWU7XG4gICAgICAgIGRlbGV0ZSBqb2JEYXRhLmV4dGVuZHM7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlIChnaXRsYWJEYXRhOiBhbnksIHJlY3Vyc2VEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KHJlY3Vyc2VEYXRhIHx8IHt9KSkge1xuICAgICAgICBpZiAodmFsdWU/LnJlZmVyZW5jZURhdGEpIHtcbiAgICAgICAgICAgIHJlY3Vyc2VEYXRhW2tleV0gPSBnZXRTdWJEYXRhQnlSZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUucmVmZXJlbmNlRGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0NpcmN1bGFyQ2hhaW4ocmVjdXJzZURhdGEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGAhcmVmZXJlbmNlIGNpcmN1bGFyIGNoYWluIGRldGVjdGVkIFske3ZhbHVlLnJlZmVyZW5jZURhdGF9XWB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlID0gKGdpdGxhYkRhdGE6IGFueSwgcmVmZXJlbmNlRGF0YTogc3RyaW5nW10pID0+IHtcbiAgICBsZXQgZ2l0bGFiU3ViRGF0YSA9IGdpdGxhYkRhdGE7XG4gICAgcmVmZXJlbmNlRGF0YS5mb3JFYWNoKChyZWZlcmVuY2VQb2ludGVyKSA9PiB7XG4gICAgICAgIGFzc2VydChnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdICE9IG51bGwsIGAhcmVmZXJlbmNlIFske3JlZmVyZW5jZURhdGEuam9pbihcIiwgXCIpfV0gaXMgdW5kZWZpbmVkYCk7XG4gICAgICAgIGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdO1xuICAgIH0pO1xuICAgIHJldHVybiBnaXRsYWJTdWJEYXRhO1xufTtcblxuZnVuY3Rpb24gaGFzQ2lyY3VsYXJDaGFpbiAoZGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlLm1lc3NhZ2Uuc3RhcnRzV2l0aChcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXhPYmplY3RzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICh0eXBlb2Ygam9iRGF0YSA9PT0gXCJzdHJpbmdcIikgY29udGludWU7XG4gICAgICAgIG5lZWRzRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgY2FjaGVFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBzZXJ2aWNlc0VhY2goam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIGltYWdlRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgaWYgKGpvYkRhdGEuc2NyaXB0KSBqb2JEYXRhLnNjcmlwdCA9IHR5cGVvZiBqb2JEYXRhLnNjcmlwdCA9PT0gXCJzdHJpbmdcIiA/IFtqb2JEYXRhLnNjcmlwdF0gOiBqb2JEYXRhLnNjcmlwdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0NvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGpvYjogZGF0YS5qb2IgPz8gZGF0YSxcbiAgICAgICAgYXJ0aWZhY3RzOiBkYXRhLmFydGlmYWN0cyA/PyB0cnVlLFxuICAgICAgICBvcHRpb25hbDogZGF0YS5vcHRpb25hbCA/PyBmYWxzZSxcbiAgICAgICAgcGlwZWxpbmU6IGRhdGEucGlwZWxpbmUgPz8gbnVsbCxcbiAgICAgICAgcHJvamVjdDogZGF0YS5wcm9qZWN0ID8/IG51bGwsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBpZiAoIWpvYkRhdGEubmVlZHMpIHJldHVybjtcblxuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLm5lZWRzKTtcbiAgICBqb2JEYXRhLm5lZWRzID0gam9iRGF0YS5uZWVkcy5mbGF0KDUpO1xuICAgIGZvciAoY29uc3QgW2ksIG5dIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5uZWVkcykpIHtcbiAgICAgICAgam9iRGF0YS5uZWVkc1tpXSA9IG5lZWRzQ29tcGxleChuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUNvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZGF0YS5rZXksXG4gICAgICAgIHBhdGhzOiBkYXRhLnBhdGhzLFxuICAgICAgICBwb2xpY3k6IGRhdGEucG9saWN5ID8/IFwicHVsbC1wdXNoXCIsXG4gICAgICAgIHdoZW46IGRhdGEud2hlbiA/PyBcIm9uX3N1Y2Nlc3NcIixcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IGNhY2hlID0gam9iRGF0YS5jYWNoZTtcbiAgICBpZiAoIWNhY2hlKSByZXR1cm47XG5cbiAgICBqb2JEYXRhLmNhY2hlID0gQXJyYXkuaXNBcnJheShjYWNoZSkgPyBjYWNoZSA6IFtjYWNoZV07XG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEuY2FjaGUpO1xuICAgIGpvYkRhdGEuY2FjaGUgPSBqb2JEYXRhLmNhY2hlLmZsYXQoNSk7XG4gICAgZm9yIChjb25zdCBbaSwgY10gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLmNhY2hlKSkge1xuICAgICAgICBqb2JEYXRhLmNhY2hlW2ldID0gY2FjaGVDb21wbGV4KGMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VzQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgICAgIGNvbW1hbmQ6IGRhdGEuY29tbWFuZCxcbiAgICAgICAgYWxpYXM6IGRhdGEuYWxpYXMsXG4gICAgICAgIHZhcmlhYmxlczogZGF0YS52YXJpYWJsZXMsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VzRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGpvYkRhdGEuc2VydmljZXM7XG4gICAgaWYgKCFzZXJ2aWNlcykgcmV0dXJuO1xuXG4gICAgam9iRGF0YS5zZXJ2aWNlcyA9IEFycmF5LmlzQXJyYXkoc2VydmljZXMpID8gc2VydmljZXMgOiBbc2VydmljZXNdO1xuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLnNlcnZpY2VzKTtcbiAgICBqb2JEYXRhLnNlcnZpY2VzID0gam9iRGF0YS5zZXJ2aWNlcy5mbGF0KDUpO1xuXG4gICAgZm9yIChjb25zdCBbaSwgc10gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLnNlcnZpY2VzKSkge1xuICAgICAgICBqb2JEYXRhLnNlcnZpY2VzW2ldID0gc2VydmljZXNDb21wbGV4KHMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlRWFjaCAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBpbWFnZSA9IGpvYkRhdGEuaW1hZ2U7XG4gICAgaWYgKCFpbWFnZSkgcmV0dXJuO1xuXG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEpO1xuICAgIGpvYkRhdGEuaW1hZ2UgPSBpbWFnZUNvbXBsZXgoam9iRGF0YS5pbWFnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0cyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5jYWNoZSA/PyBnaXRsYWJEYXRhLmNhY2hlO1xuICAgIGxldCBjYWNoZSA9IG51bGw7XG4gICAgaWYgKGNhY2hlRGF0YSkge1xuICAgICAgICBjYWNoZSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuaXNBcnJheShjYWNoZURhdGEpID8gY2FjaGVEYXRhIDogW2NhY2hlRGF0YV0pIHtcbiAgICAgICAgICAgIGNhY2hlLnB1c2goY2FjaGVDb21wbGV4KGMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNlcnZpY2VEYXRhID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5zZXJ2aWNlcyA/PyBnaXRsYWJEYXRhLnNlcnZpY2VzO1xuICAgIGxldCBzZXJ2aWNlcyA9IG51bGw7XG4gICAgaWYgKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIHNlcnZpY2VzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiBzZXJ2aWNlRGF0YSkge1xuICAgICAgICAgICAgc2VydmljZXMucHVzaChzZXJ2aWNlc0NvbXBsZXgocykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBpbWFnZUNvbXBsZXgoZ2l0bGFiRGF0YS5kZWZhdWx0Py5pbWFnZSA/PyBnaXRsYWJEYXRhLmltYWdlKTtcbiAgICBjb25zdCBhcnRpZmFjdHMgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmFydGlmYWN0cyA/PyBnaXRsYWJEYXRhLmFydGlmYWN0cztcbiAgICBjb25zdCBiZWZvcmVTY3JpcHQgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmJlZm9yZV9zY3JpcHQgPz8gZ2l0bGFiRGF0YS5iZWZvcmVfc2NyaXB0O1xuICAgIGNvbnN0IGFmdGVyU2NyaXB0ID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5hZnRlcl9zY3JpcHQgPz8gZ2l0bGFiRGF0YS5hZnRlcl9zY3JpcHQ7XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICh0eXBlb2Ygam9iRGF0YSA9PT0gXCJzdHJpbmdcIikgY29udGludWU7XG4gICAgICAgIGlmICgham9iRGF0YS5hcnRpZmFjdHMgJiYgYXJ0aWZhY3RzKSBqb2JEYXRhLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICAgICAgaWYgKCFqb2JEYXRhLmNhY2hlICYmIGNhY2hlKSBqb2JEYXRhLmNhY2hlID0gY2FjaGU7XG4gICAgICAgIGlmICgham9iRGF0YS5zZXJ2aWNlcyAmJiBzZXJ2aWNlcykgam9iRGF0YS5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgICAgICBpZiAoIWpvYkRhdGEuaW1hZ2UgJiYgaW1hZ2UpIGpvYkRhdGEuaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmFmdGVyX3NjcmlwdCAmJiBhZnRlclNjcmlwdCkgam9iRGF0YS5hZnRlcl9zY3JpcHQgPSBhZnRlclNjcmlwdDtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmJlZm9yZV9zY3JpcHQgJiYgYmVmb3JlU2NyaXB0KSBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgPSBiZWZvcmVTY3JpcHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsVmFyaWFibGVzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEudmFyaWFibGVzID8/IHt9KSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBnaXRsYWJEYXRhLnZhcmlhYmxlc1trZXldID0gdmFsdWVbXCJ2YWx1ZVwiXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5MaXN0cyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgdHJhdmVyc2UoZ2l0bGFiRGF0YSwgKHtwYXJlbnQsIGtleSwgdmFsdWV9KSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgcGFyZW50ID09IG51bGwgfHwgdHlwZW9mIGtleSAhPSBcInN0cmluZ1wiKSByZXR1cm47XG4gICAgICAgIHBhcmVudFtrZXldID0gdmFsdWUuZmxhdCg1KTtcbiAgICB9KTtcbn1cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsOERBQXFDO0FBQ3JDLGlEQUE4QztBQUM5QywrQkFBMEI7QUFDMUIsdURBQTBDO0FBQzFDLG1DQUE4QjtBQUU5QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFlLEVBQUUsT0FBZSxFQUFFLE9BQVksRUFBRSxPQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDckcsSUFBQSxnQkFBTSxFQUFDLEtBQUssR0FBRyxlQUFlLEVBQUUsSUFBQSxlQUFLLEVBQUEsZUFBZSxPQUFPLGdEQUFnRCxDQUFDLENBQUM7SUFDN0csS0FBSyxFQUFFLENBQUM7SUFFUixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDeEMsU0FBUyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBQSxnQkFBTSxFQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsSUFBQSxlQUFLLEVBQUEsZUFBZSxV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bmltcG9ydCBkZWVwRXh0ZW5kIGZyb20gXCJkZWVwLWV4dGVuZFwiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQge3RyYXZlcnNlfSBmcm9tIFwib2JqZWN0LXRyYXZlcnNhbFwiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgZXh0ZW5kc01heERlcHRoID0gMTE7XG5jb25zdCBleHRlbmRzUmVjdXJzZSA9IChnaXRsYWJEYXRhOiBhbnksIGpvYk5hbWU6IHN0cmluZywgam9iRGF0YTogYW55LCBwYXJlbnRzOiBhbnlbXSwgZGVwdGg6IG51bWJlcikgPT4ge1xuICAgIGFzc2VydChkZXB0aCA8IGV4dGVuZHNNYXhEZXB0aCwgY2hhbGtge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX06IGNpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgaW4gXFxgZXh0ZW5kc1xcYGApO1xuICAgIGRlcHRoKys7XG5cbiAgICBqb2JEYXRhLmV4dGVuZHMgPSB0eXBlb2Ygam9iRGF0YS5leHRlbmRzID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuZXh0ZW5kc10gOiBqb2JEYXRhLmV4dGVuZHM7XG4gICAgam9iRGF0YS5leHRlbmRzID0gam9iRGF0YS5leHRlbmRzID8/IFtdO1xuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLmV4dGVuZHMpO1xuICAgIGpvYkRhdGEuZXh0ZW5kcyA9IGpvYkRhdGEuZXh0ZW5kcy5mbGF0KDUpO1xuXG4gICAgZm9yIChjb25zdCBwYXJlbnROYW1lIG9mIGpvYkRhdGEuZXh0ZW5kcykge1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gZ2l0bGFiRGF0YVtwYXJlbnROYW1lXTtcbiAgICAgICAgYXNzZXJ0KHBhcmVudERhdGEgIT0gbnVsbCwgY2hhbGtge2JsdWVCcmlnaHQgJHtwYXJlbnROYW1lfX0gaXMgdW5zcGVjaWZpZWQsIHVzZWQgYnkge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX0gZXh0ZW5kc2ApO1xuICAgICAgICBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBwYXJlbnROYW1lLCBwYXJlbnREYXRhLCBwYXJlbnRzLCBkZXB0aCk7XG4gICAgICAgIHBhcmVudHMucHVzaChwYXJlbnREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gam9iRXh0ZW5kcyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzT2JqZWN0KGpvYkRhdGEpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcGFyZW50RGF0YXMgPSBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBqb2JOYW1lLCBqb2JEYXRhLCBbXSwgMCk7XG4gICAgICAgIGdpdGxhYkRhdGFbam9iTmFtZV0gPSBkZWVwRXh0ZW5kKHt9LCAuLi5wYXJlbnREYXRhcywgam9iRGF0YSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzT2JqZWN0KGpvYkRhdGEpKSBjb250aW51ZTtcbiAgICAgICAgZGVsZXRlIGpvYkRhdGEuZXh0ZW5kcztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2UgKGdpdGxhYkRhdGE6IGFueSwgcmVjdXJzZURhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4ocmVjdXJzZURhdGEgfHwge30pKSB7XG4gICAgICAgIGlmICh2YWx1ZT8ucmVmZXJlbmNlRGF0YSkge1xuICAgICAgICAgICAgcmVjdXJzZURhdGFba2V5XSA9IGdldFN1YkRhdGFCeVJlZmVyZW5jZShnaXRsYWJEYXRhLCB2YWx1ZS5yZWZlcmVuY2VEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQ2lyY3VsYXJDaGFpbihyZWN1cnNlRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogYCFyZWZlcmVuY2UgY2lyY3VsYXIgY2hhaW4gZGV0ZWN0ZWQgWyR7dmFsdWUucmVmZXJlbmNlRGF0YX1dYH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBnZXRTdWJEYXRhQnlSZWZlcmVuY2UgPSAoZ2l0bGFiRGF0YTogYW55LCByZWZlcmVuY2VEYXRhOiBzdHJpbmdbXSkgPT4ge1xuICAgIGxldCBnaXRsYWJTdWJEYXRhID0gZ2l0bGFiRGF0YTtcbiAgICByZWZlcmVuY2VEYXRhLmZvckVhY2goKHJlZmVyZW5jZVBvaW50ZXIpID0+IHtcbiAgICAgICAgYXNzZXJ0KGdpdGxhYlN1YkRhdGFbcmVmZXJlbmNlUG9pbnRlcl0gIT0gbnVsbCwgYCFyZWZlcmVuY2UgWyR7cmVmZXJlbmNlRGF0YS5qb2luKFwiLCBcIil9XSBpcyB1bmRlZmluZWRgKTtcbiAgICAgICAgZ2l0bGFiU3ViRGF0YSA9IGdpdGxhYlN1YkRhdGFbcmVmZXJlbmNlUG9pbnRlcl07XG4gICAgfSk7XG4gICAgcmV0dXJuIGdpdGxhYlN1YkRhdGE7XG59O1xuXG5mdW5jdGlvbiBoYXNDaXJjdWxhckNoYWluIChkYXRhOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgICBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIGUubWVzc2FnZS5zdGFydHNXaXRoKFwiQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTlwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxleE9iamVjdHMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBqb2JEYXRhID09PSBcInN0cmluZ1wiKSBjb250aW51ZTtcbiAgICAgICAgbmVlZHNFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBjYWNoZUVhY2goam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIHNlcnZpY2VzRWFjaChqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgaW1hZ2VFYWNoKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBpZiAoam9iRGF0YS5zY3JpcHQpIGpvYkRhdGEuc2NyaXB0ID0gdHlwZW9mIGpvYkRhdGEuc2NyaXB0ID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuc2NyaXB0XSA6IGpvYkRhdGEuc2NyaXB0O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgam9iOiBkYXRhLmpvYiA/PyBkYXRhLFxuICAgICAgICBhcnRpZmFjdHM6IGRhdGEuYXJ0aWZhY3RzID8/IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiBkYXRhLm9wdGlvbmFsID8/IGZhbHNlLFxuICAgICAgICBwaXBlbGluZTogZGF0YS5waXBlbGluZSA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0OiBkYXRhLnByb2plY3QgPz8gbnVsbCxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGlmICgham9iRGF0YS5uZWVkcykgcmV0dXJuO1xuXG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEubmVlZHMpO1xuICAgIGpvYkRhdGEubmVlZHMgPSBqb2JEYXRhLm5lZWRzLmZsYXQoNSk7XG4gICAgZm9yIChjb25zdCBbaSwgbl0gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLm5lZWRzKSkge1xuICAgICAgICBqb2JEYXRhLm5lZWRzW2ldID0gbmVlZHNDb21wbGV4KG4pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgICAgcGF0aHM6IGRhdGEucGF0aHMsXG4gICAgICAgIHBvbGljeTogZGF0YS5wb2xpY3kgPz8gXCJwdWxsLXB1c2hcIixcbiAgICAgICAgd2hlbjogZGF0YS53aGVuID8/IFwib25fc3VjY2Vzc1wiLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUVhY2ggKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgY29uc3QgY2FjaGUgPSBqb2JEYXRhLmNhY2hlO1xuICAgIGlmICghY2FjaGUpIHJldHVybjtcblxuICAgIGpvYkRhdGEuY2FjaGUgPSBBcnJheS5pc0FycmF5KGNhY2hlKSA/IGNhY2hlIDogW2NhY2hlXTtcbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YS5jYWNoZSk7XG4gICAgam9iRGF0YS5jYWNoZSA9IGpvYkRhdGEuY2FjaGUuZmxhdCg1KTtcbiAgICBmb3IgKGNvbnN0IFtpLCBjXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGpvYkRhdGEuY2FjaGUpKSB7XG4gICAgICAgIGlmIChjLmtleT8uZmlsZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgYXNzZXJ0KGMua2V5LmZpbGVzLmxlbmd0aCA9PT0gMSB8fCBjLmtleS5maWxlcy5sZW5ndGggPT09IDIsIGBjYWNoZTprZXk6ZmlsZXMgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG9uZSBvciB0d28gZmlsZSBwYXRocy4gR290ICR7Yy5rZXkuZmlsZXMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGpvYkRhdGEuY2FjaGVbaV0gPSBjYWNoZUNvbXBsZXgoYyk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGNhY2hlIGVsZW1lbnRzIHdpdGggZW1wdHkgcGF0aHMgYXJyYXkgKGdpdGxhYi5jb20gd29ya3MgdGhlIHNhbWUgd2F5LilcbiAgICBqb2JEYXRhLmNhY2hlID0gam9iRGF0YS5jYWNoZS5maWx0ZXIoKGM6IGFueSkgPT4gYy5wYXRocz8ubGVuZ3RoICE9PSB1bmRlZmluZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZXNDb21wbGV4IChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiA/IGRhdGEgOiBkYXRhLm5hbWUsXG4gICAgICAgIGVudHJ5cG9pbnQ6IGRhdGEuZW50cnlwb2ludCxcbiAgICAgICAgY29tbWFuZDogZGF0YS5jb21tYW5kLFxuICAgICAgICBhbGlhczogZGF0YS5hbGlhcyxcbiAgICAgICAgdmFyaWFibGVzOiBkYXRhLnZhcmlhYmxlcyxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZXNFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IHNlcnZpY2VzID0gam9iRGF0YS5zZXJ2aWNlcztcbiAgICBpZiAoIXNlcnZpY2VzKSByZXR1cm47XG5cbiAgICBqb2JEYXRhLnNlcnZpY2VzID0gQXJyYXkuaXNBcnJheShzZXJ2aWNlcykgPyBzZXJ2aWNlcyA6IFtzZXJ2aWNlc107XG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEuc2VydmljZXMpO1xuICAgIGpvYkRhdGEuc2VydmljZXMgPSBqb2JEYXRhLnNlcnZpY2VzLmZsYXQoNSk7XG5cbiAgICBmb3IgKGNvbnN0IFtpLCBzXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGpvYkRhdGEuc2VydmljZXMpKSB7XG4gICAgICAgIGpvYkRhdGEuc2VydmljZXNbaV0gPSBzZXJ2aWNlc0NvbXBsZXgocyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VDb21wbGV4IChkYXRhOiBhbnkpIHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm4gZGF0YTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiA/IGRhdGEgOiBkYXRhLm5hbWUsXG4gICAgICAgIGVudHJ5cG9pbnQ6IGRhdGEuZW50cnlwb2ludCxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VFYWNoIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IGltYWdlID0gam9iRGF0YS5pbWFnZTtcbiAgICBpZiAoIWltYWdlKSByZXR1cm47XG5cbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YSk7XG4gICAgam9iRGF0YS5pbWFnZSA9IGltYWdlQ29tcGxleChqb2JEYXRhLmltYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmNhY2hlID8/IGdpdGxhYkRhdGEuY2FjaGU7XG4gICAgbGV0IGNhY2hlID0gbnVsbDtcbiAgICBpZiAoY2FjaGVEYXRhKSB7XG4gICAgICAgIGNhY2hlID0gW107XG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5pc0FycmF5KGNhY2hlRGF0YSkgPyBjYWNoZURhdGEgOiBbY2FjaGVEYXRhXSkge1xuICAgICAgICAgICAgY2FjaGUucHVzaChjYWNoZUNvbXBsZXgoYykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VydmljZURhdGEgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LnNlcnZpY2VzID8/IGdpdGxhYkRhdGEuc2VydmljZXM7XG4gICAgbGV0IHNlcnZpY2VzID0gbnVsbDtcbiAgICBpZiAoc2VydmljZURhdGEpIHtcbiAgICAgICAgc2VydmljZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHNlcnZpY2VEYXRhKSB7XG4gICAgICAgICAgICBzZXJ2aWNlcy5wdXNoKHNlcnZpY2VzQ29tcGxleChzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZSA9IGltYWdlQ29tcGxleChnaXRsYWJEYXRhLmRlZmF1bHQ/LmltYWdlID8/IGdpdGxhYkRhdGEuaW1hZ2UpO1xuICAgIGNvbnN0IGFydGlmYWN0cyA9IGdpdGxhYkRhdGEuZGVmYXVsdD8uYXJ0aWZhY3RzID8/IGdpdGxhYkRhdGEuYXJ0aWZhY3RzO1xuICAgIGNvbnN0IGJlZm9yZVNjcmlwdCA9IGdpdGxhYkRhdGEuZGVmYXVsdD8uYmVmb3JlX3NjcmlwdCA/PyBnaXRsYWJEYXRhLmJlZm9yZV9zY3JpcHQ7XG4gICAgY29uc3QgYWZ0ZXJTY3JpcHQgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmFmdGVyX3NjcmlwdCA/PyBnaXRsYWJEYXRhLmFmdGVyX3NjcmlwdDtcblxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBqb2JEYXRhID09PSBcInN0cmluZ1wiKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmFydGlmYWN0cyAmJiBhcnRpZmFjdHMpIGpvYkRhdGEuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgICAgICBpZiAoIWpvYkRhdGEuY2FjaGUgJiYgY2FjaGUpIGpvYkRhdGEuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLnNlcnZpY2VzICYmIHNlcnZpY2VzKSBqb2JEYXRhLnNlcnZpY2VzID0gc2VydmljZXM7XG4gICAgICAgIGlmICgham9iRGF0YS5pbWFnZSAmJiBpbWFnZSkgam9iRGF0YS5pbWFnZSA9IGltYWdlO1xuICAgICAgICBpZiAoIWpvYkRhdGEuYWZ0ZXJfc2NyaXB0ICYmIGFmdGVyU2NyaXB0KSBqb2JEYXRhLmFmdGVyX3NjcmlwdCA9IGFmdGVyU2NyaXB0O1xuICAgICAgICBpZiAoIWpvYkRhdGEuYmVmb3JlX3NjcmlwdCAmJiBiZWZvcmVTY3JpcHQpIGpvYkRhdGEuYmVmb3JlX3NjcmlwdCA9IGJlZm9yZVNjcmlwdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxWYXJpYWJsZXMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YS52YXJpYWJsZXMgPz8ge30pKSB7XG4gICAgICAgIGlmIChVdGlscy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGdpdGxhYkRhdGEudmFyaWFibGVzW2tleV0gPSB2YWx1ZVtcInZhbHVlXCJdO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkxpc3RzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICB0cmF2ZXJzZShnaXRsYWJEYXRhLCAoe3BhcmVudCwga2V5LCB2YWx1ZX0pID0+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBwYXJlbnQgPT0gbnVsbCB8fCB0eXBlb2Yga2V5ICE9IFwic3RyaW5nXCIpIHJldHVybjtcbiAgICAgICAgcGFyZW50W2tleV0gPSB2YWx1ZS5mbGF0KDUpO1xuICAgIH0pO1xufVxuIl19
package/src/executor.js CHANGED
@@ -130,4 +130,4 @@ class Executor {
130
130
  }
131
131
  }
132
132
  exports.Executor = Executor;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixpREFBOEM7QUFFOUMsa0RBQXlCO0FBRXpCLE1BQWEsUUFBUTtJQUVqQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBRSxJQUFVLEVBQUUsSUFBd0IsRUFBRSxNQUF5QixFQUFFLGlCQUF3QjtRQUMzRyxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsR0FBRztZQUNDLGVBQWUsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUYsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDNUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLGNBQW1CLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxJQUFBLGVBQUksRUFBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7YUFDbEc7U0FDSixRQUFRLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUUsSUFBd0IsRUFBRSxNQUF5QixFQUFFLGlCQUFpQyxFQUFFLE9BQWlCO1FBQ2hJLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUzQixLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBTSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUU7WUFDcEQsSUFBSSxHQUFHLENBQUMsT0FBTztnQkFBRSxTQUFTO1lBRTFCLE1BQU0s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QUNKO0FBN0dELDRCQTZHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCBhc3NlcnQsIHtBc3NlcnRpb25FcnJvcn0gZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQgcE1hcCBmcm9tIFwicC1tYXBcIjtcblxuZXhwb3J0IGNsYXNzIEV4ZWN1dG9yIHtcblxuICAgIHN0YXRpYyBhc3luYyBydW5Mb29wIChhcmd2OiBBcmd2LCBqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIHBvdGVudGlhbFN0YXJ0ZXJzOiBKb2JbXSkge1xuICAgICAgICBsZXQgc3RhcnRDYW5kaWRhdGVzID0gW107XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgc3RhcnRDYW5kaWRhdGVzID0gRXhlY3V0b3IuZ2V0U3RhcnRDYW5kaWRhdGVzKGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMsIGFyZ3YubWFudWFsKTtcbiAgICAgICAgICAgIGlmIChzdGFydENhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlciA9IGFzeW5jIChzdGFydENhbmRpZGF0ZTogSm9iKSA9PiBzdGFydENhbmRpZGF0ZS5zdGFydCgpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHBNYXAoc3RhcnRDYW5kaWRhdGVzLCBtYXBwZXIsIHtjb25jdXJyZW5jeTogYXJndi5jb25jdXJyZW5jeSA/PyBzdGFydENhbmRpZGF0ZXMubGVuZ3RofSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGggPiAwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U3RhcnRDYW5kaWRhdGVzIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIHBvdGVudGlhbFN0YXJ0ZXJzOiByZWFkb25seSBKb2JbXSwgbWFudWFsczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qgc3RhcnRDYW5kaWRhdGVzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBqb2Igb2YgWy4uLm5ldyBTZXQ8Sm9iPihwb3RlbnRpYWxTdGFydGVycyldKSB7XG4gICAgICAgICAgICBpZiAoam9iLnN0YXJ0ZWQpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBqb2JzVG9XYWl0Rm9yID0gRXhlY3V0b3IuZ2V0UGFzdFRvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGpvYiwgbWFudWFscyk7XG4gICAgICAgICAgICBpZiAoRXhlY3V0b3IuaXNOb3RGaW5pc2hlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm9uX3N1Y2Nlc3NcIiAmJiBFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJtYW51YWxcIiAmJiBFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJvbl9mYWlsdXJlXCIgJiYgIUV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGFydENhbmRpZGF0ZXMucHVzaChqb2IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydENhbmRpZGF0ZXM7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzUGFzdEZhaWxlZCAoam9ic1RvV2FpdEZvcjogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIGNvbnN0IGZhaWxKb2JzID0gam9ic1RvV2FpdEZvci5maWx0ZXIoaiA9PiB7XG4gICAgICAgICAgICBpZiAoai5hbGxvd0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKGoucHJlU2NyaXB0c0V4aXRDb2RlID8gai5wcmVTY3JpcHRzRXhpdENvZGUgOiAwKSA+IDA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFpbEpvYnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNOb3RGaW5pc2hlZCAoam9ic1RvV2FpdEZvcjogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIGNvbnN0IG5vdEZpbmlzaGVkSm9icyA9IGpvYnNUb1dhaXRGb3IuZmlsdGVyKGogPT4gIWouZmluaXNoZWQpO1xuICAgICAgICByZXR1cm4gbm90RmluaXNoZWRKb2JzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEZhaWxlZCAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIHJldHVybiBqb2JzLmZpbHRlcihqID0+IGouZmluaXNoZWQgJiYgIWouYWxsb3dGYWlsdXJlICYmIChqLnByZVNjcmlwdHNFeGl0Q29kZSA/PyAwKSA+IDApO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQYXN0VG9XYWl0Rm9yIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIGpvYjogSm9iLCBtYW51YWxzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBqb2JzVG9XYWl0Rm9yU2V0ID0gbmV3IFNldDxKb2I+KCk7XG4gICAgICAgIGxldCB3YWl0Rm9yTG9vcEFycmF5OiBKb2JbXSA9IFtqb2JdO1xuXG4gICAgICAgIHdoaWxlICh3YWl0Rm9yTG9vcEFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxvb3BKb2IgPSB3YWl0Rm9yTG9vcEFycmF5LnBvcCgpO1xuICAgICAgICAgICAgYXNzZXJ0KGxvb3BKb2IgIT0gbnVsbCwgXCJKb2Igbm90IGZvdW5kIGluIGdldFBhc3RUb1dhaXRGb3IsIHNob3VsZCBiZSBpbXBvc3NpYmxlIVwiKTtcbiAgICAgICAgICAgIGlmIChsb29wSm9iLm5lZWRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVlZGVkVG9XYWl0Rm9yID0gdGhpcy5nZXROZWVkZWRUb1dhaXRGb3Ioam9icywgbWFudWFscywgbG9vcEpvYik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheS5wdXNoKC4uLm5lZWRlZFRvV2FpdEZvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVG9XYWl0Rm9yID0gdGhpcy5nZXRQcmV2aW91c1RvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGxvb3BKb2IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmNvbmNhdChwcmV2aW91c1RvV2FpdEZvcik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm5ldmVyXCIpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJtYW51YWxcIiB8fCBtYW51YWxzLmluY2x1ZGVzKGoubmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheS5mb3JFYWNoKGogPT4gam9ic1RvV2FpdEZvclNldC5hZGQoaikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uam9ic1RvV2FpdEZvclNldF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE5lZWRlZFRvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBtYW51YWxzOiBzdHJpbmdbXSwgam9iOiBKb2IpIHtcbiAgICAgICAgY29uc3QgdG9XYWl0Rm9yID0gW107XG4gICAgICAgIGFzc2VydChqb2IubmVlZHMgIT0gbnVsbCwgY2hhbGtgJHtqb2IubmFtZX0ubmVlZHMgY2Fubm90IGJlIG51bGwgaW4gZ2V0TmVlZGVkVG9XYWl0Rm9yYCk7XG4gICAgICAgIGZvciAoY29uc3QgbmVlZCBvZiBqb2IubmVlZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VKb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLmJhc2VOYW1lID09PSBuZWVkLmpvYik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGogb2YgYmFzZUpvYnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm5ldmVyXCIgJiYgIW5lZWQub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBjaGFsa2B7Ymx1ZUJyaWdodCAke2oubmFtZX19IGlzIHdoZW46bmV2ZXIsIGJ1dCBpdHMgbmVlZGVkIGJ5IHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fWB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJuZXZlclwiICYmIG5lZWQub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibWFudWFsXCIgJiYgIW1hbnVhbHMuaW5jbHVkZXMoai5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7ai5uYW1lfX0gaXMgd2hlbjptYW51YWwsIGl0cyBuZWVkZWQgYnkge2JsdWVCcmlnaHQgJHtqb2IubmFtZX19LCBhbmQgbm90IHNwZWNpZmllZCBpbiAtLW1hbnVhbGB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9XYWl0Rm9yLnB1c2goaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvV2FpdEZvcjtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0UHJldmlvdXNUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgam9iOiBKb2IpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNUb1dhaXRGb3I6IEpvYltdID0gW107XG4gICAgICAgIGNvbnN0IHN0YWdlSW5kZXggPSBzdGFnZXMuaW5kZXhPZihqb2Iuc3RhZ2UpO1xuICAgICAgICBjb25zdCBwYXN0U3RhZ2VzID0gc3RhZ2VzLnNsaWNlKDAsIHN0YWdlSW5kZXgpO1xuICAgICAgICBwYXN0U3RhZ2VzLmZvckVhY2goKHBhc3RTdGFnZSkgPT4ge1xuICAgICAgICAgICAgcHJldmlvdXNUb1dhaXRGb3IucHVzaCguLi5bLi4uam9icy52YWx1ZXMoKV0uZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gcGFzdFN0YWdlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNUb1dhaXRGb3I7XG4gICAgfVxufVxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixpREFBOEM7QUFFOUMsa0RBQXlCO0FBRXpCLE1BQWEsUUFBUTtJQUVqQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBRSxJQUFVLEVBQUUsSUFBd0IsRUFBRSxNQUF5QixFQUFFLGlCQUF3QjtRQUMzRyxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsR0FBRyxDQUFDO1lBQ0EsZUFBZSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RixJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxjQUFtQixFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JFLE1BQU0sSUFBQSxlQUFJLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQ25HLENBQUM7UUFDTCxDQUFDLFFBQVEsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQWlDLEVBQUUsT0FBaUI7UUFDaEksTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTNCLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFNLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksR0FBRyxDQUFDLE9B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LEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0NBQ0o7QUE3R0QsNEJBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3ZcIjtcbmltcG9ydCBwTWFwIGZyb20gXCJwLW1hcFwiO1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0b3Ige1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkxvb3AgKGFyZ3Y6IEFyZ3YsIGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IEpvYltdKSB7XG4gICAgICAgIGxldCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBzdGFydENhbmRpZGF0ZXMgPSBFeGVjdXRvci5nZXRTdGFydENhbmRpZGF0ZXMoam9icywgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycywgYXJndi5tYW51YWwpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVyID0gYXN5bmMgKHN0YXJ0Q2FuZGlkYXRlOiBKb2IpID0+IHN0YXJ0Q2FuZGlkYXRlLnN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgcE1hcChzdGFydENhbmRpZGF0ZXMsIG1hcHBlciwge2NvbmN1cnJlbmN5OiBhcmd2LmNvbmN1cnJlbmN5ID8/IHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGh9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoc3RhcnRDYW5kaWRhdGVzLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRTdGFydENhbmRpZGF0ZXMgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IHJlYWRvbmx5IEpvYltdLCBtYW51YWxzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBbLi4ubmV3IFNldDxKb2I+KHBvdGVudGlhbFN0YXJ0ZXJzKV0pIHtcbiAgICAgICAgICAgIGlmIChqb2Iuc3RhcnRlZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGpvYnNUb1dhaXRGb3IgPSBFeGVjdXRvci5nZXRQYXN0VG9XYWl0Rm9yKGpvYnMsIHN0YWdlcywgam9iLCBtYW51YWxzKTtcbiAgICAgICAgICAgIGlmIChFeGVjdXRvci5pc05vdEZpbmlzaGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwib25fc3VjY2Vzc1wiICYmIEV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm1hbnVhbFwiICYmIEV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm9uX2ZhaWx1cmVcIiAmJiAhRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXJ0Q2FuZGlkYXRlcy5wdXNoKGpvYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXJ0Q2FuZGlkYXRlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNQYXN0RmFpbGVkIChqb2JzVG9XYWl0Rm9yOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgY29uc3QgZmFpbEpvYnMgPSBqb2JzVG9XYWl0Rm9yLmZpbHRlcihqID0+IHtcbiAgICAgICAgICAgIGlmIChqLmFsbG93RmFpbHVyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoai5wcmVTY3JpcHRzRXhpdENvZGUgPyBqLnByZVNjcmlwdHNFeGl0Q29kZSA6IDApID4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWlsSm9icy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc05vdEZpbmlzaGVkIChqb2JzVG9XYWl0Rm9yOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgY29uc3Qgbm90RmluaXNoZWRKb2JzID0gam9ic1RvV2FpdEZvci5maWx0ZXIoaiA9PiAhai5maW5pc2hlZCk7XG4gICAgICAgIHJldHVybiBub3RGaW5pc2hlZEpvYnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RmFpbGVkIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4pIHtcbiAgICAgICAgcmV0dXJuIGpvYnMuZmlsdGVyKGogPT4gai5maW5pc2hlZCAmJiAhai5hbGxvd0ZhaWx1cmUgJiYgKGoucHJlU2NyaXB0c0V4aXRDb2RlID8/IDApID4gMCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFBhc3RUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgam9iOiBKb2IsIG1hbnVhbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IGpvYnNUb1dhaXRGb3JTZXQgPSBuZXcgU2V0PEpvYj4oKTtcbiAgICAgICAgbGV0IHdhaXRGb3JMb29wQXJyYXk6IEpvYltdID0gW2pvYl07XG5cbiAgICAgICAgd2hpbGUgKHdhaXRGb3JMb29wQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbG9vcEpvYiA9IHdhaXRGb3JMb29wQXJyYXkucG9wKCk7XG4gICAgICAgICAgICBhc3NlcnQobG9vcEpvYiAhPSBudWxsLCBcIkpvYiBub3QgZm91bmQgaW4gZ2V0UGFzdFRvV2FpdEZvciwgc2hvdWxkIGJlIGltcG9zc2libGUhXCIpO1xuICAgICAgICAgICAgaWYgKGxvb3BKb2IubmVlZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZWVkZWRUb1dhaXRGb3IgPSB0aGlzLmdldE5lZWRlZFRvV2FpdEZvcihqb2JzLCBtYW51YWxzLCBsb29wSm9iKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5LnB1c2goLi4ubmVlZGVkVG9XYWl0Rm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNUb1dhaXRGb3IgPSB0aGlzLmdldFByZXZpb3VzVG9XYWl0Rm9yKGpvYnMsIHN0YWdlcywgbG9vcEpvYik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuY29uY2F0KHByZXZpb3VzVG9XYWl0Rm9yKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm1hbnVhbFwiIHx8IG1hbnVhbHMuaW5jbHVkZXMoai5uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5LmZvckVhY2goaiA9PiBqb2JzVG9XYWl0Rm9yU2V0LmFkZChqKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5qb2JzVG9XYWl0Rm9yU2V0XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TmVlZGVkVG9XYWl0Rm9yIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIG1hbnVhbHM6IHN0cmluZ1tdLCBqb2I6IEpvYikge1xuICAgICAgICBjb25zdCB0b1dhaXRGb3IgPSBbXTtcbiAgICAgICAgYXNzZXJ0KGpvYi5uZWVkcyAhPSBudWxsLCBjaGFsa2Ake2pvYi5uYW1lfS5uZWVkcyBjYW5ub3QgYmUgbnVsbCBpbiBnZXROZWVkZWRUb1dhaXRGb3JgKTtcbiAgICAgICAgZm9yIChjb25zdCBuZWVkIG9mIGpvYi5uZWVkcykge1xuICAgICAgICAgICAgY29uc3QgYmFzZUpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGouYmFzZU5hbWUgPT09IG5lZWQuam9iKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaiBvZiBiYXNlSm9icykge1xuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibmV2ZXJcIiAmJiAhbmVlZC5vcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7ai5uYW1lfX0gaXMgd2hlbjpuZXZlciwgYnV0IGl0cyBuZWVkZWQgYnkge2JsdWVCcmlnaHQgJHtqb2IubmFtZX19YH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm5ldmVyXCIgJiYgbmVlZC5vcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJtYW51YWxcIiAmJiAhbWFudWFscy5pbmNsdWRlcyhqLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqLm5hbWV9fSBpcyB3aGVuOm1hbnVhbCwgaXRzIG5lZWRlZCBieSB7Ymx1ZUJyaWdodCAke2pvYi5uYW1lfX0sIGFuZCBub3Qgc3BlY2lmaWVkIGluIC0tbWFudWFsYH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b1dhaXRGb3IucHVzaChqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9XYWl0Rm9yO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQcmV2aW91c1RvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBqb2I6IEpvYikge1xuICAgICAgICBjb25zdCBwcmV2aW91c1RvV2FpdEZvcjogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhZ2VJbmRleCA9IHN0YWdlcy5pbmRleE9mKGpvYi5zdGFnZSk7XG4gICAgICAgIGNvbnN0IHBhc3RTdGFnZXMgPSBzdGFnZXMuc2xpY2UoMCwgc3RhZ2VJbmRleCk7XG4gICAgICAgIHBhc3RTdGFnZXMuZm9yRWFjaCgocGFzdFN0YWdlKSA9PiB7XG4gICAgICAgICAgICBwcmV2aW91c1RvV2FpdEZvci5wdXNoKC4uLlsuLi5qb2JzLnZhbHVlcygpXS5maWx0ZXIoaiA9PiBqLnN0YWdlID09PSBwYXN0U3RhZ2UpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1RvV2FpdEZvcjtcbiAgICB9XG59XG4iXX0=
package/src/git-data.js CHANGED
@@ -43,6 +43,7 @@ class GitData {
43
43
  host: "gitlab.com",
44
44
  group: "fallback.group",
45
45
  project: "fallback.project",
46
+ defaultBranch: "main",
46
47
  };
47
48
  commit = {
48
49
  REF_NAME: "main",
@@ -82,7 +83,10 @@ class GitData {
82
83
  try {
83
84
  const { stdout: gitRemote } = await utils_1.Utils.spawn(["git", "remote", "-v"], cwd);
84
85
  const gitRemoteMatch = /(?<schema>git|https?)(?::\/\/|@)(?<host>[^:/]*)(:(?<port>\d+)\/|:|\/)(?<group>.*)\/(?<project>[^ .]+)(?:\.git)?.*/.exec(gitRemote);
86
+ const { stdout: gitRemoteDefaultBranch } = await utils_1.Utils.spawn(["git", "symbolic-ref", "--short", "refs/remotes/origin/HEAD"], cwd);
87
+ const gitRemoteDefaultBranchMatch = /^origin\/(?<defaultBranch>[^/]+)$/.exec(gitRemoteDefaultBranch);
85
88
  (0, assert_1.default)(gitRemoteMatch?.groups != null, "git remote -v didn't provide valid matches");
89
+ (0, assert_1.default)(gitRemoteDefaultBranchMatch?.groups != null, "git symbolic-ref --short refs/remotes/origin/HEAD didn't provide valid matches");
86
90
  this.remote.schema = gitRemoteMatch.groups.schema;
87
91
  if (this.remote.schema === "git") {
88
92
  this.remote.port = gitRemoteMatch.groups.port ?? "22";
@@ -96,6 +100,7 @@ class GitData {
96
100
  this.remote.host = gitRemoteMatch.groups.host;
97
101
  this.remote.group = gitRemoteMatch.groups.group;
98
102
  this.remote.project = gitRemoteMatch.groups.project;
103
+ this.remote.defaultBranch = gitRemoteDefaultBranchMatch.groups.defaultBranch;
99
104
  }
100
105
  catch (e) {
101
106
  if (e instanceof assert_1.AssertionError) {
@@ -131,4 +136,4 @@ class GitData {
131
136
  }
132
137
  }
133
138
  exports.GitData = GitData;
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUE4QjtBQUM5QixpREFBOEM7QUFFOUMsa0RBQTBCO0FBRTFCLE1BQWEsT0FBTztJQUVBLElBQUksR0FBRztRQUNuQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGNBQWMsRUFBRSxNQUFNO0tBQ3pCLENBQUM7SUFFYyxNQUFNLEdBQUc7UUFDckIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsT0FBTyxFQUFFLGtCQUFrQjtLQUM5QixDQUFDO0lBRWMsTUFBTSxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEdBQUcsRUFBRSwwQ0FBMEM7UUFDL0MsU0FBUyxFQUFFLFVBQVU7S0FDeEIsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFFLEdBQVcsRUFBRSxZQUEwQjtRQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDekQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUUsR0FBVyxFQUFFLFlBQTBCO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLGNBQWMsR0FBRyxhQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEYsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxVQUFVLEdBQUcsYUFBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSTtZQUNBLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksdUJBQWMsRUFBRTtnQkFDN0IsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7YUFDOUQ7WUFDRCxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLDJDQUEyQyxDQUFDLENBQUM7U0FDekU7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBRSxHQUFXLEVBQUUsWUFBMEI7UUFDakUsSUFBSTtZQUNBLE1BQU0sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLEdBQUcsTUFBTSxhQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1RSxNQUFNLGNBQWMsR0FBRyxtSEFBbUgsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFM0osSUFBQSxnQkFBTSxFQUFDLGNBQWMsRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7WUFFckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQzthQUN6RDtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7YUFDMUQ7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDdkQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLHVCQUFjLEVBQUU7Z0JBQzdCLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBQSxlQUFLLEVBQUEsV0FBVyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQztnQkFDcEQsT0FBTzthQUNWO1lBQ0QsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSwyQ0FBMkMsQ0FBQyxDQUFDO1NBQ3pFO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUUsR0FBVyxFQUFFLFlBQTBCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLGtCQUFrQixHQUFHLGFBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sZUFBZSxHQUFHLGFBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUN4RixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSwwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUvQixNQUFNLFlBQVksR0FBRyxhQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBQSxlQUFLLEVBQUEseUNBQXlDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSjtBQWpIRCwwQkFpSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5leHBvcnQgY2xhc3MgR2l0RGF0YSB7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdXNlciA9IHtcbiAgICAgICAgR0lUTEFCX1VTRVJfTE9HSU46IFwibG9jYWxcIixcbiAgICAgICAgR0lUTEFCX1VTRVJfRU1BSUw6IFwibG9jYWxAZ2l0bGFiLmNvbVwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiBcIkJvYiBMb2NhbFwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9JRDogXCIxMDAwXCIsXG4gICAgfTtcblxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGUgPSB7XG4gICAgICAgIHNjaGVtYTogXCJnaXRcIixcbiAgICAgICAgcG9ydDogXCIyMlwiLFxuICAgICAgICBob3N0OiBcImdpdGxhYi5jb21cIixcbiAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgcHJvamVjdDogXCJmYWxsYmFjay5wcm9qZWN0XCIsXG4gICAgfTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjb21taXQgPSB7XG4gICAgICAgIFJFRl9OQU1FOiBcIm1haW5cIixcbiAgICAgICAgU0hBOiBcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgU0hPUlRfU0hBOiBcIjAwMDAwMDAwXCIsXG4gICAgfTtcblxuICAgIHN0YXRpYyBhc3luYyBpbml0IChjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPEdpdERhdGE+IHtcbiAgICAgICAgY29uc3QgZ2l0RGF0YSA9IG5ldyBHaXREYXRhKCk7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RGF0YS5pbml0Q29tbWl0RGF0YShjd2QsIHdyaXRlU3RyZWFtcykpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGdpdERhdGEuaW5pdFJlbW90ZURhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRVc2VyRGF0YShjd2QsIHdyaXRlU3RyZWFtcykpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIHJldHVybiBnaXREYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdENvbW1pdERhdGEgKGN3ZDogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJlZk5hbWVQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmV2LXBhcnNlXCIsIFwiLS1hYmJyZXYtcmVmXCIsIFwiSEVBRFwiXSwgY3dkKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChyZWZOYW1lUHJvbWlzZS50aGVuKCh7c3Rkb3V0fSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21taXQuUkVGX05BTUUgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3Qgc2hhUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJldi1wYXJzZVwiLCBcIkhFQURcIl0sIGN3ZCk7XG4gICAgICAgIHByb21pc2VzLnB1c2goc2hhUHJvbWlzZS50aGVuKCh7c3Rkb3V0fSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21taXQuU0hBID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93ICR7ZS5tZXNzYWdlfX1cXG5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgY29tbWl0IGRhdGF9XFxuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRSZW1vdGVEYXRhIChjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHtzdGRvdXQ6IGdpdFJlbW90ZX0gPSBhd2FpdCBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJyZW1vdGVcIiwgXCItdlwiXSwgY3dkKTtcbiAgICAgICAgICAgIGNvbnN0IGdpdFJlbW90ZU1hdGNoID0gLyg/PHNjaGVtYT5naXR8aHR0cHM/KSg/OjpcXC9cXC98QCkoPzxob3N0PlteOi9dKikoOig/PHBvcnQ+XFxkKylcXC98OnxcXC8pKD88Z3JvdXA+LiopXFwvKD88cHJvamVjdD5bXiAuXSspKD86XFwuZ2l0KT8uKi8uZXhlYyhnaXRSZW1vdGUpO1xuXG4gICAgICAgICAgICBhc3NlcnQoZ2l0UmVtb3RlTWF0Y2g/Lmdyb3VwcyAhPSBudWxsLCBcImdpdCByZW1vdGUgLXYgZGlkbid0IHByb3ZpZGUgdmFsaWQgbWF0Y2hlc1wiKTtcblxuICAgICAgICAgICAgdGhpcy5yZW1vdGUuc2NoZW1hID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnNjaGVtYTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlbW90ZS5zY2hlbWEgPT09IFwiZ2l0XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5wb3J0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnBvcnQgPz8gXCIyMlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlLnNjaGVtYSA9PT0gXCJodHRwc1wiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucG9ydCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wb3J0ID8/IFwiNDQzXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZW1vdGUuc2NoZW1hID09PSBcImh0dHBcIikge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnBvcnQgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucG9ydCA/PyBcIjgwXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbW90ZS5ob3N0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmhvc3Q7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZS5ncm91cCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5ncm91cDtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlLnByb2plY3QgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucHJvamVjdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyAke2UubWVzc2FnZX19XFxuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCByZW1vdGUgZGF0YX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGluaXRVc2VyRGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgY29uc3QgZ2l0VXNlcm5hbWVQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwiY29uZmlnXCIsIFwidXNlci5uYW1lXCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfTkFNRSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5uYW1lfVxcbmApO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXRVc2VybmFtZVByb21pc2UpO1xuXG4gICAgICAgIGNvbnN0IGdpdEVtYWlsUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcImNvbmZpZ1wiLCBcInVzZXIuZW1haWxcIl0sIGN3ZCkudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIHRoaXMudXNlci5HSVRMQUJfVVNFUl9FTUFJTCA9IGVtYWlsO1xuICAgICAgICAgICAgdGhpcy51c2VyLkdJVExBQl9VU0VSX0xPR0lOID0gZW1haWwucmVwbGFjZSgvQC4qLywgXCJcIik7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5lbWFpbH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RW1haWxQcm9taXNlKTtcblxuICAgICAgICBjb25zdCBvc1VpZFByb21pc2UgPSBVdGlscy5zcGF3bihbXCJpZFwiLCBcIi11XCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfSUQgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgbGludXggdXNlciBpZH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2gob3NVaWRQcm9taXNlKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxufVxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnaXQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUE4QjtBQUM5QixpREFBOEM7QUFFOUMsa0RBQTBCO0FBRTFCLE1BQWEsT0FBTztJQUVBLElBQUksR0FBRztRQUNuQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLGNBQWMsRUFBRSxNQUFNO0tBQ3pCLENBQUM7SUFFYyxNQUFNLEdBQUc7UUFDckIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixhQUFhLEVBQUUsTUFBTTtLQUN4QixDQUFDO0lBRWMsTUFBTSxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEdBQUcsRUFBRSwwQ0FBMEM7UUFDL0MsU0FBUyxFQUFFLFVBQVU7S0FDeEIsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFFLEdBQVcsRUFBRSxZQUEwQjtRQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDekQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN2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LENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBQSxlQUFLLEVBQUEseUNBQXlDLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSjtBQXZIRCwwQkF1SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IGFzc2VydCwge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5leHBvcnQgY2xhc3MgR2l0RGF0YSB7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdXNlciA9IHtcbiAgICAgICAgR0lUTEFCX1VTRVJfTE9HSU46IFwibG9jYWxcIixcbiAgICAgICAgR0lUTEFCX1VTRVJfRU1BSUw6IFwibG9jYWxAZ2l0bGFiLmNvbVwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9OQU1FOiBcIkJvYiBMb2NhbFwiLFxuICAgICAgICBHSVRMQUJfVVNFUl9JRDogXCIxMDAwXCIsXG4gICAgfTtcblxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdGUgPSB7XG4gICAgICAgIHNjaGVtYTogXCJnaXRcIixcbiAgICAgICAgcG9ydDogXCIyMlwiLFxuICAgICAgICBob3N0OiBcImdpdGxhYi5jb21cIixcbiAgICAgICAgZ3JvdXA6IFwiZmFsbGJhY2suZ3JvdXBcIixcbiAgICAgICAgcHJvamVjdDogXCJmYWxsYmFjay5wcm9qZWN0XCIsXG4gICAgICAgIGRlZmF1bHRCcmFuY2g6IFwibWFpblwiLFxuICAgIH07XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWl0ID0ge1xuICAgICAgICBSRUZfTkFNRTogXCJtYWluXCIsXG4gICAgICAgIFNIQTogXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIFNIT1JUX1NIQTogXCIwMDAwMDAwMFwiLFxuICAgIH07XG5cbiAgICBzdGF0aWMgYXN5bmMgaW5pdCAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTxHaXREYXRhPiB7XG4gICAgICAgIGNvbnN0IGdpdERhdGEgPSBuZXcgR2l0RGF0YSgpO1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGdpdERhdGEuaW5pdENvbW1pdERhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXREYXRhLmluaXRSZW1vdGVEYXRhKGN3ZCwgd3JpdGVTdHJlYW1zKSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RGF0YS5pbml0VXNlckRhdGEoY3dkLCB3cml0ZVN0cmVhbXMpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICByZXR1cm4gZ2l0RGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRDb21taXREYXRhIChjd2Q6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBjb25zdCByZWZOYW1lUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcInJldi1wYXJzZVwiLCBcIi0tYWJicmV2LXJlZlwiLCBcIkhFQURcIl0sIGN3ZCk7XG4gICAgICAgIHByb21pc2VzLnB1c2gocmVmTmFtZVByb21pc2UudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tbWl0LlJFRl9OQU1FID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IHNoYVByb21pc2UgPSBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJyZXYtcGFyc2VcIiwgXCJIRUFEXCJdLCBjd2QpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKHNoYVByb21pc2UudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tbWl0LlNIQSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyAke2UubWVzc2FnZX19XFxuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgZ2l0IGNvbW1pdCBkYXRhfVxcbmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0UmVtb3RlRGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7c3Rkb3V0OiBnaXRSZW1vdGV9ID0gYXdhaXQgVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwicmVtb3RlXCIsIFwiLXZcIl0sIGN3ZCk7XG4gICAgICAgICAgICBjb25zdCBnaXRSZW1vdGVNYXRjaCA9IC8oPzxzY2hlbWE+Z2l0fGh0dHBzPykoPzo6XFwvXFwvfEApKD88aG9zdD5bXjovXSopKDooPzxwb3J0PlxcZCspXFwvfDp8XFwvKSg/PGdyb3VwPi4qKVxcLyg/PHByb2plY3Q+W14gLl0rKSg/OlxcLmdpdCk/LiovLmV4ZWMoZ2l0UmVtb3RlKTtcblxuICAgICAgICAgICAgY29uc3Qge3N0ZG91dDogZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaH0gPSBhd2FpdCBVdGlscy5zcGF3bihbXCJnaXRcIiwgXCJzeW1ib2xpYy1yZWZcIiwgXCItLXNob3J0XCIsIFwicmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEXCJdLCBjd2QpO1xuICAgICAgICAgICAgY29uc3QgZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaE1hdGNoID0gL15vcmlnaW5cXC8oPzxkZWZhdWx0QnJhbmNoPlteL10rKSQvLmV4ZWMoZ2l0UmVtb3RlRGVmYXVsdEJyYW5jaCk7XG5cbiAgICAgICAgICAgIGFzc2VydChnaXRSZW1vdGVNYXRjaD8uZ3JvdXBzICE9IG51bGwsIFwiZ2l0IHJlbW90ZSAtdiBkaWRuJ3QgcHJvdmlkZSB2YWxpZCBtYXRjaGVzXCIpO1xuICAgICAgICAgICAgYXNzZXJ0KGdpdFJlbW90ZURlZmF1bHRCcmFuY2hNYXRjaD8uZ3JvdXBzICE9IG51bGwsIFwiZ2l0IHN5bWJvbGljLXJlZiAtLXNob3J0IHJlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRCBkaWRuJ3QgcHJvdmlkZSB2YWxpZCBtYXRjaGVzXCIpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbW90ZS5zY2hlbWEgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuc2NoZW1hO1xuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3RlLnNjaGVtYSA9PT0gXCJnaXRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3RlLnBvcnQgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMucG9ydCA/PyBcIjIyXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZW1vdGUuc2NoZW1hID09PSBcImh0dHBzXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZS5wb3J0ID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLnBvcnQgPz8gXCI0NDNcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlbW90ZS5zY2hlbWEgPT09IFwiaHR0cFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdGUucG9ydCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wb3J0ID8/IFwiODBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVtb3RlLmhvc3QgPSBnaXRSZW1vdGVNYXRjaC5ncm91cHMuaG9zdDtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlLmdyb3VwID0gZ2l0UmVtb3RlTWF0Y2guZ3JvdXBzLmdyb3VwO1xuICAgICAgICAgICAgdGhpcy5yZW1vdGUucHJvamVjdCA9IGdpdFJlbW90ZU1hdGNoLmdyb3Vwcy5wcm9qZWN0O1xuICAgICAgICAgICAgdGhpcy5yZW1vdGUuZGVmYXVsdEJyYW5jaCA9IGdpdFJlbW90ZURlZmF1bHRCcmFuY2hNYXRjaC5ncm91cHMuZGVmYXVsdEJyYW5jaDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyAke2UubWVzc2FnZX19XFxuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFVzaW5nIGZhbGxiYWNrIGdpdCByZW1vdGUgZGF0YX1cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGluaXRVc2VyRGF0YSAoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgY29uc3QgZ2l0VXNlcm5hbWVQcm9taXNlID0gVXRpbHMuc3Bhd24oW1wiZ2l0XCIsIFwiY29uZmlnXCIsIFwidXNlci5uYW1lXCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfTkFNRSA9IHN0ZG91dC50cmltRW5kKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5uYW1lfVxcbmApO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChnaXRVc2VybmFtZVByb21pc2UpO1xuXG4gICAgICAgIGNvbnN0IGdpdEVtYWlsUHJvbWlzZSA9IFV0aWxzLnNwYXduKFtcImdpdFwiLCBcImNvbmZpZ1wiLCBcInVzZXIuZW1haWxcIl0sIGN3ZCkudGhlbigoe3N0ZG91dH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsID0gc3Rkb3V0LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIHRoaXMudXNlci5HSVRMQUJfVVNFUl9FTUFJTCA9IGVtYWlsO1xuICAgICAgICAgICAgdGhpcy51c2VyLkdJVExBQl9VU0VSX0xPR0lOID0gZW1haWwucmVwbGFjZSgvQC4qLywgXCJcIik7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBVc2luZyBmYWxsYmFjayBnaXQgdXNlci5lbWFpbH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goZ2l0RW1haWxQcm9taXNlKTtcblxuICAgICAgICBjb25zdCBvc1VpZFByb21pc2UgPSBVdGlscy5zcGF3bihbXCJpZFwiLCBcIi11XCJdLCBjd2QpLnRoZW4oKHtzdGRvdXR9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuR0lUTEFCX1VTRVJfSUQgPSBzdGRvdXQudHJpbUVuZCgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3RkZXJyKGNoYWxrYHt5ZWxsb3cgVXNpbmcgZmFsbGJhY2sgbGludXggdXNlciBpZH1cXG5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb21pc2VzLnB1c2gob3NVaWRQcm9taXNlKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxufVxuIl19