@kontur.candy/tools 2.131.0 → 2.132.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ <a name="2.132.0"></a>
2
+ # [2.132.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.131.0...release/tools/v2.132.0) (2022-08-26)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * **Tools:** Исправлена генерация build-cache ([8c0120f](https://git.skbkontur.ru/ke/candy-utils/commit/8c0120f))
8
+
1
9
  <a name="2.131.0"></a>
2
10
  # [2.131.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.130.0...release/tools/v2.131.0) (2022-08-12)
3
11
 
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ButtonSettingsTypeEnum = void 0;
7
+ let ButtonSettingsTypeEnum;
8
+ exports.ButtonSettingsTypeEnum = ButtonSettingsTypeEnum;
9
+
10
+ (function (ButtonSettingsTypeEnum) {
11
+ ButtonSettingsTypeEnum["IonType"] = "ionType";
12
+ })(ButtonSettingsTypeEnum || (exports.ButtonSettingsTypeEnum = ButtonSettingsTypeEnum = {}));
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9FbnVtcy9CdXR0b25TZXR0aW5nc1R5cGVFbnVtLnRzIl0sIm5hbWVzIjpbIkJ1dHRvblNldHRpbmdzVHlwZUVudW0iXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFZQSxzQjs7O1dBQUFBLHNCO0FBQUFBLEVBQUFBLHNCO0dBQUFBLHNCLHNDQUFBQSxzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblNldHRpbmdzVHlwZUVudW0ge1xuICAgIElvblR5cGUgPSBcImlvblR5cGVcIixcbn1cbiJdfQ==
@@ -132,6 +132,7 @@ class BuildCache {
132
132
  content = { ...content,
133
133
  [fileName]: fileContent
134
134
  };
135
+ await (0, _fsExtra.ensureDir)(path.dirname(cacheFilePath));
135
136
  await (0, _fsExtra.writeFile)(cacheFilePath, JSON.stringify(content), "utf-8");
136
137
  }
137
138
 
@@ -140,15 +141,10 @@ class BuildCache {
140
141
  return undefined;
141
142
  }
142
143
 
143
- const cachedFilePath = await this.existsFileCacheOrDownload(options.gfv, options.generatorVersion, options.depsHash);
144
-
145
- if (cachedFilePath != undefined) {
146
- new CacheAssetsPlugin({
147
- cacheFile: cachedFilePath
148
- });
149
- }
150
-
151
- return undefined;
144
+ const cachedFilePath = this.getCacheFilePath(options.gfv, options.generatorVersion, options.depsHash);
145
+ return new CacheAssetsPlugin({
146
+ cacheFile: cachedFilePath
147
+ });
152
148
  }
153
149
 
154
150
  getCacheFilePath(gfv, generatorVersion, depsHash) {
@@ -194,4 +190,4 @@ class BuildCache {
194
190
  }
195
191
 
196
192
  exports.BuildCache = BuildCache;
197
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW4udHMiXSwibmFtZXMiOlsic2luZ2xlTGltaXQiLCJDYWNoZUFzc2V0c1BsdWdpbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImFwcGx5IiwiY29tcGlsZXIiLCJob29rcyIsImVtaXQiLCJ0YXBQcm9taXNlIiwiY29tcGlsYXRpb24iLCJjYWNoZUl0ZW1zIiwiYXNzZXROYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc2V0cyIsInNvdXJjZSIsIkJ1ZmZlciIsInR5cGUiLCJiYXNlNjRjb250ZW50IiwidG9TdHJpbmciLCJ1cGRhdGVGaWxlIiwiZmlsZVBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNhY2hlRmlsZSIsImNvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJkaXJuYW1lIiwic3RyaW5naWZ5IiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsImpvaW4iLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsInJlc3BvbnNlIiwiYmFzZW5hbWUiLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwibWFw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TUFBVCxDQUFnQjdDLFFBQWhCLEVBQTJCLEVBQTFFOztBQUNBLFlBQUkyQyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsZ0JBQU0sd0JBQVUzQyxRQUFWLEVBQW9CLE1BQU15QyxRQUFRLENBQUNHLE1BQVQsRUFBMUIsRUFBNkMsT0FBN0MsQ0FBTjtBQUNBLGlCQUFPNUMsUUFBUDtBQUNILFNBSEQsTUFHTztBQUNILGNBQUl5QyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsaUJBQUsvQixNQUFMLENBQVlpQyxLQUFaLENBQWtCLDJDQUFsQjtBQUNILFdBRkQsTUFFTztBQUNILGlCQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUNLLHNCQUFxQkosUUFBUSxDQUFDRSxNQUFPLDZDQUQxQztBQUdIOztBQUNELGlCQUFPWCxTQUFQO0FBQ0g7QUFDSixPQWpCRCxDQWlCRSxPQUFPYyxDQUFQLEVBQVU7QUFDUixhQUFLbEMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix1Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix5Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQkMsQ0FBbEI7QUFDQSxlQUFPZCxTQUFQO0FBQ0g7QUFDSjtBQUNKOztBQTlIbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgd2VicGFjayBmcm9tIFwid2VicGFja1wiO1xuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5cbmltcG9ydCB7IEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZENhY2hlTW9kZVwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW50ZXJmYWNlIENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucyB7XG4gICAgY2FjaGVGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIHtcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nO1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGRlcHNIYXNoOiBzdHJpbmc7XG59XG5cbmNvbnN0IHNpbmdsZUxpbWl0ID0gcExpbWl0KDEpO1xuXG5pbnRlcmZhY2UgQnVpbGRSZXN1bHRzU2VyaWFsaXplZCB7XG4gICAgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHsgdHlwZTogXCJCdWZmZXJcIjsgYmFzZTY0Y29udGVudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDYWNoZUFzc2V0c1BsdWdpbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwUHJvbWlzZShcIkNhY2hlQXNzZXRzUGx1Z2luXCIsIGNvbXBpbGF0aW9uID0+XG4gICAgICAgICAgICBzaW5nbGVMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVJdGVtczogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IHt9O1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NldE5hbWUgb2YgT2JqZWN0LmtleXMoY29tcGlsYXRpb24uYXNzZXRzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2U6IHN0cmluZyB8IEJ1ZmZlciA9IGNvbXBpbGF0aW9uLmFzc2V0c1thc3NldE5hbWVdPy5zb3VyY2UoKSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0geyB0eXBlOiBcIkJ1ZmZlclwiLCBiYXNlNjRjb250ZW50OiBzb3VyY2UudG9TdHJpbmcoXCJiYXNlNjRcIikgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlSXRlbXNbYXNzZXROYW1lXSA9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbGUoY2FjaGVJdGVtcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsZShjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMub3B0aW9ucy5jYWNoZUZpbGUpO1xuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgID8gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgXCJ1dGYtOFwiKSlcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgLi4uY2FjaGVJdGVtcyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCBcInV0Zi04XCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkQ2FjaGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IElMb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogc3RyaW5nLCBtb2RlOiBCdWlsZENhY2hlTW9kZSkge1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJCVUlMRF9DQUNIRVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXh0cmFjdChcbiAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBjb25zdCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGF3YWl0IHJlYWRGaWxlKHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCksIFwidXRmLThcIilcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBhc3NldFBhdGggb2YgT2JqZWN0LmtleXMoY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gY29udGVudFthc3NldFBhdGhdID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBhc3NldFBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudEVsZW1lbnQsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuZnJvbShjb250ZW50RWxlbWVudC5iYXNlNjRjb250ZW50LCBcImJhc2U2NFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhpc3RzKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlLCBnZnY6IHN0cmluZywgZGVwc0hhc2g6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCB0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSBhd2FpdCB0aGlzLmV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gY2FjaGVkRmlsZVBhdGggIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDb250ZW50KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlQ29udGVudDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhY2hlRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UsIGRlcHNIYXNoKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhjYWNoZUZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlUGF0aCwgXCJ1dGYtOFwiKSk7XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgW2ZpbGVOYW1lXTogZmlsZUNvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zOiBGb3JtQnVpbGRDYWNoZU9wdGlvbnMpOiBQcm9taXNlPENhY2hlQXNzZXRzUGx1Z2luIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSBhd2FpdCB0aGlzLmV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoXG4gICAgICAgICAgICBvcHRpb25zLmdmdixcbiAgICAgICAgICAgIG9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgICAgIG9wdGlvbnMuZGVwc0hhc2hcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGNhY2hlZEZpbGVQYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3IENhY2hlQXNzZXRzUGx1Z2luKHtcbiAgICAgICAgICAgICAgICBjYWNoZUZpbGU6IGNhY2hlZEZpbGVQYXRoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhY2hlRmlsZVBhdGgoZ2Z2OiBzdHJpbmcsIGdlbmVyYXRvclZlcnNpb246IHN0cmluZywgZGVwc0hhc2g6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7bWQ1KGdmdil9LSR7bWQ1KGdlbmVyYXRvclZlcnNpb24pfS0ke2RlcHNIYXNofS56aXBgO1xuICAgICAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCIuYnVpbGQtY2FjaGVcIiwgXCJjb21waWxlXCIsIGZpbGVOYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclZlcnNpb24sIGRlcHNIYXNoKTtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBTdGFydCBzZWFyY2ggZmlsZSBpbiBsb2NhbCAke2ZpbGVQYXRofWApO1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBGb3VuZCBmaWxlIGluIGxvY2FsIGRpcmVjdG9yeWApO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJUaGUgY2FjaGUgZmlsZSB3YXMgbm90IGZvdW5kIGluIHRoZSBsb2NhbCBkaXJlY3RvcnkgSW0gbG9va2luZyBmb3IgaXQgaW4gZHJpdmVcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9hcGkua29udHVyLnJ1L2RyaXZlL3YxL3B1YmxpYy8ke3BhdGguYmFzZW5hbWUoZmlsZVBhdGgpfWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgRHJpdmUgcmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzLnRvU3RyaW5nKCl9YCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgYXdhaXQgcmVzcG9uc2UuYnVmZmVyKCksIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiVGhlIGNhY2hlIGZpbGUgbm90IGZvdW5kIGluIGRyaXZlIHN0b3JhZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRHJpdmUgc3RvcmFnZSBzZW5kICR7cmVzcG9uc2Uuc3RhdHVzfSBzdGF0dXMgY29kZSwgSSBkb24ndCBwcm9jZXNzIGl0IGluIGFueSB3YXlgXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiRHJpdmUgc3RvcmFnZSByZXNwb25kZWQgd2l0aCBhbiBlcnJvclwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIlRoZSBidWlsZCB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgYSBjYWNoZVwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW4udHMiXSwibmFtZXMiOlsic2luZ2xlTGltaXQiLCJDYWNoZUFzc2V0c1BsdWdpbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImFwcGx5IiwiY29tcGlsZXIiLCJob29rcyIsImVtaXQiLCJ0YXBQcm9taXNlIiwiY29tcGlsYXRpb24iLCJjYWNoZUl0ZW1zIiwiYXNzZXROYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc2V0cyIsInNvdXJjZSIsIkJ1ZmZlciIsInR5cGUiLCJiYXNlNjRjb250ZW50IiwidG9TdHJpbmciLCJ1cGRhdGVGaWxlIiwiZmlsZVBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNhY2hlRmlsZSIsImNvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJkaXJuYW1lIiwic3RyaW5naWZ5IiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsImpvaW4iLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsInJlc3BvbnNlIiwiYmFzZW5hbWUiLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwibWFw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Q0UsTUFBVCxDQUFnQjdDLFFBQWhCLEVBQTJCLEVBQTFFOztBQUNBLFlBQUkyQyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsZ0JBQU0sd0JBQVUzQyxRQUFWLEVBQW9CLE1BQU15QyxRQUFRLENBQUNHLE1BQVQsRUFBMUIsRUFBNkMsT0FBN0MsQ0FBTjtBQUNBLGlCQUFPNUMsUUFBUDtBQUNILFNBSEQsTUFHTztBQUNILGNBQUl5QyxRQUFRLENBQUNFLE1BQVQsS0FBb0IsR0FBeEIsRUFBNkI7QUFDekIsaUJBQUsvQixNQUFMLENBQVlpQyxLQUFaLENBQWtCLDJDQUFsQjtBQUNILFdBRkQsTUFFTztBQUNILGlCQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUNLLHNCQUFxQkosUUFBUSxDQUFDRSxNQUFPLDZDQUQxQztBQUdIOztBQUNELGlCQUFPWCxTQUFQO0FBQ0g7QUFDSixPQWpCRCxDQWlCRSxPQUFPYyxDQUFQLEVBQVU7QUFDUixhQUFLbEMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix1Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQix5Q0FBbEI7QUFDQSxhQUFLakMsTUFBTCxDQUFZaUMsS0FBWixDQUFrQkMsQ0FBbEI7QUFDQSxlQUFPZCxTQUFQO0FBQ0g7QUFDSjtBQUNKOztBQXhIbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgd2VicGFjayBmcm9tIFwid2VicGFja1wiO1xuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5cbmltcG9ydCB7IEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZENhY2hlTW9kZVwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW50ZXJmYWNlIENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucyB7XG4gICAgY2FjaGVGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIHtcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nO1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGRlcHNIYXNoOiBzdHJpbmc7XG59XG5cbmNvbnN0IHNpbmdsZUxpbWl0ID0gcExpbWl0KDEpO1xuXG5pbnRlcmZhY2UgQnVpbGRSZXN1bHRzU2VyaWFsaXplZCB7XG4gICAgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHsgdHlwZTogXCJCdWZmZXJcIjsgYmFzZTY0Y29udGVudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDYWNoZUFzc2V0c1BsdWdpbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwUHJvbWlzZShcIkNhY2hlQXNzZXRzUGx1Z2luXCIsIGNvbXBpbGF0aW9uID0+XG4gICAgICAgICAgICBzaW5nbGVMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVJdGVtczogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IHt9O1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NldE5hbWUgb2YgT2JqZWN0LmtleXMoY29tcGlsYXRpb24uYXNzZXRzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2U6IHN0cmluZyB8IEJ1ZmZlciA9IGNvbXBpbGF0aW9uLmFzc2V0c1thc3NldE5hbWVdPy5zb3VyY2UoKSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0geyB0eXBlOiBcIkJ1ZmZlclwiLCBiYXNlNjRjb250ZW50OiBzb3VyY2UudG9TdHJpbmcoXCJiYXNlNjRcIikgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlSXRlbXNbYXNzZXROYW1lXSA9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbGUoY2FjaGVJdGVtcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsZShjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMub3B0aW9ucy5jYWNoZUZpbGUpO1xuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgID8gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgXCJ1dGYtOFwiKSlcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgLi4uY2FjaGVJdGVtcyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCBcInV0Zi04XCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkQ2FjaGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IElMb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogc3RyaW5nLCBtb2RlOiBCdWlsZENhY2hlTW9kZSkge1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJCVUlMRF9DQUNIRVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXh0cmFjdChcbiAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBjb25zdCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGF3YWl0IHJlYWRGaWxlKHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCksIFwidXRmLThcIilcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBhc3NldFBhdGggb2YgT2JqZWN0LmtleXMoY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gY29udGVudFthc3NldFBhdGhdID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBhc3NldFBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudEVsZW1lbnQsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuZnJvbShjb250ZW50RWxlbWVudC5iYXNlNjRjb250ZW50LCBcImJhc2U2NFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhpc3RzKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlLCBnZnY6IHN0cmluZywgZGVwc0hhc2g6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiR2VuZXJhdG9yU291cmNlc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydHMgY2FjaGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCB0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSBhd2FpdCB0aGlzLmV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gY2FjaGVkRmlsZVBhdGggIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDb250ZW50KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlQ29udGVudDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhY2hlRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JTb3VyY2UsIGRlcHNIYXNoKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhjYWNoZUZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlUGF0aCwgXCJ1dGYtOFwiKSk7XG4gICAgICAgIGNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgW2ZpbGVOYW1lXTogZmlsZUNvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoY2FjaGVGaWxlUGF0aCkpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9uczogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zKTogUHJvbWlzZTxDYWNoZUFzc2V0c1BsdWdpbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5EaXNhYmxlZCB8fCBvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLlJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlZEZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKG9wdGlvbnMuZ2Z2LCBvcHRpb25zLmdlbmVyYXRvclZlcnNpb24sIG9wdGlvbnMuZGVwc0hhc2gpO1xuICAgICAgICByZXR1cm4gbmV3IENhY2hlQXNzZXRzUGx1Z2luKHtcbiAgICAgICAgICAgIGNhY2hlRmlsZTogY2FjaGVkRmlsZVBhdGgsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FjaGVGaWxlUGF0aChnZnY6IHN0cmluZywgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHttZDUoZ2Z2KX0tJHttZDUoZ2VuZXJhdG9yVmVyc2lvbil9LSR7ZGVwc0hhc2h9LnppcGA7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcIi5idWlsZC1jYWNoZVwiLCBcImNvbXBpbGVcIiwgZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRvclZlcnNpb246IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yVmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFN0YXJ0IHNlYXJjaCBmaWxlIGluIGxvY2FsICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYEZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5YCk7XG4gICAgICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIlRoZSBjYWNoZSBmaWxlIHdhcyBub3QgZm91bmQgaW4gdGhlIGxvY2FsIGRpcmVjdG9yeSBJbSBsb29raW5nIGZvciBpdCBpbiBkcml2ZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgY2FjaGUgZmlsZSBub3QgZm91bmQgaW4gZHJpdmUgc3RvcmFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBEcml2ZSBzdG9yYWdlIHNlbmQgJHtyZXNwb25zZS5zdGF0dXN9IHN0YXR1cyBjb2RlLCBJIGRvbid0IHByb2Nlc3MgaXQgaW4gYW55IHdheWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJEcml2ZSBzdG9yYWdlIHJlc3BvbmRlZCB3aXRoIGFuIGVycm9yXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiVGhlIGJ1aWxkIHdpbGwgY29udGludWUgd2l0aG91dCBhIGNhY2hlXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=