@kontur.candy/tools 2.130.2 → 2.131.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.
Files changed (25) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +6 -6
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +52 -2
  4. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +17 -1
  5. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +11 -0
  6. package/distr/Common/HttpClient/HttpClient.js +14 -2
  7. package/distr/Common/IterableUtils.js +6 -1
  8. package/distr/Common/ModelPath/Map/Map2.js +5 -45
  9. package/distr/Common/ModelPath/ModelPath.js +26 -1
  10. package/distr/Common/ModelPath/ModelPathHelper.js +13 -0
  11. package/distr/Common/ModelPath/PathSplitHelper.js +26 -0
  12. package/distr/Tools/src/BuildTasks/ReadFormSource.js +2 -1
  13. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +7 -7
  14. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -5
  15. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +1 -1
  16. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +56 -8
  17. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +5 -4
  18. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  19. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  20. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  21. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +957 -2596
  22. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  23. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +53 -38
  24. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  25. package/package.json +9 -9
@@ -9,6 +9,7 @@ exports.convertToLegacyPath = convertToLegacyPath;
9
9
  exports.createAbsolute = createAbsolute;
10
10
  exports.createAbsoluteFromMask = createAbsoluteFromMask;
11
11
  exports.createAbsoluteFromTokens = createAbsoluteFromTokens;
12
+ exports.createAbsoluteResolvedFromTokens = createAbsoluteResolvedFromTokens;
12
13
  exports.createFromMask = createFromMask;
13
14
  exports.createModelPath = createModelPath;
14
15
  exports.createRelativeFromTokens = createRelativeFromTokens;
@@ -144,6 +145,11 @@ function createAbsoluteFromTokens(tokens) {
144
145
  return new ModelPathImpl(tokens, true);
145
146
  }
146
147
 
148
+ function createAbsoluteResolvedFromTokens(tokens) {
149
+ ensurePlainPathPartsDoesNotContainMultiplicity(tokens);
150
+ return new ModelPathImpl(tokens, true);
151
+ }
152
+
147
153
  function createRelativeFromTokens(tokens) {
148
154
  return new ModelPathImpl(tokens, false);
149
155
  }
@@ -205,6 +211,14 @@ class AbsoluteModelFieldPath {
205
211
  return new AbsoluteModelFieldPath(createAbsoluteFromMask(pathWithFieldName.replace(".$warningCount", ""), multiplicitySymbol), "$warningCount");
206
212
  }
207
213
 
214
+ if (pathWithFieldName.endsWith(".errorsCount")) {
215
+ return new AbsoluteModelFieldPath(createAbsoluteFromMask(pathWithFieldName.replace(".errorsCount", ""), multiplicitySymbol), "errorsCount");
216
+ }
217
+
218
+ if (pathWithFieldName.endsWith(".warningsCount")) {
219
+ return new AbsoluteModelFieldPath(createAbsoluteFromMask(pathWithFieldName.replace(".warningsCount", ""), multiplicitySymbol), "warningsCount");
220
+ }
221
+
208
222
  return new AbsoluteModelFieldPath(createAbsoluteFromMask(pathWithFieldName, multiplicitySymbol), "value");
209
223
  }
210
224
 
@@ -290,6 +304,17 @@ class ModelPathImpl {
290
304
  return this.tokens.some(x => x === PathTokens.current);
291
305
  }
292
306
 
307
+ getLastListPath() {
308
+ if (!this.isContainIteration()) {
309
+ throw new Error("Path must contain iteration");
310
+ } // Проверка выше гарантирует, что будет PathTokens.each
311
+ // @ts-ignore
312
+
313
+
314
+ const lastIterationIndex = this.tokens.lastIndexOf(PathTokens.each);
315
+ return this.tokens.slice(0, lastIterationIndex);
316
+ }
317
+
293
318
  isAbsolute() {
294
319
  return this.absolute;
295
320
  }
@@ -570,4 +595,4 @@ class ModelPathImpl {
570
595
  }
571
596
 
572
597
  exports.ModelPathImpl = ModelPathImpl;
573
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoLnRzIl0sIm5hbWVzIjpbIkVhY2hTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJDdXJyZW50U3ltYm9sIiwiUGF0aFRva2VucyIsImlzTXVsdGlUb2tlbiIsInBhcnQiLCJlYWNoIiwiY3VycmVudCIsImlzU2ltcGxlVG9rZW4iLCJpc0luc3RhbmNlVG9rZW4iLCJ0ZXN0IiwiaXNNb2RlbFBhdGgiLCJwYXRoIiwiTW9kZWxQYXRoSW1wbCIsImNvbnZlcnRUb0xlZ2FjeVBhdGgiLCJ0b0xlZ2FjeVBhdGgiLCJjb252ZXJ0VG9BYnNvbHV0TW9kZWxQYXRoIiwiY3JlYXRlQWJzb2x1dGVGcm9tTWFzayIsImVtcHR5TW9kZWxQYXRoIiwiZW1wdHlBYnNvbHV0ZU1vZGVsUGF0aCIsImNyZWF0ZU1vZGVsUGF0aCIsImFic29sdXRlIiwicGFydFBhcnRTdHJpbmdzIiwic3BsaXQiLCJlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5Iiwic3RhcnRzV2l0aCIsInNsaWNlIiwiY3JlYXRlRnJvbU1hc2siLCJtdWx0aXBsaWNpdHlTeW1ib2wiLCJtYXAiLCJ4IiwicGFydHMiLCJzb21lIiwiRXJyb3IiLCJjcmVhdGVBYnNvbHV0ZSIsImNyZWF0ZVJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGgiLCJjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnMiLCJ0b2tlbnMiLCJjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnMiLCJqb2luTW9kZWxQYXRocyIsInJlc3VsdFBhcnRzIiwiam9pbkl0ZW0iLCJwdXNoIiwiaXNBYnNvbHV0ZSIsImdldFBhdGhQYXJ0c0FzQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJBYnNvbHV0ZU1vZGVsRmllbGRQYXRoIiwiY29uc3RydWN0b3IiLCJmaWVsZE5hbWUiLCJmaWVsZCIsImlzRXF1YWxzIiwibW9kZWxQYXRoIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiLCJjcmVhdGVGcm9tU3RyaW5nIiwicGF0aFdpdGhGaWVsZE5hbWUiLCJlbmRzV2l0aCIsInJlcGxhY2UiLCJpc0FsbFRva2Vuc1Jlc29sdmVkIiwiZXZlcnkiLCJwYXRoUGFydHMiLCJsZWdhY3lQYXRoIiwiZmlsdGVyIiwicmVzb2x2ZWQiLCJnZXRQYXRoUGFydHMiLCJnZXRTaW1wbGVUb2tlbnNTdHJpY3QiLCJ0b2tlbiIsImdldFNpbXBsZVRva2Vuc0FzQXJyYXlTdHJpY3QiLCJqb2luV2l0aCIsImlzUmVzb2x2ZWQiLCJyZXNvbHZlQWxsIiwiaW5zdGFuY2UiLCJpc0NvbnRhaW5JdGVyYXRpb24iLCJpc0NvbnRhaW5DdXJyZW50SXRlcmF0aW9uIiwidG9TdHJpbmciLCJsZW5ndGgiLCJwYXRoUGFydFRvU3RyaW5nIiwiam9pbiIsIkl0ZXJhdG9yIiwiZnJvbSIsIkl0ZXJVdGlscyIsInppcCIsInQxIiwidDIiLCJnZXRIYXNoIiwiaGFzaCIsImN1cnJlbnRTdHIiLCJBcmVEaWZmZXJlbnQiLCJzdHJpbmdJbmRleCIsImNoYXJDb2RlQXQiLCJpc0luY2x1ZGVzIiwidGFyZ2V0VG9rZW5zIiwiaSIsImxlZnRQYXJ0IiwicmlnaHRQYXJ0IiwiaXNGaW5pdGUiLCJOdW1iZXIiLCJnZXRJdGVyYXRpb25SYW5rIiwiaXNFbXB0eSIsIm1hdGNoRm9yIiwiUGF0aE1hdGNoZXIiLCJtYXRjaCIsInNwbGl0QnlNdWx0aXBsaWNpdHkiLCJsYXN0U2ltcGxlUGFydHMiLCJNb2RlbFBhdGhCdWlsZGVyIiwiYXBwZW5kIiwiZW1wdHkiLCJ0b1Jlc29sdmVkUGF0aCIsIm5vcm1hbGl6ZSIsInJlc3VsdFRva2VucyIsInBhdGhQYXJ0IiwicG9wIiwidG9DdXJyZW50SXRlcmF0aW9uIiwidG9FYWNoSXRlcmF0aW9uIiwidG9BYnNvbHV0ZSIsImdldEFsbFBhcmVudFBhdGhzIiwicmVzdWx0Iiwic2tpcExhc3QiLCJ0b1BhdGgiLCJ0cmltTGFzdFN0YXJJZkxhc3RUb2tlbiIsImxhc3RJdGVtIiwibGFzdCIsInVuZGVmaW5lZCIsImdldFBhcmVudFBhdGgiLCJhcHBseUluc3RhbmNlc0RpcnR5IiwiaW5zdGFuY2VzIiwiaW5zdGFuY2VDb3VudGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLFVBQVUsR0FBR0MsTUFBTSxDQUFDQyxHQUFQLENBQVcsVUFBWCxDQUFuQjtBQUNBLE1BQU1DLGFBQWEsR0FBR0YsTUFBTSxDQUFDQyxHQUFQLENBQVcsYUFBWCxDQUF0Qjs7QUFFTyxNQUFNRSxVQUFOLENBQWlCO0FBSU0sU0FBWkMsWUFBWSxDQUFDQyxJQUFELEVBQWdGO0FBQ3RHLFdBQU9BLElBQUksS0FBS0YsVUFBVSxDQUFDRyxJQUFwQixJQUE0QkQsSUFBSSxLQUFLRixVQUFVLENBQUNJLE9BQXZEO0FBQ0g7O0FBRTBCLFNBQWJDLGFBQWEsQ0FBQ0gsSUFBRCxFQUE4QztBQUNyRSxXQUFPLE9BQU9BLElBQVAsS0FBZ0IsUUFBdkI7QUFDSDs7QUFFNEIsU0FBZkksZUFBZSxDQUFDSixJQUFELEVBQThDO0FBQ3ZFLFdBQU8sT0FBT0EsSUFBUCxLQUFnQixRQUFoQixJQUE0QixTQUFTSyxJQUFULENBQWNMLElBQWQsQ0FBbkM7QUFDSDs7QUFkbUI7OztBQUFYRixVLENBQ0tHLEksR0FBMEJQLFU7QUFEL0JJLFUsQ0FFS0ksTyxHQUFnQ0wsYTs7QUFtQjNDLFNBQVNTLFdBQVQsQ0FBcUJDLElBQXJCLEVBQWlGO0FBQ3BGLFNBQU8sT0FBT0EsSUFBUCxLQUFnQixRQUFoQixJQUE0QkEsSUFBSSxZQUFZQyxhQUFuRDtBQUNIOztBQUVNLFNBQVNDLG1CQUFULENBQTZCRixJQUE3QixFQUF5RTtBQUM1RSxTQUFPRCxXQUFXLENBQUNDLElBQUQsQ0FBWCxHQUFvQkEsSUFBSSxDQUFDRyxZQUFMLEVBQXBCLEdBQTBDSCxJQUFqRDtBQUNIOztBQUtNLFNBQVNJLHlCQUFULENBQW1DSixJ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QUFLRixZQUFMLEVBQXBCLEVBQXlDO0FBQ3JDLFVBQUkvRCxVQUFVLENBQUNDLFlBQVgsQ0FBd0JnRSxLQUF4QixLQUFrQzRELGVBQWUsR0FBR0QsU0FBUyxDQUFDbEQsTUFBbEUsRUFBMEU7QUFBQTs7QUFDdEV5QyxRQUFBQSxNQUFNLENBQUNYLE1BQVAsMEJBQWNvQixTQUFTLENBQUNDLGVBQUQsQ0FBdkIseUVBQTRDLDBCQUE1QztBQUNBQSxRQUFBQSxlQUFlO0FBQ2xCLE9BSEQsTUFHTztBQUNIVixRQUFBQSxNQUFNLENBQUNYLE1BQVAsQ0FBY3ZDLEtBQWQ7QUFDSDtBQUNKLEtBYnNGLENBY3ZGO0FBQ0E7OztBQUNBLFdBQU9rRCxNQUFNLENBQUNFLE1BQVAsRUFBUDtBQUNIOztBQUVPMUMsRUFBQUEsZ0JBQWdCLENBQUNrQyxRQUFELEVBQThCO0FBQ2xELFFBQUksT0FBT0EsUUFBUCxLQUFvQixRQUF4QixFQUFrQztBQUM5QixhQUFPQSxRQUFQO0FBQ0g7O0FBQ0QsUUFBSUEsUUFBUSxLQUFLN0csVUFBVSxDQUFDRyxJQUE1QixFQUFrQztBQUM5QixhQUFPLEdBQVA7QUFDSDs7QUFDRCxRQUFJMEcsUUFBUSxLQUFLN0csVUFBVSxDQUFDSSxPQUE1QixFQUFxQztBQUNqQyxhQUFPLEdBQVA7QUFDSDs7QUFDRCxVQUFNLElBQUkwQixLQUFKLENBQVcsZ0NBQStCLHFDQUFtQitFLFFBQW5CLENBQTZCLEVBQXZFLENBQU47QUFDSDs7QUFwVUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW5kaW5nUGF0aCwgVmlld01vZGVsRmllbGROYW1lIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgeyBjb3VudCwgSXRlclV0aWxzLCByZXZlcnNlQXJyYXkgfSBmcm9tIFwiLi4vSXRlcmFibGVVdGlsc1wiO1xuaW1wb3J0IHsgZW5zdXJlQW5kR2V0U3RyaW5nLCByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuaW1wb3J0IHsgTW9kZWxQYXRoQnVpbGRlciB9IGZyb20gXCIuL01vZGVsUGF0aEJ1aWxkZXJcIjtcbmltcG9ydCB7IFBhdGhNYXRjaGVyLCBQYXRoTWF0Y2hpbmcgfSBmcm9tIFwiLi9QYXRoTWF0Y2hlclwiO1xuaW1wb3J0IHsgSUVxdWF0YWJsZSB9IGZyb20gXCIuL0lFcXVhdGFibGVcIjtcblxuY29uc3QgRWFjaFN5bWJvbCA9IFN5bWJvbC5mb3IoXCJfX0VBQ0hfX1wiKTtcbmNvbnN0IEN1cnJlbnRTeW1ib2wgPSBTeW1ib2wuZm9yKFwiX19DVVJSRU5UX19cIik7XG5cbmV4cG9ydCBjbGFzcyBQYXRoVG9rZW5zIHtcbiAgICBwdWJsaWMgc3RhdGljIGVhY2g6IHR5cGVvZiBFYWNoU3ltYm9sID0gRWFjaFN5bWJvbDtcbiAgICBwdWJsaWMgc3RhdGljIGN1cnJlbnQ6IHR5cGVvZiBDdXJyZW50U3ltYm9sID0gQ3VycmVudFN5bWJvbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNNdWx0aVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgdHlwZW9mIEVhY2hTeW1ib2wgfCB0eXBlb2YgQ3VycmVudFN5bWJvbCB7XG4gICAgICAgIHJldHVybiBwYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2ggfHwgcGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNTaW1wbGVUb2tlbihwYXJ0OiB1bmRlZmluZWQgfCBQYXRoVG9rZW4pOiBwYXJ0IGlzIHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzSW5zdGFuY2VUb2tlbihwYXJ0OiB1bmRlZmluZWQgfCBQYXRoVG9rZW4pOiBwYXJ0IGlzIHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIiAmJiAvXlxcZCskL2kudGVzdChwYXJ0KTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFNpbXBsZVBhdGhUb2tlbiA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgUGF0aFRva2VuID0gU2ltcGxlUGF0aFRva2VuIHwgdHlwZW9mIEVhY2hTeW1ib2wgfCB0eXBlb2YgQ3VycmVudFN5bWJvbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWxQYXRoKHBhdGg6IEJpbmRpbmdQYXRoIHwgTW9kZWxQYXRoIHwgdW5rbm93bik6IHBhdGggaXMgTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gdHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgJiYgcGF0aCBpbnN0YW5jZW9mIE1vZGVsUGF0aEltcGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9MZWdhY3lQYXRoKHBhdGg6IEJpbmRpbmdQYXRoIHwgTW9kZWxQYXRoKTogQmluZGluZ1BhdGgge1xuICAgIHJldHVybiBpc01vZGVsUGF0aChwYXRoKSA/IHBhdGgudG9MZWdhY3lQYXRoKCkgOiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQWJzb2x1dE1vZGVsUGF0aDxSIGV4dGVuZHMgYm9vbGVhbiwgQSBleHRlbmRzIGJvb2xlYW4+KFxuICAgIHBhdGg6IEJpbmRpbmdQYXRoIHwgSU1vZGVsUGF0aDxSLCBBPlxuKTogSU1vZGVsUGF0aDxSLCB0cnVlPjtcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9BYnNvbHV0TW9kZWxQYXRoKHBhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVNb2RlbFBhdGgpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgcmV0dXJuIGlzTW9kZWxQYXRoKHBhdGgpID8gcGF0aCA6IGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aCwgUGF0aFRva2Vucy5lYWNoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5TW9kZWxQYXRoKCk6IFJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGgge1xuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCBmYWxzZT4oW10sIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5QWJzb2x1dGVNb2RlbFBhdGgoKTogQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIHRydWU+KFtdLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsUGF0aChwYXRoOiBzdHJpbmcsIGFic29sdXRlOiB0cnVlKTogQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2RlbFBhdGgocGF0aDogc3RyaW5nLCBhYnNvbHV0ZTogZmFsc2UpOiBSZWxhdGl2ZVJlc29sdmVkTW9kZWxQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsUGF0aChwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBcImF1dG9cIik6IFJlc29sdmVkTW9kZWxQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsUGF0aChwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBib29sZWFuIHwgXCJhdXRvXCIpOiBSZXNvbHZlZE1vZGVsUGF0aCB7XG4gICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gICAgZW5zdXJlUGxhaW5QYXRoUGFydHNEb2VzTm90Q29udGFpbk11bHRpcGxpY2l0eShwYXJ0UGFydFN0cmluZ3MpO1xuICAgIGlmIChhYnNvbHV0ZSA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCB0cnVlPihwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIGZhbHNlPihwYXJ0UGFydFN0cmluZ3MsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWJzb2x1dGUgJiYgcGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8dHJ1ZSwgdHJ1ZT4ocGFydFBhcnRTdHJpbmdzLnNsaWNlKDEpLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIGJvb2xlYW4+KHBhcnRQYXJ0U3RyaW5ncywgYWJzb2x1dGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbU1hc2socGF0aDogc3RyaW5nLCBhYnNvbHV0ZTogdHJ1ZSwgbXVsdGlwbGljaXR5U3ltYm9sOiBQYXRoVG9rZW4pOiBBYnNvbHV0ZU1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTWFzayhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBmYWxzZSwgbXVsdGlwbGljaXR5U3ltYm9sOiBQYXRoVG9rZW4pOiBSZXNvbHZlZE1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTWFzayhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBcImF1dG9cIiwgbXVsdGlwbGljaXR5U3ltYm9sOiBQYXRoVG9rZW4pOiBNb2RlbFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbU1hc2socGF0aDogc3RyaW5nLCBhYnNvbHV0ZTogYm9vbGVhbiB8IFwiYXV0b1wiLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IE1vZGVsUGF0aCB7XG4gICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIikubWFwKHggPT4gKHggPT09IFwiKlwiID8gbXVsdGlwbGljaXR5U3ltYm9sIDogeCkpO1xuICAgIGlmIChhYnNvbHV0ZSA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsKHBhcnRQYXJ0U3RyaW5ncywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChhYnNvbHV0ZSAmJiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwocGFydFBhcnRTdHJpbmdzLCBhYnNvbHV0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGg6IHN0cmluZywgbXVsdGlwbGljaXR5U3ltYm9sOiBQYXRoVG9rZW4pOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIikubWFwKHggPT4gKHggPT09IFwiKlwiID8gbXVsdGlwbGljaXR5U3ltYm9sIDogeCkpO1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwocGFydFBhcnRTdHJpbmdzLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlUGxhaW5QYXRoUGFydHNEb2VzTm90Q29udGFpbk11bHRpcGxpY2l0eShwYXJ0czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAocGFydHMuc29tZSh4ID0+IHggPT09IFwiKlwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3Qgbm90IGNvbnRhaW4gKiBzeW1ib2xcIik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWJzb2x1dGUocGF0aDogc3RyaW5nKTogQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB7XG4gICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gICAgZW5zdXJlUGxhaW5QYXRoUGFydHNEb2VzTm90Q29udGFpbk11bHRpcGxpY2l0eShwYXJ0UGFydFN0cmluZ3MpO1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCB0cnVlPihwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8dHJ1ZSwgdHJ1ZT4ocGFydFBhcnRTdHJpbmdzLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGgocGF0aDogc3RyaW5nKTogUmVsYXRpdmVSZXNvbHZlZE1vZGVsUGF0aCB7XG4gICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gICAgZW5zdXJlUGxhaW5QYXRoUGFydHNEb2VzTm90Q29udGFpbk11bHRpcGxpY2l0eShwYXJ0UGFydFN0cmluZ3MpO1xuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCBmYWxzZT4ocGFydFBhcnRTdHJpbmdzLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnModG9rZW5zOiBQYXRoVG9rZW5bXSk6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8ZmFsc2UsIHRydWU+KHRva2VucywgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zOiBzdHJpbmdbXSk6IFJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zKHRva2VuczogUGF0aFRva2VuW10pOiBSZWxhdGl2ZU1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zOiBQYXRoVG9rZW5bXSk6IFJlbGF0aXZlTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8ZmFsc2UsIGZhbHNlPih0b2tlbnMsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpvaW5Nb2RlbFBhdGhzKC4uLnBhcnRzOiBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4gfCBQYXRoVG9rZW5bXT4pOiBNb2RlbFBhdGgge1xuICAgIGxldCBhYnNvbHV0ZSA9IGZhbHNlO1xuICAgIGxldCByZXN1bHRQYXJ0czogUGF0aFRva2VuW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGpvaW5JdGVtIG9mIHBhcnRzKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygam9pbkl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goam9pbkl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kZWxQYXRoKGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgaWYgKGpvaW5JdGVtLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cyA9IFsuLi5qb2luSXRlbS5nZXRQYXRoUGFydHNBc0FycmF5KCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKC4uLmpvaW5JdGVtLmdldFBhdGhQYXJ0c0FzQXJyYXkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShqb2luSXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goLi4uam9pbkl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKFBhdGhUb2tlbnMuaXNNdWx0aVRva2VuKGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgcmVzdWx0UGFydHMucHVzaChqb2luSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwocmVzdWx0UGFydHMsIGFic29sdXRlKTtcbn1cblxuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGQ6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGg6IEFic29sdXRlTW9kZWxQYXRoLCBmaWVsZE5hbWU6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiKSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZE5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aC5pc0VxdWFscyhtb2RlbFBhdGgucGF0aCwgZWFjaEN1cnJlbnRDb2xsaXNpb24pICYmIHRoaXMuZmllbGQgPT09IG1vZGVsUGF0aC5maWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdHJpbmcocGF0aFdpdGhGaWVsZE5hbWU6IHN0cmluZyk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiRlcnJvckNvdW50XCIsIFwiXCIpKSxcbiAgICAgICAgICAgICAgICBcIiRlcnJvckNvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhXaXRoRmllbGROYW1lLmVuZHNXaXRoKFwiLiR3YXJuaW5nQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiR3YXJuaW5nQ291bnRcIiwgXCJcIikpLFxuICAgICAgICAgICAgICAgIFwiJHdhcm5pbmdDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZSksIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJGVycm9yQ291bnRcIiwgXCJcIiksIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICAgICAgXCIkZXJyb3JDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoV2l0aEZpZWxkTmFtZS5lbmRzV2l0aChcIi4kd2FybmluZ0NvdW50XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgoXG4gICAgICAgICAgICAgICAgY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiR3YXJuaW5nQ291bnRcIiwgXCJcIiksIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICAgICAgXCIkd2FybmluZ0NvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aFdpdGhGaWVsZE5hbWUsIG11bHRpcGxpY2l0eVN5bWJvbCksIFwidmFsdWVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNb2RlbFBhdGg8VFJlc29sdmVkIGV4dGVuZHMgYm9vbGVhbiwgVEFic29sdXRlIGV4dGVuZHMgYm9vbGVhbj5cbiAgICBleHRlbmRzIElFcXVhdGFibGU8SU1vZGVsUGF0aDxib29sZWFuLCBib29sZWFuPj4ge1xuICAgIHJlYWRvbmx5IHJlc29sdmVkOiBUUmVzb2x2ZWQ7XG4gICAgcmVhZG9ubHkgYWJzb2x1dGU6IFRBYnNvbHV0ZTtcblxuICAgIGlzRXF1YWxzKG1vZGVsUGF0aDogTW9kZWxQYXRoLCBlYWNoQ3VycmVudENvbGxpc2lvbj86IEVhY2hDdXJyZW50Q29sbGlzaW9uKTogYm9vbGVhbjtcbiAgICBnZXRIYXNoKGVhY2hDdXJyZW50Q29sbGlzaW9uPzogRWFjaEN1cnJlbnRDb2xsaXNpb24pOiBudW1iZXI7XG5cbiAgICBpc1Jlc29sdmVkKCk6IHRoaXMgaXMgSU1vZGVsUGF0aDx0cnVlLCBUQWJzb2x1dGU+O1xuICAgIGlzQWJzb2x1dGUoKTogdGhpcyBpcyBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgdHJ1ZT47XG4gICAgdG9BYnNvbHV0ZSgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgdHJ1ZT47XG5cbiAgICBqb2luV2l0aCguLi5wYXRoOiBzdHJpbmdbXSk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIGpvaW5XaXRoKC4uLnBhdGg6IFBhdGhUb2tlbltdKTogSU1vZGVsUGF0aDxib29sZWFuLCBUQWJzb2x1dGU+O1xuICAgIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PFJlc29sdmVkTW9kZWxQYXRoIHwgc3RyaW5nPik6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGggfCBzdHJpbmc+KTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIHRydWU+O1xuICAgIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbj4pOiBJTW9kZWxQYXRoPGJvb2xlYW4sIFRBYnNvbHV0ZT47XG5cbiAgICBnZXRQYXRoUGFydHMoKTogSXRlcmFibGU8UGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQ+PjtcbiAgICBnZXRQYXRoUGFydHNBc0FycmF5KCk6IFJlYWRvbmx5QXJyYXk8UGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQ+PjtcbiAgICBnZXRTaW1wbGVUb2tlbnNTdHJpY3QoKTogSXRlcmFibGU8U2ltcGxlUGF0aFRva2VuPjtcbiAgICBnZXRTaW1wbGVUb2tlbnNBc0FycmF5U3RyaWN0KCk6IHJlYWRvbmx5IFNpbXBsZVBhdGhUb2tlbltdO1xuXG4gICAgcmVzb2x2ZUFsbChpbnN0YW5jZTogc3RyaW5nKTogTW9kZWxQYXRoO1xuICAgIGlzQ29udGFpbkl0ZXJhdGlvbigpOiBib29sZWFuO1xuICAgIGlzQ29udGFpbkN1cnJlbnRJdGVyYXRpb24oKTogYm9vbGVhbjtcbiAgICBpc0luY2x1ZGVzKG1vZGVsUGF0aDogTW9kZWxQYXRoKTogYm9vbGVhbjtcbiAgICBnZXRJdGVyYXRpb25SYW5rKCk6IG51bWJlcjtcbiAgICBpc0VtcHR5KCk6IGJvb2xlYW47XG4gICAgbWF0Y2hGb3IobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBQYXRoTWF0Y2hpbmc7XG4gICAgc3BsaXRCeU11bHRpcGxpY2l0eSgpOiBJdGVyYWJsZTxSZXNvbHZlZE1vZGVsUGF0aCB8IHR5cGVvZiBFYWNoU3ltYm9sIHwgdHlwZW9mIEN1cnJlbnRTeW1ib2w+O1xuICAgIG5vcm1hbGl6ZSgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICB0b0N1cnJlbnRJdGVyYXRpb24oKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT47XG4gICAgdG9FYWNoSXRlcmF0aW9uKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIGdldEFsbFBhcmVudFBhdGhzKCk6IEl0ZXJhYmxlPE1vZGVsUGF0aD47XG4gICAgdHJpbUxhc3RTdGFySWZMYXN0VG9rZW4oKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT47XG4gICAgZ2V0UGFyZW50UGF0aCgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBhcHBseUluc3RhbmNlc0RpcnR5KGluc3RhbmNlczogU2ltcGxlUGF0aFRva2VuW10pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZztcbiAgICB0b0xlZ2FjeVBhdGgoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBNb2RlbFBhdGggPSBJTW9kZWxQYXRoPGJvb2xlYW4sIGJvb2xlYW4+O1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRNb2RlbFBhdGggPSBJTW9kZWxQYXRoPHRydWUsIGJvb2xlYW4+O1xuZXhwb3J0IHR5cGUgQWJzb2x1dGVNb2RlbFBhdGggPSBJTW9kZWxQYXRoPGJvb2xlYW4sIHRydWU+O1xuZXhwb3J0IHR5cGUgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCA9IElNb2RlbFBhdGg8dHJ1ZSwgdHJ1ZT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aXZlTW9kZWxQYXRoID0gSU1vZGVsUGF0aDxib29sZWFuLCBmYWxzZT47XG5leHBvcnQgdHlwZSBSZWxhdGl2ZVJlc29sdmVkTW9kZWxQYXRoID0gSU1vZGVsUGF0aDx0cnVlLCBmYWxzZT47XG5cbnR5cGUgUGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQgZXh0ZW5kcyBib29sZWFuPiA9IFRSZXNvbHZlZCBleHRlbmRzIHRydWUgPyBzdHJpbmcgOiBQYXRoVG9rZW47XG5cbnR5cGUgUGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkIGV4dGVuZHMgYm9vbGVhbj4gPSBBcnJheTxQYXRoVG9rZW5TcGVjPFRSZXNvbHZlZD4+O1xuXG50eXBlIFJlYWRvbmx5UGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkIGV4dGVuZHMgYm9vbGVhbj4gPSBSZWFkb25seUFycmF5PFBhdGhUb2tlblNwZWM8VFJlc29sdmVkPj47XG5cbmZ1bmN0aW9uIGlzQWxsVG9rZW5zUmVzb2x2ZWQ8VFJlc29sdmVkIGV4dGVuZHMgYm9vbGVhbj4odG9rZW5zOiBSZWFkb25seVBhdGhUb2tlbnNTcGVjPFRSZXNvbHZlZD4pOiBUUmVzb2x2ZWQge1xuICAgIC8vINCvINGH0YLQvi3RgtC+INC90LXQvNC+0LPRgyDRgdC+0L7QsdGA0LDQt9C40YLRjCDQutCw0Log0YLRg9GCINCy0YHRkSDRgdGC0YDQvtCz0L4g0L3QsNC/0LjRgdCw0YLRjC4uLlxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXR1cm4gdG9rZW5zLmV2ZXJ5KFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbik7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBhdGhJbXBsPFRSZXNvbHZlZCBleHRlbmRzIGJvb2xlYW4sIFRBYnNvbHV0ZSBleHRlbmRzIGJvb2xlYW4+XG4gICAgaW1wbGVtZW50cyBJRXF1YXRhYmxlPE1vZGVsUGF0aD4sIElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+XG57XG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlbnM6IFJlYWRvbmx5UGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWJzb2x1dGU6IFRBYnNvbHV0ZTtcbiAgICBwcml2YXRlIGxlZ2FjeVBhdGg6IHVuZGVmaW5lZCB8IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoUGFydHM6IFJlYWRvbmx5UGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPiwgYWJzb2x1dGU6IFRBYnNvbHV0ZSkge1xuICAgICAgICB0aGlzLnRva2VucyA9IHBhdGhQYXJ0cy5maWx0ZXIoeCA9PiB4ICE9PSBcIlwiKTtcbiAgICAgICAgdGhpcy5hYnNvbHV0ZSA9IGFic29sdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVzb2x2ZWQoKTogVFJlc29sdmVkIHtcbiAgICAgICAgcmV0dXJuIGlzQWxsVG9rZW5zUmVzb2x2ZWQodGhpcy50b2tlbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXRoUGFydHMoKTogSXRlcmFibGU8UGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGF0aFBhcnRzQXNBcnJheSgpOiBSZWFkb25seUFycmF5PFBhdGhUb2tlblNwZWM8VFJlc29sdmVkPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgcHVibGljICpnZXRTaW1wbGVUb2tlbnNTdHJpY3QoKTogSXRlcmFibGU8U2ltcGxlUGF0aFRva2VuPiB7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmICghUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKHRva2VuKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBub3QgY29udGFpbiBzcGVjIHRva2Vuc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNpbXBsZVRva2Vuc0FzQXJyYXlTdHJpY3QoKTogcmVhZG9ubHkgU2ltcGxlUGF0aFRva2VuW10ge1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMudG9rZW5zKSB7XG4gICAgICAgICAgICBpZiAoIVBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3Qgbm90IGNvbnRhaW4gc3BlYyB0b2tlbnNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC10L3RgtC40YDRg9C10YIg0YfRgtC+INCx0YPQtNGD0YIg0YLQvtC70YzQutC+IFNpbXBsZVBhdGhUb2tlbi5cbiAgICAgICAgLy8g0JLRgdC1IG1hcCDQuCBmaWx0ZXIg0YPQsdGA0LDQvdGLINC00LvRjyDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0LhcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IHN0cmluZ1tdKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT47XG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IFBhdGhUb2tlbltdKTogSU1vZGVsUGF0aDxib29sZWFuLCBUQWJzb2x1dGU+O1xuICAgIHB1YmxpYyBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxSZXNvbHZlZE1vZGVsUGF0aCB8IHN0cmluZz4pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBwdWJsaWMgam9pbldpdGgoLi4ucGF0aDogQXJyYXk8QWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB8IHN0cmluZz4pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgdHJ1ZT47XG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbj4pOiBJTW9kZWxQYXRoPGJvb2xlYW4sIFRBYnNvbHV0ZT47XG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbj4pOiBJTW9kZWxQYXRoPGJvb2xlYW4sIGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGpvaW5Nb2RlbFBhdGhzKHRoaXMsIC4uLnBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1Jlc29sdmVkKCk6IHRoaXMgaXMgSU1vZGVsUGF0aDx0cnVlLCBUQWJzb2x1dGU+IHtcbiAgICAgICAgcmV0dXJuIGlzQWxsVG9rZW5zUmVzb2x2ZWQodGhpcy50b2tlbnMpO1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuZXZlcnkoUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzb2x2ZUFsbChpbnN0YW5jZTogc3RyaW5nKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMubWFwKHRva2VuID0+IHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbCh0b2tlbnMsIHRoaXMuYWJzb2x1dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0NvbnRhaW5JdGVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5zb21lKHggPT4geCA9PT0gUGF0aFRva2Vucy5lYWNoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDb250YWluQ3VycmVudEl0ZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNvbWUoeCA9PiB4ID09PSBQYXRoVG9rZW5zLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Fic29sdXRlKCk6IHRoaXMgaXMgSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIHRydWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5hYnNvbHV0ZSA/IFwiL1wiIDogXCJcIikgKyB0aGlzLnRva2Vucy5tYXAoeCA9PiB0aGlzLnBhdGhQYXJ0VG9TdHJpbmcoeCkpLmpvaW4oXCIvXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0xlZ2FjeVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVnYWN5UGF0aCA/PyAodGhpcy5sZWdhY3lQYXRoID0gdGhpcy50b2tlbnMubWFwKHggPT4gdGhpcy5wYXRoUGFydFRvU3RyaW5nKHgpKS5qb2luKFwiL1wiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IE1vZGVsUGF0aCxcbiAgICAgICAgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZWFjaEN1cnJlbnRDb2xsaXNpb24gPT09IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvTGVnYWN5UGF0aCgpID09PSBtb2RlbFBhdGgudG9MZWdhY3lQYXRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNBYnNvbHV0ZSgpID09PSBtb2RlbFBhdGguaXNBYnNvbHV0ZSgpICYmXG4gICAgICAgICAgICAgICAgSXRlcmF0b3IuZnJvbShJdGVyVXRpbHMuemlwKHRoaXMuZ2V0UGF0aFBhcnRzKCksIG1vZGVsUGF0aC5nZXRQYXRoUGFydHMoKSkpLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICAoW3QxLCB0Ml0pID0+IHQxID09PSB0MlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGB0LXQs9C00LAg0YbQtdC70L7QtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDQsdC10LfQt9C90LDQutC+0LLQvtC1IDMyLdCx0LjRgtC90L7QtSDRh9C40YHQu9C+XG4gICAgICovXG4gICAgcHVibGljIGdldEhhc2goZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBoYXNoID0gNTM4MTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiByZXZlcnNlQXJyYXkodGhpcy50b2tlbnMpKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0cjogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gdG9rZW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlYWNoQ3VycmVudENvbGxpc2lvbiA9PT0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlRGlmZmVyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHIgPSB0b2tlbiA9PT0gUGF0aFRva2Vucy5lYWNoID8gXCIqXCIgOiBcIiFcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gXCIqXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHN0cmluZ0luZGV4ID0gY3VycmVudFN0ci5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoc3RyaW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgICAgIGhhc2ggPSAoaGFzaCAqIDMzKSBeIGN1cnJlbnRTdHIuY2hhckNvZGVBdCgtLXN0cmluZ0luZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAgICB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgSmF2YVNjcmlwdCBkb2VzIGJpdHdpc2Ugb3BlcmF0aW9ucyAobGlrZSBYT1IsIGFib3ZlKSBvbiAzMi1iaXQgc2lnbmVkXG4gICAgICAgICAgICBpbnRlZ2Vycy4gU2luY2Ugd2Ugd2FudCB0aGUgcmVzdWx0cyB0byBiZSBhbHdheXMgcG9zaXRpdmUsIGNvbnZlcnQgdGhlXG4gICAgICAgICAgICBzaWduZWQgaW50IHRvIGFuIHVuc2lnbmVkIGJ5IGRvaW5nIGFuIHVuc2lnbmVkIGJpdHNoaWZ0LlxuICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGhhc2ggPj4+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSW5jbHVkZXMobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0VG9rZW5zID0gbW9kZWxQYXRoLmdldFBhdGhQYXJ0c0FzQXJyYXkoKTtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zLmxlbmd0aCAhPT0gdGFyZ2V0VG9rZW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXJ0ID0gdGhpcy50b2tlbnNbaV07XG4gICAgICAgICAgICBjb25zdCByaWdodFBhcnQgPSB0YXJnZXRUb2tlbnNbaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxlZnRQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByaWdodFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRQYXJ0ICE9PSByaWdodFBhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChsZWZ0UGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50IHx8IGxlZnRQYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJpZ2h0UGFydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKE51bWJlcihyaWdodFBhcnQpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyaWdodFBhcnQgIT09IFBhdGhUb2tlbnMuY3VycmVudCAmJiByaWdodFBhcnQgIT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlcmF0aW9uUmFuaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gY291bnQoSXRlcmF0b3IuZnJvbSh0aGlzLnRva2VucykuZmlsdGVyKHggPT4geCA9PT0gUGF0aFRva2Vucy5lYWNoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoRm9yKG1vZGVsUGF0aDogTW9kZWxQYXRoKTogUGF0aE1hdGNoaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbWF0Y2ggbm9uIGFic29sdXRlIHBhdGggJyR7dGhpcy50b1N0cmluZygpfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vZGVsUGF0aC5pc0Fic29sdXRlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1hdGNoIG5vbiBhYnNvbHV0ZSBwYXRoICcke21vZGVsUGF0aC50b1N0cmluZygpfSdgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGF0aE1hdGNoZXIubWF0Y2godGhpcy50b2tlbnMsIG1vZGVsUGF0aC5nZXRQYXRoUGFydHNBc0FycmF5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyAqc3BsaXRCeU11bHRpcGxpY2l0eSgpOiBJdGVyYWJsZTxSZXNvbHZlZE1vZGVsUGF0aCB8IHR5cGVvZiBFYWNoU3ltYm9sIHwgdHlwZW9mIEN1cnJlbnRTeW1ib2w+IHtcbiAgICAgICAgbGV0IGxhc3RTaW1wbGVQYXJ0cyA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKHRoaXMuaXNBYnNvbHV0ZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0aGlzLnRva2Vucykge1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICBsYXN0U2ltcGxlUGFydHMuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFsYXN0U2ltcGxlUGFydHMuZW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgbGFzdFNpbXBsZVBhcnRzLnRvUmVzb2x2ZWRQYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RTaW1wbGVQYXJ0cyA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsYXN0U2ltcGxlUGFydHMuZW1wdHkpIHtcbiAgICAgICAgICAgIHlpZWxkIGxhc3RTaW1wbGVQYXJ0cy50b1Jlc29sdmVkUGF0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5vcm1hbGl6ZSgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdFRva2VuczogUGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPiA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIHRoaXMudG9rZW5zKSB7XG4gICAgICAgICAgICBpZiAocGF0aFBhcnQgPT09IFwiLi5cIikge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0VG9rZW5zLnBvcCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGlzIGludmFsaWQgJyR7dGhpcy50b1N0cmluZygpfSdgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFRva2Vucy5wdXNoKFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXRoUGFydCA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFRva2Vucy5wdXNoKHBhdGhQYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8VFJlc29sdmVkLCBUQWJzb2x1dGU+KHJlc3VsdFRva2VucywgdGhpcy5hYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0KHQv9C10YbQuNGE0LjQutCw0YLQvtGA0Ysg0LzQvdC+0LbQtdGB0YLQstC10L3QvdC+0YHRgtC4IEVhY2gg0LfQsNC80LXQvdGP0LXRgiDQvdCwIEN1cnJlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DdXJyZW50SXRlcmF0aW9uKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5PVEUg0KLRg9GCINC90LUg0L/QvtC70YPRh9Cw0LXRgtGB0Y8g0L3QsNC70L7QttC40YLRjCDQtNC40YHQutGA0LjQvNC40L3QsNGC0L7RgFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgY29uc3QgcGF0aFBhcnRzOiBQYXRoVG9rZW5zU3BlYzxUUmVzb2x2ZWQ+ID0gdGhpcy50b2tlbnMubWFwKHggPT5cbiAgICAgICAgICAgICAgICB4ID09PSBQYXRoVG9rZW5zLmVhY2ggPyBQYXRoVG9rZW5zLmN1cnJlbnQgOiB4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPFRSZXNvbHZlZCwgVEFic29sdXRlPihwYXRoUGFydHMsIHRoaXMuYWJzb2x1dGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRvRWFjaEl0ZXJhdGlvbigpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPiB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzb2x2ZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOT1RFINCi0YPRgiDQvdC1INC/0L7Qu9GD0YfQsNC10YLRgdGPINC90LDQu9C+0LbQuNGC0Ywg0LTQuNGB0LrRgNC40LzQuNC90LDRgtC+0YBcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGNvbnN0IHBhdGhQYXJ0czogUGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPiA9IHRoaXMudG9rZW5zLm1hcCh4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gUGF0aFRva2Vucy5jdXJyZW50ID8gUGF0aFRva2Vucy5lYWNoIDogeFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ocGF0aFBhcnRzLCB0aGlzLmFic29sdXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0Fic29sdXRlKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCB0cnVlPiB7XG4gICAgICAgIGlmICghdGhpcy5hYnNvbHV0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoICcke3RoaXMudG9MZWdhY3lQYXRoKCl9IGlzIG5vdCBhYnNvbHV0ZSdgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8VFJlc29sdmVkLCB0cnVlPih0aGlzLnRva2VucywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljICpnZXRBbGxQYXJlbnRQYXRocygpOiBJdGVyYWJsZTxNb2RlbFBhdGg+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1vZGVsUGF0aEJ1aWxkZXIodGhpcy5pc0Fic29sdXRlKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIEl0ZXJVdGlscy5za2lwTGFzdCh0aGlzLmdldFBhdGhQYXJ0cygpLCAxKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgICAgICB5aWVsZCByZXN1bHQudG9QYXRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdHJpbUxhc3RTdGFySWZMYXN0VG9rZW4oKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ge1xuICAgICAgICBjb25zdCBsYXN0SXRlbSA9IEl0ZXJVdGlscy5sYXN0KHRoaXMudG9rZW5zKTtcbiAgICAgICAgaWYgKGxhc3RJdGVtICE9IHVuZGVmaW5lZCAmJiBQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbihsYXN0SXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbCh0aGlzLnRva2Vucy5zbGljZSgwLCAtMSksIHRoaXMuYWJzb2x1dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJlbnRQYXRoKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1vZGVsUGF0aEJ1aWxkZXIodGhpcy5hYnNvbHV0ZSk7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgSXRlclV0aWxzLnNraXBMYXN0KHRoaXMuZ2V0UGF0aFBhcnRzKCksIDEpKSB7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDQotGD0YIg0L/QvtC70YPRh9Cw0LXRgtGB0Y8g0YLQsNC6LCDRh9GC0L4g0L/QviDQtNGA0YPQs9C+0LzRgyDQvdC40LrQsNC6XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1BhdGgoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHlJbnN0YW5jZXNEaXJ0eShpbnN0YW5jZXM6IFNpbXBsZVBhdGhUb2tlbltdKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ge1xuICAgICAgICBpZiAodGhpcy5pc1Jlc29sdmVkKCkgfHwgaW5zdGFuY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluc3RhbmNlQ291bnRlciA9IDA7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKHRydWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMuZ2V0UGF0aFBhcnRzKCkpIHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbih0b2tlbikgJiYgaW5zdGFuY2VDb3VudGVyIDwgaW5zdGFuY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5zdGFuY2VzW2luc3RhbmNlQ291bnRlcl0gPz8gcmVqZWN0KCkpO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlQ291bnRlcisrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDQotGD0YIg0L/QvtC70YPRh9Cw0LXRgtGB0Y8g0YLQsNC6LCDRh9GC0L4g0L/QviDQtNGA0YPQs9C+0LzRgyDQvdC40LrQsNC6XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1BhdGgoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhdGhQYXJ0VG9TdHJpbmcocGF0aFBhcnQ6IFBhdGhUb2tlbik6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoUGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFBhcnQgPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoUGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gXCIqXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBhdGggcGFydCBzcGVjaWZpZWQ6ICR7ZW5zdXJlQW5kR2V0U3RyaW5nKHBhdGhQYXJ0KX1gKTtcbiAgICB9XG59XG4iXX0=
598
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoLnRzIl0sIm5hbWVzIjpbIkVhY2hTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJDdXJyZW50U3ltYm9sIiwiUGF0aFRva2VucyIsImlzTXVsdGlUb2tlbiIsInBhcnQiLCJlYWNoIiwiY3VycmVudCIsImlzU2ltcGxlVG9rZW4iLCJpc0luc3RhbmNlVG9rZW4iLCJ0ZXN0IiwiaXNNb2RlbFBhdGgiLCJwYXRoIiwiTW9kZWxQYXRoSW1wbCIsImNvbnZlcnRUb0xlZ2FjeVBhdGgiLCJ0b0xlZ2FjeVBhdGgiLCJjb252ZXJ0VG9BYnNvbHV0TW9kZWxQYXRoIiwiY3JlYXRlQWJzb2x1dGVGcm9tTWFzayIsImVtcHR5TW9kZWxQYXRoIiwiZW1wdHlBYnNvbHV0ZU1vZGVsUGF0aCIsImNyZWF0ZU1vZGVsUGF0aCIsImFic29sdXRlIiwicGFydFBhcnRTdHJpbmdzIiwic3BsaXQiLCJlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5Iiwic3RhcnRzV2l0aCIsInNsaWNlIiwiY3JlYXRlRnJvbU1hc2siLCJtdWx0aXBsaWNpdHlTeW1ib2wiLCJtYXAiLCJ4IiwicGFydHMiLCJzb21lIiwiRXJyb3IiLCJjcmVhdGVBYnNvbHV0ZSIsImNyZWF0ZVJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGgiLCJjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnMiLCJ0b2tlbnMiLCJjcmVhdGVBYnNvbHV0ZVJlc29sdmVkRnJvbVRva2VucyIsImNyZWF0ZVJlbGF0aXZlRnJvbVRva2VucyIsImpvaW5Nb2RlbFBhdGhzIiwicmVzdWx0UGFydHMiLCJqb2luSXRlbSIsInB1c2giLCJpc0Fic29sdXRlIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsIkFic29sdXRlTW9kZWxGaWVsZFBhdGgiLCJjb25zdHJ1Y3RvciIsImZpZWxkTmFtZSIsImZpZWxkIiwiaXNFcXVhbHMiLCJtb2RlbFBhdGgiLCJlYWNoQ3VycmVudENvbGxpc2lvbiIsIkVhY2hDdXJyZW50Q29sbGlzaW9uIiwiQXJlU2FtZSIsImNyZWF0ZUZyb21TdHJpbmciLCJwYXRoV2l0aEZpZWxkTmFtZSIsImVuZHNXaXRoIiwicmVwbGFjZSIsImlzQWxsVG9rZW5zUmVzb2x2ZWQiLCJldmVyeSIsInBhdGhQYXJ0cyIsImxlZ2FjeVBhdGgiLCJmaWx0ZXIiLCJyZXNvbHZlZCIsImdldFBhdGhQYXJ0cyIsImdldFNpbXBsZVRva2Vuc1N0cmljdCIsInRva2VuIiwiZ2V0U2ltcGxlVG9rZW5zQXNBcnJheVN0cmljdCIsImpvaW5XaXRoIiwiaXNSZXNvbHZlZCIsInJlc29sdmVBbGwiLCJpbnN0YW5jZSIsImlzQ29udGFpbkl0ZXJhdGlvbiIsImlzQ29udGFpbkN1cnJlbnRJdGVyYXRpb24iLCJnZXRMYXN0TGlzdFBhdGgiLCJsYXN0SXRlcmF0aW9uSW5kZXgiLCJsYXN0SW5kZXhPZiIsInRvU3RyaW5nIiwibGVuZ3RoIiwicGF0aFBhcnRUb1N0cmluZyIsImpvaW4iLCJJdGVyYXRvciIsImZyb20iLCJJdGVyVXRpbHMiLCJ6aXAiLCJ0MSIsInQyIiwiZ2V0SGFzaCIsImhhc2giLCJjdXJyZW50U3RyIiwiQXJlRGlmZmVyZW50Iiwic3RyaW5nSW5kZXgiLCJjaGFyQ29kZUF0IiwiaXNJbmNsdWRlcyIsInRhcmdldFRva2VucyIsImkiLCJsZWZ0UGFydCIsInJpZ2h0UGFydCIsImlzRmluaXRlIiwiTnVtYmVyIiwiZ2V0SXRlcmF0aW9uUmFuayIsImlzRW1wdHkiLCJtYXRjaEZvciIsIlBhdGhNYXRjaGVyIiwibWF0Y2giLCJzcGxpdEJ5TXVsdGlwbGljaXR5IiwibGFzdFNpbXBsZVBhcnRzIiwiTW9kZWxQYXRoQnVpbGRlciIsImFwcGVuZCIsImVtcHR5IiwidG9SZXNvbHZlZFBhdGgiLCJub3JtYWxpemUiLCJyZXN1bHRUb2tlbnMiLCJwYXRoUGFydCIsInBvcCIsInRvQ3VycmVudEl0ZXJhdGlvbiIsInRvRWFjaEl0ZXJhdGlvbiIsInRvQWJzb2x1dGUiLCJnZXRBbGxQYXJlbnRQYXRocyIsInJlc3VsdCIsInNraXBMYXN0IiwidG9QYXRoIiwidHJpbUxhc3RTdGFySWZMYXN0VG9rZW4iLCJsYXN0SXRlbSIsImxhc3QiLCJ1bmRlZmluZWQiLCJnZXRQYXJlbnRQYXRoIiwiYXBwbHlJbnN0YW5jZXNEaXJ0eSIsImluc3RhbmNlcyIsImluc3RhbmNlQ291bnRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsVUFBVSxHQUFHQyxNQUFNLENBQUNDLEdBQVAsQ0FBVyxVQUFYLENBQW5CO0FBQ0EsTUFBTUMsYUFBYSxHQUFHRixNQUFNLENBQUNDLEdBQVAsQ0FBVyxhQUFYLENBQXRCOztBQUVPLE1BQU1FLFVBQU4sQ0FBaUI7QUFJTSxTQUFaQyxZQUFZLENBQUNDLElBQUQsRUFBZ0Y7QUFDdEcsV0FBT0EsSUFBSSxLQUFLRixVQUFVLENBQUNHLElBQXBCLElBQTRCRCxJQUFJLEtBQUtGLFVBQVUsQ0FBQ0ksT0FBdkQ7QUFDSDs7QUFFMEIsU0FBYkMsYUFBYSxDQUFDSCxJQUFELEVBQThDO0FBQ3JFLFdBQU8sT0FBT0EsSUFBUCxLQUFnQixRQUF2QjtBQUNIOztBQUU0QixTQUFmSSxlQUFlLENBQUNKLElBQUQsRUFBOEM7QUFDdkUsV0FBTyxPQUFPQSxJQUFQLEtBQWdCLFFBQWhCLElBQTRCLFNBQVNLLElBQVQsQ0FBY0wsSUFBZCxDQUFuQztBQUNIOztBQWRtQjs7O0FBQVhGLFUsQ0FDS0csSSxHQUEwQlAsVTtBQUQvQkksVSxDQUVLSSxPLEdBQWdDTCxhOztBQW1CM0MsU0FBU1MsV0FBVCxDQUFxQkMsSUFBckIsRUFBaUY7QUFDcEYsU0FBTyxPQUFPQSxJQUFQLEtBQWdCLFFBQWhCLElBQTRCQSxJQUFJLFlBQVlDLGFBQW5EO0FBQ0g7O0FBRU0sU0FBU0MsbUJBQVQsQ0FBNkJGLElBQTdCLEVBQXlFO0FBQzVFLFNBQU9ELFdBQVcs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QUFDckMsVUFBSWhFLFVBQVUsQ0FBQ0MsWUFBWCxDQUF3QmlFLEtBQXhCLEtBQWtDK0QsZUFBZSxHQUFHRCxTQUFTLENBQUNsRCxNQUFsRSxFQUEwRTtBQUFBOztBQUN0RXlDLFFBQUFBLE1BQU0sQ0FBQ1gsTUFBUCwwQkFBY29CLFNBQVMsQ0FBQ0MsZUFBRCxDQUF2Qix5RUFBNEMsMEJBQTVDO0FBQ0FBLFFBQUFBLGVBQWU7QUFDbEIsT0FIRCxNQUdPO0FBQ0hWLFFBQUFBLE1BQU0sQ0FBQ1gsTUFBUCxDQUFjMUMsS0FBZDtBQUNIO0FBQ0osS0Fic0YsQ0FjdkY7QUFDQTs7O0FBQ0EsV0FBT3FELE1BQU0sQ0FBQ0UsTUFBUCxFQUFQO0FBQ0g7O0FBRU8xQyxFQUFBQSxnQkFBZ0IsQ0FBQ2tDLFFBQUQsRUFBOEI7QUFDbEQsUUFBSSxPQUFPQSxRQUFQLEtBQW9CLFFBQXhCLEVBQWtDO0FBQzlCLGFBQU9BLFFBQVA7QUFDSDs7QUFDRCxRQUFJQSxRQUFRLEtBQUtqSCxVQUFVLENBQUNHLElBQTVCLEVBQWtDO0FBQzlCLGFBQU8sR0FBUDtBQUNIOztBQUNELFFBQUk4RyxRQUFRLEtBQUtqSCxVQUFVLENBQUNJLE9BQTVCLEVBQXFDO0FBQ2pDLGFBQU8sR0FBUDtBQUNIOztBQUNELFVBQU0sSUFBSTBCLEtBQUosQ0FBVyxnQ0FBK0IscUNBQW1CbUYsUUFBbkIsQ0FBNkIsRUFBdkUsQ0FBTjtBQUNIOztBQS9VTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpbmRpbmdQYXRoLCBWaWV3TW9kZWxGaWVsZE5hbWUgfSBmcm9tIFwiLi4vLi4vRW5naW5lL3NyYy9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB7IGNvdW50LCBJdGVyVXRpbHMsIHJldmVyc2VBcnJheSB9IGZyb20gXCIuLi9JdGVyYWJsZVV0aWxzXCI7XG5pbXBvcnQgeyBlbnN1cmVBbmRHZXRTdHJpbmcsIHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBFYWNoQ3VycmVudENvbGxpc2lvbiB9IGZyb20gXCIuL0VhY2hDdXJyZW50Q29sbGlzaW9uXCI7XG5pbXBvcnQgeyBNb2RlbFBhdGhCdWlsZGVyIH0gZnJvbSBcIi4vTW9kZWxQYXRoQnVpbGRlclwiO1xuaW1wb3J0IHsgUGF0aE1hdGNoZXIsIFBhdGhNYXRjaGluZyB9IGZyb20gXCIuL1BhdGhNYXRjaGVyXCI7XG5pbXBvcnQgeyBJRXF1YXRhYmxlIH0gZnJvbSBcIi4vSUVxdWF0YWJsZVwiO1xuXG5jb25zdCBFYWNoU3ltYm9sID0gU3ltYm9sLmZvcihcIl9fRUFDSF9fXCIpO1xuY29uc3QgQ3VycmVudFN5bWJvbCA9IFN5bWJvbC5mb3IoXCJfX0NVUlJFTlRfX1wiKTtcblxuZXhwb3J0IGNsYXNzIFBhdGhUb2tlbnMge1xuICAgIHB1YmxpYyBzdGF0aWMgZWFjaDogdHlwZW9mIEVhY2hTeW1ib2wgPSBFYWNoU3ltYm9sO1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudDogdHlwZW9mIEN1cnJlbnRTeW1ib2wgPSBDdXJyZW50U3ltYm9sO1xuXG4gICAgcHVibGljIHN0YXRpYyBpc011bHRpVG9rZW4ocGFydDogdW5kZWZpbmVkIHwgUGF0aFRva2VuKTogcGFydCBpcyB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sIHtcbiAgICAgICAgcmV0dXJuIHBhcnQgPT09IFBhdGhUb2tlbnMuZWFjaCB8fCBwYXJ0ID09PSBQYXRoVG9rZW5zLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc1NpbXBsZVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNJbnN0YW5jZVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiICYmIC9eXFxkKyQvaS50ZXN0KHBhcnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgU2ltcGxlUGF0aFRva2VuID0gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBQYXRoVG9rZW4gPSBTaW1wbGVQYXRoVG9rZW4gfCB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNb2RlbFBhdGgocGF0aDogQmluZGluZ1BhdGggfCBNb2RlbFBhdGggfCB1bmtub3duKTogcGF0aCBpcyBNb2RlbFBhdGgge1xuICAgIHJldHVybiB0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIiAmJiBwYXRoIGluc3RhbmNlb2YgTW9kZWxQYXRoSW1wbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0xlZ2FjeVBhdGgocGF0aDogQmluZGluZ1BhdGggfCBNb2RlbFBhdGgpOiBCaW5kaW5nUGF0aCB7XG4gICAgcmV0dXJuIGlzTW9kZWxQYXRoKHBhdGgpID8gcGF0aC50b0xlZ2FjeVBhdGgoKSA6IHBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9BYnNvbHV0TW9kZWxQYXRoPFIgZXh0ZW5kcyBib29sZWFuLCBBIGV4dGVuZHMgYm9vbGVhbj4oXG4gICAgcGF0aDogQmluZGluZ1BhdGggfCBJTW9kZWxQYXRoPFIsIEE+XG4pOiBJTW9kZWxQYXRoPFIsIHRydWU+O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Fic29sdXRNb2RlbFBhdGgocGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZU1vZGVsUGF0aCk6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gaXNNb2RlbFBhdGgocGF0aCkgPyBwYXRoIDogY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhwYXRoLCBQYXRoVG9rZW5zLmVhY2gpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlNb2RlbFBhdGgoKTogUmVsYXRpdmVSZXNvbHZlZE1vZGVsUGF0aCB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIGZhbHNlPihbXSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlBYnNvbHV0ZU1vZGVsUGF0aCgpOiBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8dHJ1ZSwgdHJ1ZT4oW10sIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9kZWxQYXRoKHBhdGg6IHN0cmluZywgYWJzb2x1dGU6IHRydWUpOiBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsUGF0aChwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBmYWxzZSk6IFJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9kZWxQYXRoKHBhdGg6IHN0cmluZywgYWJzb2x1dGU6IFwiYXV0b1wiKTogUmVzb2x2ZWRNb2RlbFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9kZWxQYXRoKHBhdGg6IHN0cmluZywgYWJzb2x1dGU6IGJvb2xlYW4gfCBcImF1dG9cIik6IFJlc29sdmVkTW9kZWxQYXRoIHtcbiAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgICBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgaWYgKGFic29sdXRlID09PSBcImF1dG9cIikge1xuICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIHRydWU+KHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8dHJ1ZSwgZmFsc2U+KHBhcnRQYXJ0U3RyaW5ncywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChhYnNvbHV0ZSAmJiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCB0cnVlPihwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8dHJ1ZSwgYm9vbGVhbj4ocGFydFBhcnRTdHJpbmdzLCBhYnNvbHV0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTWFzayhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiB0cnVlLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyb21NYXNrKHBhdGg6IHN0cmluZywgYWJzb2x1dGU6IGZhbHNlLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IFJlc29sdmVkTW9kZWxQYXRoO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyb21NYXNrKHBhdGg6IHN0cmluZywgYWJzb2x1dGU6IFwiYXV0b1wiLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IE1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTWFzayhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBib29sZWFuIHwgXCJhdXRvXCIsIG11bHRpcGxpY2l0eVN5bWJvbDogUGF0aFRva2VuKTogTW9kZWxQYXRoIHtcbiAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKS5tYXAoeCA9PiAoeCA9PT0gXCIqXCIgPyBtdWx0aXBsaWNpdHlTeW1ib2wgOiB4KSk7XG4gICAgaWYgKGFic29sdXRlID09PSBcImF1dG9cIikge1xuICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwocGFydFBhcnRTdHJpbmdzLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFic29sdXRlICYmIHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbChwYXJ0UGFydFN0cmluZ3MsIGFic29sdXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aDogc3RyaW5nLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKS5tYXAoeCA9PiAoeCA9PT0gXCIqXCIgPyBtdWx0aXBsaWNpdHlTeW1ib2wgOiB4KSk7XG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbChwYXJ0UGFydFN0cmluZ3MsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmIChwYXJ0cy5zb21lKHggPT4geCA9PT0gXCIqXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBub3QgY29udGFpbiAqIHN5bWJvbFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIHtcbiAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgICBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIHRydWU+KHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDx0cnVlLCB0cnVlPihwYXJ0UGFydFN0cmluZ3MsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVsYXRpdmVSZXNvbHZlZE1vZGVsUGF0aChwYXRoOiBzdHJpbmcpOiBSZWxhdGl2ZVJlc29sdmVkTW9kZWxQYXRoIHtcbiAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgICBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIGZhbHNlPihwYXJ0UGFydFN0cmluZ3MsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFic29sdXRlRnJvbVRva2Vucyh0b2tlbnM6IFBhdGhUb2tlbltdKTogQWJzb2x1dGVNb2RlbFBhdGgge1xuICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDxmYWxzZSwgdHJ1ZT4odG9rZW5zLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFic29sdXRlUmVzb2x2ZWRGcm9tVG9rZW5zKHRva2Vuczogc3RyaW5nW10pOiBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIHtcbiAgICBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHRva2Vucyk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPHRydWUsIHRydWU+KHRva2VucywgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zOiByZWFkb25seSBzdHJpbmdbXSk6IFJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGg7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zKHRva2VuczogcmVhZG9ubHkgUGF0aFRva2VuW10pOiBSZWxhdGl2ZU1vZGVsUGF0aDtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zOiByZWFkb25seSBQYXRoVG9rZW5bXSk6IFJlbGF0aXZlTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8ZmFsc2UsIGZhbHNlPih0b2tlbnMsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpvaW5Nb2RlbFBhdGhzKC4uLnBhcnRzOiBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4gfCBQYXRoVG9rZW5bXT4pOiBNb2RlbFBhdGgge1xuICAgIGxldCBhYnNvbHV0ZSA9IGZhbHNlO1xuICAgIGxldCByZXN1bHRQYXJ0czogUGF0aFRva2VuW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGpvaW5JdGVtIG9mIHBhcnRzKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygam9pbkl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goam9pbkl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kZWxQYXRoKGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgaWYgKGpvaW5JdGVtLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cyA9IFsuLi5qb2luSXRlbS5nZXRQYXRoUGFydHNBc0FycmF5KCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKC4uLmpvaW5JdGVtLmdldFBhdGhQYXJ0c0FzQXJyYXkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShqb2luSXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goLi4uam9pbkl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKFBhdGhUb2tlbnMuaXNNdWx0aVRva2VuKGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgcmVzdWx0UGFydHMucHVzaChqb2luSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwocmVzdWx0UGFydHMsIGFic29sdXRlKTtcbn1cblxuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGQ6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGg6IEFic29sdXRlTW9kZWxQYXRoLCBmaWVsZE5hbWU6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiKSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZE5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aC5pc0VxdWFscyhtb2RlbFBhdGgucGF0aCwgZWFjaEN1cnJlbnRDb2xsaXNpb24pICYmIHRoaXMuZmllbGQgPT09IG1vZGVsUGF0aC5maWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdHJpbmcocGF0aFdpdGhGaWVsZE5hbWU6IHN0cmluZyk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiRlcnJvckNvdW50XCIsIFwiXCIpKSxcbiAgICAgICAgICAgICAgICBcIiRlcnJvckNvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhXaXRoRmllbGROYW1lLmVuZHNXaXRoKFwiLiR3YXJuaW5nQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiR3YXJuaW5nQ291bnRcIiwgXCJcIikpLFxuICAgICAgICAgICAgICAgIFwiJHdhcm5pbmdDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChjcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZSksIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJGVycm9yQ291bnRcIiwgXCJcIiksIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICAgICAgXCIkZXJyb3JDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoV2l0aEZpZWxkTmFtZS5lbmRzV2l0aChcIi4kd2FybmluZ0NvdW50XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgoXG4gICAgICAgICAgICAgICAgY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiR3YXJuaW5nQ291bnRcIiwgXCJcIiksIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICAgICAgXCIkd2FybmluZ0NvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhXaXRoRmllbGROYW1lLmVuZHNXaXRoKFwiLmVycm9yc0NvdW50XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgoXG4gICAgICAgICAgICAgICAgY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLmVycm9yc0NvdW50XCIsIFwiXCIpLCBtdWx0aXBsaWNpdHlTeW1ib2wpLFxuICAgICAgICAgICAgICAgIFwiZXJyb3JzQ291bnRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIud2FybmluZ3NDb3VudFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKFxuICAgICAgICAgICAgICAgIGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aFdpdGhGaWVsZE5hbWUucmVwbGFjZShcIi53YXJuaW5nc0NvdW50XCIsIFwiXCIpLCBtdWx0aXBsaWNpdHlTeW1ib2wpLFxuICAgICAgICAgICAgICAgIFwid2FybmluZ3NDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGhXaXRoRmllbGROYW1lLCBtdWx0aXBsaWNpdHlTeW1ib2wpLCBcInZhbHVlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTW9kZWxQYXRoPFRSZXNvbHZlZCBleHRlbmRzIGJvb2xlYW4sIFRBYnNvbHV0ZSBleHRlbmRzIGJvb2xlYW4+XG4gICAgZXh0ZW5kcyBJRXF1YXRhYmxlPElNb2RlbFBhdGg8Ym9vbGVhbiwgYm9vbGVhbj4+IHtcbiAgICByZWFkb25seSByZXNvbHZlZDogVFJlc29sdmVkO1xuICAgIHJlYWRvbmx5IGFic29sdXRlOiBUQWJzb2x1dGU7XG5cbiAgICBpc0VxdWFscyhtb2RlbFBhdGg6IE1vZGVsUGF0aCwgZWFjaEN1cnJlbnRDb2xsaXNpb24/OiBFYWNoQ3VycmVudENvbGxpc2lvbik6IGJvb2xlYW47XG4gICAgZ2V0SGFzaChlYWNoQ3VycmVudENvbGxpc2lvbj86IEVhY2hDdXJyZW50Q29sbGlzaW9uKTogbnVtYmVyO1xuXG4gICAgaXNSZXNvbHZlZCgpOiB0aGlzIGlzIElNb2RlbFBhdGg8dHJ1ZSwgVEFic29sdXRlPjtcbiAgICBpc0Fic29sdXRlKCk6IHRoaXMgaXMgSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIHRydWU+O1xuICAgIHRvQWJzb2x1dGUoKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIHRydWU+O1xuXG4gICAgam9pbldpdGgoLi4ucGF0aDogc3RyaW5nW10pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBqb2luV2l0aCguLi5wYXRoOiBQYXRoVG9rZW5bXSk6IElNb2RlbFBhdGg8Ym9vbGVhbiwgVEFic29sdXRlPjtcbiAgICBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxSZXNvbHZlZE1vZGVsUGF0aCB8IHN0cmluZz4pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIHwgc3RyaW5nPik6IElNb2RlbFBhdGg8VFJlc29sdmVkLCB0cnVlPjtcbiAgICBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4+KTogSU1vZGVsUGF0aDxib29sZWFuLCBUQWJzb2x1dGU+O1xuXG4gICAgZ2V0UGF0aFBhcnRzKCk6IEl0ZXJhYmxlPFBhdGhUb2tlblNwZWM8VFJlc29sdmVkPj47XG4gICAgZ2V0UGF0aFBhcnRzQXNBcnJheSgpOiBSZWFkb25seUFycmF5PFBhdGhUb2tlblNwZWM8VFJlc29sdmVkPj47XG4gICAgZ2V0U2ltcGxlVG9rZW5zU3RyaWN0KCk6IEl0ZXJhYmxlPFNpbXBsZVBhdGhUb2tlbj47XG4gICAgZ2V0U2ltcGxlVG9rZW5zQXNBcnJheVN0cmljdCgpOiByZWFkb25seSBTaW1wbGVQYXRoVG9rZW5bXTtcblxuICAgIHJlc29sdmVBbGwoaW5zdGFuY2U6IHN0cmluZyk6IE1vZGVsUGF0aDtcbiAgICBpc0NvbnRhaW5JdGVyYXRpb24oKTogYm9vbGVhbjtcbiAgICBpc0NvbnRhaW5DdXJyZW50SXRlcmF0aW9uKCk6IGJvb2xlYW47XG4gICAgZ2V0TGFzdExpc3RQYXRoKCk6IFBhdGhUb2tlbltdO1xuICAgIGlzSW5jbHVkZXMobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBib29sZWFuO1xuICAgIGdldEl0ZXJhdGlvblJhbmsoKTogbnVtYmVyO1xuICAgIGlzRW1wdHkoKTogYm9vbGVhbjtcbiAgICBtYXRjaEZvcihtb2RlbFBhdGg6IE1vZGVsUGF0aCk6IFBhdGhNYXRjaGluZztcbiAgICBzcGxpdEJ5TXVsdGlwbGljaXR5KCk6IEl0ZXJhYmxlPFJlc29sdmVkTW9kZWxQYXRoIHwgdHlwZW9mIEVhY2hTeW1ib2wgfCB0eXBlb2YgQ3VycmVudFN5bWJvbD47XG4gICAgbm9ybWFsaXplKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIHRvQ3VycmVudEl0ZXJhdGlvbigpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICB0b0VhY2hJdGVyYXRpb24oKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT47XG4gICAgZ2V0QWxsUGFyZW50UGF0aHMoKTogSXRlcmFibGU8TW9kZWxQYXRoPjtcbiAgICB0cmltTGFzdFN0YXJJZkxhc3RUb2tlbigpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBnZXRQYXJlbnRQYXRoKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIGFwcGx5SW5zdGFuY2VzRGlydHkoaW5zdGFuY2VzOiBTaW1wbGVQYXRoVG9rZW5bXSk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nO1xuICAgIHRvTGVnYWN5UGF0aCgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE1vZGVsUGF0aCA9IElNb2RlbFBhdGg8Ym9vbGVhbiwgYm9vbGVhbj47XG5leHBvcnQgdHlwZSBSZXNvbHZlZE1vZGVsUGF0aCA9IElNb2RlbFBhdGg8dHJ1ZSwgYm9vbGVhbj47XG5leHBvcnQgdHlwZSBBYnNvbHV0ZU1vZGVsUGF0aCA9IElNb2RlbFBhdGg8Ym9vbGVhbiwgdHJ1ZT47XG5leHBvcnQgdHlwZSBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoID0gSU1vZGVsUGF0aDx0cnVlLCB0cnVlPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpdmVNb2RlbFBhdGggPSBJTW9kZWxQYXRoPGJvb2xlYW4sIGZhbHNlPjtcbmV4cG9ydCB0eXBlIFJlbGF0aXZlUmVzb2x2ZWRNb2RlbFBhdGggPSBJTW9kZWxQYXRoPHRydWUsIGZhbHNlPjtcblxudHlwZSBQYXRoVG9rZW5TcGVjPFRSZXNvbHZlZCBleHRlbmRzIGJvb2xlYW4+ID0gVFJlc29sdmVkIGV4dGVuZHMgdHJ1ZSA/IHN0cmluZyA6IFBhdGhUb2tlbjtcblxudHlwZSBQYXRoVG9rZW5zU3BlYzxUUmVzb2x2ZWQgZXh0ZW5kcyBib29sZWFuPiA9IEFycmF5PFBhdGhUb2tlblNwZWM8VFJlc29sdmVkPj47XG5cbnR5cGUgUmVhZG9ubHlQYXRoVG9rZW5zU3BlYzxUUmVzb2x2ZWQgZXh0ZW5kcyBib29sZWFuPiA9IFJlYWRvbmx5QXJyYXk8UGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQ+PjtcblxuZnVuY3Rpb24gaXNBbGxUb2tlbnNSZXNvbHZlZDxUUmVzb2x2ZWQgZXh0ZW5kcyBib29sZWFuPih0b2tlbnM6IFJlYWRvbmx5UGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPik6IFRSZXNvbHZlZCB7XG4gICAgLy8g0K8g0YfRgtC+LdGC0L4g0L3QtdC80L7Qs9GDINGB0L7QvtCx0YDQsNC30LjRgtGMINC60LDQuiDRgtGD0YIg0LLRgdGRINGB0YLRgNC+0LPQviDQvdCw0L/QuNGB0LDRgtGMLi4uXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiB0b2tlbnMuZXZlcnkoUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsUGF0aEltcGw8VFJlc29sdmVkIGV4dGVuZHMgYm9vbGVhbiwgVEFic29sdXRlIGV4dGVuZHMgYm9vbGVhbj5cbiAgICBpbXBsZW1lbnRzIElFcXVhdGFibGU8TW9kZWxQYXRoPiwgSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuczogUmVhZG9ubHlQYXRoVG9rZW5zU3BlYzxUUmVzb2x2ZWQ+O1xuICAgIHB1YmxpYyByZWFkb25seSBhYnNvbHV0ZTogVEFic29sdXRlO1xuICAgIHByaXZhdGUgbGVnYWN5UGF0aDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGhQYXJ0czogUmVhZG9ubHlQYXRoVG9rZW5zU3BlYzxUUmVzb2x2ZWQ+LCBhYnNvbHV0ZTogVEFic29sdXRlKSB7XG4gICAgICAgIHRoaXMudG9rZW5zID0gcGF0aFBhcnRzLmZpbHRlcih4ID0+IHggIT09IFwiXCIpO1xuICAgICAgICB0aGlzLmFic29sdXRlID0gYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXNvbHZlZCgpOiBUUmVzb2x2ZWQge1xuICAgICAgICByZXR1cm4gaXNBbGxUb2tlbnNSZXNvbHZlZCh0aGlzLnRva2Vucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhdGhQYXJ0cygpOiBJdGVyYWJsZTxQYXRoVG9rZW5TcGVjPFRSZXNvbHZlZD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXRoUGFydHNBc0FycmF5KCk6IFJlYWRvbmx5QXJyYXk8UGF0aFRva2VuU3BlYzxUUmVzb2x2ZWQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgICB9XG5cbiAgICBwdWJsaWMgKmdldFNpbXBsZVRva2Vuc1N0cmljdCgpOiBJdGVyYWJsZTxTaW1wbGVQYXRoVG9rZW4+IHtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0aGlzLnRva2Vucykge1xuICAgICAgICAgICAgaWYgKCFQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IG5vdCBjb250YWluIHNwZWMgdG9rZW5zXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2ltcGxlVG9rZW5zQXNBcnJheVN0cmljdCgpOiByZWFkb25seSBTaW1wbGVQYXRoVG9rZW5bXSB7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmICghUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKHRva2VuKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBub3QgY29udGFpbiBzcGVjIHRva2Vuc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDQn9GA0L7QstC10YDQutCwINCy0YvRiNC1INCz0LDRgNCw0LXQvdGC0LjRgNGD0LXRgiDRh9GC0L4g0LHRg9C00YPRgiDRgtC+0LvRjNC60L4gU2ltcGxlUGF0aFRva2VuLlxuICAgICAgICAvLyDQktGB0LUgbWFwINC4IGZpbHRlciDRg9Cx0YDQsNC90Ysg0LTQu9GPINC/0YDQvtC40LfQstC+0LTQuNGC0LXQu9GM0L3QvtGB0YLQuFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgICB9XG5cbiAgICBwdWJsaWMgam9pbldpdGgoLi4ucGF0aDogc3RyaW5nW10pOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPjtcbiAgICBwdWJsaWMgam9pbldpdGgoLi4ucGF0aDogUGF0aFRva2VuW10pOiBJTW9kZWxQYXRoPGJvb2xlYW4sIFRBYnNvbHV0ZT47XG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PFJlc29sdmVkTW9kZWxQYXRoIHwgc3RyaW5nPik6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+O1xuICAgIHB1YmxpYyBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIHwgc3RyaW5nPik6IElNb2RlbFBhdGg8VFJlc29sdmVkLCB0cnVlPjtcbiAgICBwdWJsaWMgam9pbldpdGgoLi4ucGF0aDogQXJyYXk8TW9kZWxQYXRoIHwgUGF0aFRva2VuPik6IElNb2RlbFBhdGg8Ym9vbGVhbiwgVEFic29sdXRlPjtcbiAgICBwdWJsaWMgam9pbldpdGgoLi4ucGF0aDogQXJyYXk8TW9kZWxQYXRoIHwgUGF0aFRva2VuPik6IElNb2RlbFBhdGg8Ym9vbGVhbiwgYm9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gam9pbk1vZGVsUGF0aHModGhpcywgLi4ucGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUmVzb2x2ZWQoKTogdGhpcyBpcyBJTW9kZWxQYXRoPHRydWUsIFRBYnNvbHV0ZT4ge1xuICAgICAgICByZXR1cm4gaXNBbGxUb2tlbnNSZXNvbHZlZCh0aGlzLnRva2Vucyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5ldmVyeShQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNvbHZlQWxsKGluc3RhbmNlOiBzdHJpbmcpOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2Vucy5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsKHRva2VucywgdGhpcy5hYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ29udGFpbkl0ZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNvbWUoeCA9PiB4ID09PSBQYXRoVG9rZW5zLmVhY2gpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0NvbnRhaW5DdXJyZW50SXRlcmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc29tZSh4ID0+IHggPT09IFBhdGhUb2tlbnMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExhc3RMaXN0UGF0aCgpOiBQYXRoVG9rZW5bXSB7XG4gICAgICAgIGlmICghdGhpcy5pc0NvbnRhaW5JdGVyYXRpb24oKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IGNvbnRhaW4gaXRlcmF0aW9uXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCLCDRh9GC0L4g0LHRg9C00LXRgiBQYXRoVG9rZW5zLmVhY2hcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBsYXN0SXRlcmF0aW9uSW5kZXggPSB0aGlzLnRva2Vucy5sYXN0SW5kZXhPZihQYXRoVG9rZW5zLmVhY2gpO1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc2xpY2UoMCwgbGFzdEl0ZXJhdGlvbkluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBYnNvbHV0ZSgpOiB0aGlzIGlzIElNb2RlbFBhdGg8VFJlc29sdmVkLCB0cnVlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50b2tlbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMuYWJzb2x1dGUgPyBcIi9cIiA6IFwiXCIpICsgdGhpcy50b2tlbnMubWFwKHggPT4gdGhpcy5wYXRoUGFydFRvU3RyaW5nKHgpKS5qb2luKFwiL1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9MZWdhY3lQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxlZ2FjeVBhdGggPz8gKHRoaXMubGVnYWN5UGF0aCA9IHRoaXMudG9rZW5zLm1hcCh4ID0+IHRoaXMucGF0aFBhcnRUb1N0cmluZyh4KSkuam9pbihcIi9cIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFscyhcbiAgICAgICAgbW9kZWxQYXRoOiBNb2RlbFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGVhY2hDdXJyZW50Q29sbGlzaW9uID09PSBFYWNoQ3VycmVudENvbGxpc2lvbi5BcmVTYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b0xlZ2FjeVBhdGgoKSA9PT0gbW9kZWxQYXRoLnRvTGVnYWN5UGF0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWJzb2x1dGUoKSA9PT0gbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSAmJlxuICAgICAgICAgICAgICAgIEl0ZXJhdG9yLmZyb20oSXRlclV0aWxzLnppcCh0aGlzLmdldFBhdGhQYXJ0cygpLCBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzKCkpKS5ldmVyeShcbiAgICAgICAgICAgICAgICAgICAgKFt0MSwgdDJdKSA9PiB0MSA9PT0gdDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRgdC10LPQtNCwINGG0LXQu9C+0LUg0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LUg0LHQtdC30LfQvdCw0LrQvtCy0L7QtSAzMi3QsdC40YLQvdC+0LUg0YfQuNGB0LvQvlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRIYXNoKGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpOiBudW1iZXIge1xuICAgICAgICBsZXQgaGFzaCA9IDUzODE7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgcmV2ZXJzZUFycmF5KHRoaXMudG9rZW5zKSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRTdHI6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ciA9IHRva2VuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZWFjaEN1cnJlbnRDb2xsaXNpb24gPT09IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZURpZmZlcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gdG9rZW4gPT09IFBhdGhUb2tlbnMuZWFjaCA/IFwiKlwiIDogXCIhXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ciA9IFwiKlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBzdHJpbmdJbmRleCA9IGN1cnJlbnRTdHIubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKHN0cmluZ0luZGV4KSB7XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICBoYXNoID0gKGhhc2ggKiAzMykgXiBjdXJyZW50U3RyLmNoYXJDb2RlQXQoLS1zdHJpbmdJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgICAgdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIEphdmFTY3JpcHQgZG9lcyBiaXR3aXNlIG9wZXJhdGlvbnMgKGxpa2UgWE9SLCBhYm92ZSkgb24gMzItYml0IHNpZ25lZFxuICAgICAgICAgICAgaW50ZWdlcnMuIFNpbmNlIHdlIHdhbnQgdGhlIHJlc3VsdHMgdG8gYmUgYWx3YXlzIHBvc2l0aXZlLCBjb252ZXJ0IHRoZVxuICAgICAgICAgICAgc2lnbmVkIGludCB0byBhbiB1bnNpZ25lZCBieSBkb2luZyBhbiB1bnNpZ25lZCBiaXRzaGlmdC5cbiAgICAgICovXG4gICAgICAgIHJldHVybiBoYXNoID4+PiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0luY2x1ZGVzKG1vZGVsUGF0aDogTW9kZWxQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFRva2VucyA9IG1vZGVsUGF0aC5nZXRQYXRoUGFydHNBc0FycmF5KCk7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5sZW5ndGggIT09IHRhcmdldFRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0UGFydCA9IHRoaXMudG9rZW5zW2ldO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRQYXJ0ID0gdGFyZ2V0VG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsZWZ0UGFydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmlnaHRQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0UGFydCAhPT0gcmlnaHRQYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGVmdFBhcnQgPT09IFBhdGhUb2tlbnMuY3VycmVudCB8fCBsZWZ0UGFydCA9PT0gUGF0aFRva2Vucy5lYWNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByaWdodFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShOdW1iZXIocmlnaHRQYXJ0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRQYXJ0ICE9PSBQYXRoVG9rZW5zLmN1cnJlbnQgJiYgcmlnaHRQYXJ0ICE9PSBQYXRoVG9rZW5zLmVhY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZXJhdGlvblJhbmsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGNvdW50KEl0ZXJhdG9yLmZyb20odGhpcy50b2tlbnMpLmZpbHRlcih4ID0+IHggPT09IFBhdGhUb2tlbnMuZWFjaCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaEZvcihtb2RlbFBhdGg6IE1vZGVsUGF0aCk6IFBhdGhNYXRjaGluZyB7XG4gICAgICAgIGlmICghdGhpcy5pc0Fic29sdXRlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1hdGNoIG5vbiBhYnNvbHV0ZSBwYXRoICcke3RoaXMudG9TdHJpbmcoKX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb2RlbFBhdGguaXNBYnNvbHV0ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBtYXRjaCBub24gYWJzb2x1dGUgcGF0aCAnJHttb2RlbFBhdGgudG9TdHJpbmcoKX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBhdGhNYXRjaGVyLm1hdGNoKHRoaXMudG9rZW5zLCBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgKnNwbGl0QnlNdWx0aXBsaWNpdHkoKTogSXRlcmFibGU8UmVzb2x2ZWRNb2RlbFBhdGggfCB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sPiB7XG4gICAgICAgIGxldCBsYXN0U2ltcGxlUGFydHMgPSBuZXcgTW9kZWxQYXRoQnVpbGRlcih0aGlzLmlzQWJzb2x1dGUoKSk7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgbGFzdFNpbXBsZVBhcnRzLmFwcGVuZCh0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbGFzdFNpbXBsZVBhcnRzLmVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGxhc3RTaW1wbGVQYXJ0cy50b1Jlc29sdmVkUGF0aCgpO1xuICAgICAgICAgICAgICAgICAgICBsYXN0U2ltcGxlUGFydHMgPSBuZXcgTW9kZWxQYXRoQnVpbGRlcihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbGFzdFNpbXBsZVBhcnRzLmVtcHR5KSB7XG4gICAgICAgICAgICB5aWVsZCBsYXN0U2ltcGxlUGFydHMudG9SZXNvbHZlZFBhdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBub3JtYWxpemUoKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ge1xuICAgICAgICBjb25zdCByZXN1bHRUb2tlbnM6IFBhdGhUb2tlbnNTcGVjPFRSZXNvbHZlZD4gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiB0aGlzLnRva2Vucykge1xuICAgICAgICAgICAgaWYgKHBhdGhQYXJ0ID09PSBcIi4uXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFRva2Vucy5wb3AoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Fic29sdXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCBpcyBpbnZhbGlkICcke3RoaXMudG9TdHJpbmcoKX0nYCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRUb2tlbnMucHVzaChcIi4uXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGF0aFBhcnQgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRUb2tlbnMucHVzaChwYXRoUGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPFRSZXNvbHZlZCwgVEFic29sdXRlPihyZXN1bHRUb2tlbnMsIHRoaXMuYWJzb2x1dGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCh0L/QtdGG0LjRhNC40LrQsNGC0L7RgNGLINC80L3QvtC20LXRgdGC0LLQtdC90L3QvtGB0YLQuCBFYWNoINC30LDQvNC10L3Rj9C10YIg0L3QsCBDdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIHRvQ3VycmVudEl0ZXJhdGlvbigpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPiB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzb2x2ZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOT1RFINCi0YPRgiDQvdC1INC/0L7Qu9GD0YfQsNC10YLRgdGPINC90LDQu9C+0LbQuNGC0Ywg0LTQuNGB0LrRgNC40LzQuNC90LDRgtC+0YBcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGNvbnN0IHBhdGhQYXJ0czogUGF0aFRva2Vuc1NwZWM8VFJlc29sdmVkPiA9IHRoaXMudG9rZW5zLm1hcCh4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gUGF0aFRva2Vucy5lYWNoID8gUGF0aFRva2Vucy5jdXJyZW50IDogeFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoSW1wbDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ocGF0aFBhcnRzLCB0aGlzLmFic29sdXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0VhY2hJdGVyYXRpb24oKTogSU1vZGVsUGF0aDxUUmVzb2x2ZWQsIFRBYnNvbHV0ZT4ge1xuICAgICAgICBpZiAodGhpcy5pc1Jlc29sdmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTk9URSDQotGD0YIg0L3QtSDQv9C+0LvRg9GH0LDQtdGC0YHRjyDQvdCw0LvQvtC20LjRgtGMINC00LjRgdC60YDQuNC80LjQvdCw0YLQvtGAXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBjb25zdCBwYXRoUGFydHM6IFBhdGhUb2tlbnNTcGVjPFRSZXNvbHZlZD4gPSB0aGlzLnRva2Vucy5tYXAoeCA9PlxuICAgICAgICAgICAgICAgIHggPT09IFBhdGhUb2tlbnMuY3VycmVudCA/IFBhdGhUb2tlbnMuZWFjaCA6IHhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGw8VFJlc29sdmVkLCBUQWJzb2x1dGU+KHBhdGhQYXJ0cywgdGhpcy5hYnNvbHV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9BYnNvbHV0ZSgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgdHJ1ZT4ge1xuICAgICAgICBpZiAoIXRoaXMuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAnJHt0aGlzLnRvTGVnYWN5UGF0aCgpfSBpcyBub3QgYWJzb2x1dGUnYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhJbXBsPFRSZXNvbHZlZCwgdHJ1ZT4odGhpcy50b2tlbnMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyAqZ2V0QWxsUGFyZW50UGF0aHMoKTogSXRlcmFibGU8TW9kZWxQYXRoPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKHRoaXMuaXNBYnNvbHV0ZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBJdGVyVXRpbHMuc2tpcExhc3QodGhpcy5nZXRQYXRoUGFydHMoKSwgMSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW4pO1xuICAgICAgICAgICAgeWllbGQgcmVzdWx0LnRvUGF0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRyaW1MYXN0U3RhcklmTGFzdFRva2VuKCk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+IHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBJdGVyVXRpbHMubGFzdCh0aGlzLnRva2Vucyk7XG4gICAgICAgIGlmIChsYXN0SXRlbSAhPSB1bmRlZmluZWQgJiYgUGF0aFRva2Vucy5pc011bHRpVG9rZW4obGFzdEl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aEltcGwodGhpcy50b2tlbnMuc2xpY2UoMCwgLTEpLCB0aGlzLmFic29sdXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFyZW50UGF0aCgpOiBJTW9kZWxQYXRoPFRSZXNvbHZlZCwgVEFic29sdXRlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKHRoaXMuYWJzb2x1dGUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIEl0ZXJVdGlscy5za2lwTGFzdCh0aGlzLmdldFBhdGhQYXJ0cygpLCAxKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgLy8g0KLRg9GCINC/0L7Qu9GD0YfQsNC10YLRgdGPINGC0LDQuiwg0YfRgtC+INC/0L4g0LTRgNGD0LPQvtC80YMg0L3QuNC60LDQulxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHJldHVybiByZXN1bHQudG9QYXRoKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5SW5zdGFuY2VzRGlydHkoaW5zdGFuY2VzOiBTaW1wbGVQYXRoVG9rZW5bXSk6IElNb2RlbFBhdGg8VFJlc29sdmVkLCBUQWJzb2x1dGU+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNvbHZlZCgpIHx8IGluc3RhbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnN0YW5jZUNvdW50ZXIgPSAwO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTW9kZWxQYXRoQnVpbGRlcih0cnVlKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0aGlzLmdldFBhdGhQYXJ0cygpKSB7XG4gICAgICAgICAgICBpZiAoUGF0aFRva2Vucy5pc011bHRpVG9rZW4odG9rZW4pICYmIGluc3RhbmNlQ291bnRlciA8IGluc3RhbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGluc3RhbmNlc1tpbnN0YW5jZUNvdW50ZXJdID8/IHJlamVjdCgpKTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZUNvdW50ZXIrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g0KLRg9GCINC/0L7Qu9GD0YfQsNC10YLRgdGPINGC0LDQuiwg0YfRgtC+INC/0L4g0LTRgNGD0LPQvtC80YMg0L3QuNC60LDQulxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHJldHVybiByZXN1bHQudG9QYXRoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXRoUGFydFRvU3RyaW5nKHBhdGhQYXJ0OiBQYXRoVG9rZW4pOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHBhdGhQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aFBhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhQYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2gpIHtcbiAgICAgICAgICAgIHJldHVybiBcIipcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFBhcnQgPT09IFBhdGhUb2tlbnMuY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwYXRoIHBhcnQgc3BlY2lmaWVkOiAke2Vuc3VyZUFuZEdldFN0cmluZyhwYXRoUGFydCl9YCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAggregationPath = isAggregationPath;
7
+
8
+ function isAggregationPath(modelPath) {
9
+ const tokens = modelPath.getPathPartsAsArray();
10
+ const lastToken = tokens[tokens.length - 1];
11
+ return lastToken === "Sum" || lastToken === "Count";
12
+ }
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzQWdncmVnYXRpb25QYXRoIiwibW9kZWxQYXRoIiwidG9rZW5zIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImxhc3RUb2tlbiIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVPLFNBQVNBLGlCQUFULENBQTJCQyxTQUEzQixFQUFpRDtBQUNwRCxRQUFNQyxNQUFNLEdBQUdELFNBQVMsQ0FBQ0UsbUJBQVYsRUFBZjtBQUNBLFFBQU1DLFNBQVMsR0FBR0YsTUFBTSxDQUFDQSxNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBakIsQ0FBeEI7QUFDQSxTQUFPRCxTQUFTLEtBQUssS0FBZCxJQUF1QkEsU0FBUyxLQUFLLE9BQTVDO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFBhdGggfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWdncmVnYXRpb25QYXRoKG1vZGVsUGF0aDogTW9kZWxQYXRoKSB7XG4gICAgY29uc3QgdG9rZW5zID0gbW9kZWxQYXRoLmdldFBhdGhQYXJ0c0FzQXJyYXkoKTtcbiAgICBjb25zdCBsYXN0VG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBsYXN0VG9rZW4gPT09IFwiU3VtXCIgfHwgbGFzdFRva2VuID09PSBcIkNvdW50XCI7XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getMatchedAndDifferentModelPaths = getMatchedAndDifferentModelPaths;
7
+
8
+ var _ModelPath = require("./ModelPath");
9
+
10
+ var _PathMatcher = require("./PathMatcher");
11
+
12
+ var _ModelPathBuilder = require("./ModelPathBuilder");
13
+
14
+ function getMatchedAndDifferentModelPaths(baseModelPath, splittingModelPath) {
15
+ var _pathMatch$map$find;
16
+
17
+ const pathMatch = baseModelPath.matchFor(splittingModelPath);
18
+ const commonPartTokens = pathMatch.map(x => x.kind === _PathMatcher.MatchKind.MatchedPath ? x.prefix : x.kind === _PathMatcher.MatchKind.MatchedMultiplicity ? x.target : (0, _ModelPath.emptyModelPath)());
19
+ const commonPart = new _ModelPathBuilder.ModelPathBuilder(true).append(commonPartTokens).toAbsolutePath();
20
+ const restPart = (_pathMatch$map$find = pathMatch.map(x => x.kind === _PathMatcher.MatchKind.DifferentSuffix ? x.target : undefined).find(x => x != undefined)) !== null && _pathMatch$map$find !== void 0 ? _pathMatch$map$find : (0, _ModelPath.emptyModelPath)();
21
+ return {
22
+ matchedPath: commonPart,
23
+ differentPath: restPart
24
+ };
25
+ }
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvUGF0aFNwbGl0SGVscGVyLnRzIl0sIm5hbWVzIjpbImdldE1hdGNoZWRBbmREaWZmZXJlbnRNb2RlbFBhdGhzIiwiYmFzZU1vZGVsUGF0aCIsInNwbGl0dGluZ01vZGVsUGF0aCIsInBhdGhNYXRjaCIsIm1hdGNoRm9yIiwiY29tbW9uUGFydFRva2VucyIsIm1hcCIsIngiLCJraW5kIiwiTWF0Y2hLaW5kIiwiTWF0Y2hlZFBhdGgiLCJwcmVmaXgiLCJNYXRjaGVkTXVsdGlwbGljaXR5IiwidGFyZ2V0IiwiY29tbW9uUGFydCIsIk1vZGVsUGF0aEJ1aWxkZXIiLCJhcHBlbmQiLCJ0b0Fic29sdXRlUGF0aCIsInJlc3RQYXJ0IiwiRGlmZmVyZW50U3VmZml4IiwidW5kZWZpbmVkIiwiZmluZCIsIm1hdGNoZWRQYXRoIiwiZGlmZmVyZW50UGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVPLFNBQVNBLGdDQUFULENBQ0hDLGFBREcsRUFFSEMsa0JBRkcsRUFHTDtBQUFBOztBQUNFLFFBQU1DLFNBQVMsR0FBR0YsYUFBYSxDQUFDRyxRQUFkLENBQXVCRixrQkFBdkIsQ0FBbEI7QUFDQSxRQUFNRyxnQkFBZ0IsR0FBR0YsU0FBUyxDQUFDRyxHQUFWLENBQWNDLENBQUMsSUFDcENBLENBQUMsQ0FBQ0MsSUFBRixLQUFXQyx1QkFBVUMsV0FBckIsR0FDTUgsQ0FBQyxDQUFDSSxNQURSLEdBRU1KLENBQUMsQ0FBQ0MsSUFBRixLQUFXQyx1QkFBVUcsbUJBQXJCLEdBQ0FMLENBQUMsQ0FBQ00sTUFERixHQUVBLGdDQUxlLENBQXpCO0FBT0EsUUFBTUMsVUFBVSxHQUFHLElBQUlDLGtDQUFKLENBQXFCLElBQXJCLEVBQTJCQyxNQUEzQixDQUFrQ1gsZ0JBQWxDLEVBQW9EWSxjQUFwRCxFQUFuQjtBQUNBLFFBQU1DLFFBQVEsMEJBQ1ZmLFNBQVMsQ0FBQ0csR0FBVixDQUFjQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsSUFBRixLQUFXQyx1QkFBVVUsZUFBckIsR0FBdUNaLENBQUMsQ0FBQ00sTUFBekMsR0FBa0RPLFNBQXRFLEVBQWtGQyxJQUFsRixDQUF1RmQsQ0FBQyxJQUFJQSxDQUFDLElBQUlhLFNBQWpHLENBRFUscUVBRVYsZ0NBRko7QUFHQSxTQUFPO0FBQ0hFLElBQUFBLFdBQVcsRUFBRVIsVUFEVjtBQUVIUyxJQUFBQSxhQUFhLEVBQUVMO0FBRlosR0FBUDtBQUlIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzb2x1dGVNb2RlbFBhdGgsIGVtcHR5TW9kZWxQYXRoIH0gZnJvbSBcIi4vTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBNYXRjaEtpbmQgfSBmcm9tIFwiLi9QYXRoTWF0Y2hlclwiO1xuaW1wb3J0IHsgTW9kZWxQYXRoQnVpbGRlciB9IGZyb20gXCIuL01vZGVsUGF0aEJ1aWxkZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hdGNoZWRBbmREaWZmZXJlbnRNb2RlbFBhdGhzKFxuICAgIGJhc2VNb2RlbFBhdGg6IEFic29sdXRlTW9kZWxQYXRoLFxuICAgIHNwbGl0dGluZ01vZGVsUGF0aDogQWJzb2x1dGVNb2RlbFBhdGhcbikge1xuICAgIGNvbnN0IHBhdGhNYXRjaCA9IGJhc2VNb2RlbFBhdGgubWF0Y2hGb3Ioc3BsaXR0aW5nTW9kZWxQYXRoKTtcbiAgICBjb25zdCBjb21tb25QYXJ0VG9rZW5zID0gcGF0aE1hdGNoLm1hcCh4ID0+XG4gICAgICAgIHgua2luZCA9PT0gTWF0Y2hLaW5kLk1hdGNoZWRQYXRoXG4gICAgICAgICAgICA/IHgucHJlZml4XG4gICAgICAgICAgICA6IHgua2luZCA9PT0gTWF0Y2hLaW5kLk1hdGNoZWRNdWx0aXBsaWNpdHlcbiAgICAgICAgICAgID8geC50YXJnZXRcbiAgICAgICAgICAgIDogZW1wdHlNb2RlbFBhdGgoKVxuICAgICk7XG4gICAgY29uc3QgY29tbW9uUGFydCA9IG5ldyBNb2RlbFBhdGhCdWlsZGVyKHRydWUpLmFwcGVuZChjb21tb25QYXJ0VG9rZW5zKS50b0Fic29sdXRlUGF0aCgpO1xuICAgIGNvbnN0IHJlc3RQYXJ0ID1cbiAgICAgICAgcGF0aE1hdGNoLm1hcCh4ID0+ICh4LmtpbmQgPT09IE1hdGNoS2luZC5EaWZmZXJlbnRTdWZmaXggPyB4LnRhcmdldCA6IHVuZGVmaW5lZCkpLmZpbmQoeCA9PiB4ICE9IHVuZGVmaW5lZCkgPz9cbiAgICAgICAgZW1wdHlNb2RlbFBhdGgoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaGVkUGF0aDogY29tbW9uUGFydCxcbiAgICAgICAgZGlmZmVyZW50UGF0aDogcmVzdFBhcnQsXG4gICAgfTtcbn1cbiJdfQ==
@@ -31,6 +31,7 @@ async function readFormSource(formSourcesPath, farmDirectory, hlFarmDirectoryPat
31
31
  validationsContent: await readJavaScriptFilesWithNames(_path.default.join(formSourcesPath, "validations")),
32
32
  schemaRngContent: await readSchemaRngFile(_path.default.join(formSourcesPath, "schemas"), formName),
33
33
  kcJsXmlContent: await readFileWithDefault(_path.default.join(formSourcesPath, "autocalc"), `${formName}.КС.candy.js.xml`, "<dummy/>"),
34
+ kcLangContent: await readFileWithDefault(_path.default.join(formSourcesPath, "autocalc"), `${formName}.КС.candy.js.kclang`, ""),
34
35
  normativeHelpContent: await readNormativeHelpFile(hlFarmDirectoryPath),
35
36
  tourSteps: await readFileWithDefault(_path.default.join(rootPath, "tour"), "tour.js", "{}"),
36
37
  hooksContent: await readHooksFile(formSourcesPath),
@@ -131,4 +132,4 @@ async function readFileWithDefault(filePath, filename, defaultValue) {
131
132
  return defaultValue;
132
133
  }
133
134
  }
134
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1JlYWRGb3JtU291cmNlLnRzIl0sIm5hbWVzIjpbInJlYWRGb3JtU291cmNlIiwiZm9ybVNvdXJjZXNQYXRoIiwiZmFybURpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJyb290UGF0aCIsImZvcm1OYW1lIiwicGF0aCIsImJhc2VuYW1lIiwic3VnYXJDb250ZW50IiwicmVhZFN1Z2FyRmlsZXMiLCJqb2luIiwicmVzdWx0IiwicmVzb3VyY2VzIiwiZ2Z2IiwiYWRkaXRpb25hbFNldHRpbmdzIiwicmVhZEZpbGVXaXRoRGVmYXVsdCIsImF1dG9jYWxjc0NvbnRlbnQiLCJyZWFkQXV0b0NhbGNGaWxlcyIsImhlbHBlcnNDb250ZW50IiwicmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyIsInZhbGlkYXRpb25zQ29udGVudCIsInNjaGVtYVJuZ0NvbnRlbnQiLCJyZWFkU2NoZW1hUm5nRmlsZSIsImtjSnNYbWxDb250ZW50Iiwibm9ybWF0aXZlSGVscENvbnRlbnQiLCJyZWFkTm9ybWF0aXZlSGVscEZpbGUiLCJ0b3VyU3RlcHMiLCJob29rc0NvbnRlbnQiLCJyZWFkSG9va3NGaWxlIiwiY3VzdG9tQ29udHJvbHNDb250ZW50IiwicmVhZEN1c3RvbUNvbnRyb2xzRmlsZXMiLCJzdGFydHNXaXRoIiwiY29tbW9uUmVzb3VyY2VzUGF0aCIsImVsZW1lbnRzIiwicmVxdWlyZSIsImhhc1JlZ2lvbmFsRm9ybSIsIk9iamVjdCIsInZhbHVlcyIsImZpbmQiLCJzdWdhciIsImluY2x1ZGVzIiwicHJlcHJvY2Vzc29yIiwiZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCIsImZpbGVOYW1lcyIsImZpbGVOYW1lIiwic3VnYXJNb2R1bGVOYW1lIiwicmVwbGFjZSIsInN1Z2FyTW9kdWxlQ29udGVudCIsInJlbGF0aXZlRmlsZU5hbWUiLCJmb3JtQXV0b0NhbGNQYXRoIiwiZmlsZXMiLCJqc0ZpbGVzIiwiZmlsdGVyIiwiZmlsZW5hbWUiLCJ0ZXN0IiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImlnbm9yZUVycm9yIiwiZm9ybUphdmFTY3JpcHRGaWxlc1BhdGgiLCJwYXJzZSIsIm5hbWUiLCJjb250ZW50IiwiZm9ybVNjaGVtYXNQYXRoIiwiZm9ybURpcmVjdG9yeVBhdGgiLCJjYXRjaCIsImZpbGVQYXRoIiwiZGVmYXVsdFZhbHVlIiwiaW5nb3JlRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUVBOztBQStCTyxlQUFlQSxjQUFmLENBQ0hDLGVBREcsRUFFSEMsYUFGRyxFQUdIQyxtQkFIRyxFQUlnQjtBQUNuQixRQUFNQyxRQUFRLEdBQUdGLGFBQWpCOztBQUNBLFFBQU1HLFFBQVEsR0FBR0MsY0FBS0MsUUFBTCxDQUFjTixlQUFkLENBQWpCOztBQUNBLFFBQU1PLFlBQVksR0FBRyxNQUFNQyxjQUFjLENBQUNILGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixPQUEzQixDQUFELENBQXpDO0FBQ0EsUUFBTVUsTUFBa0IsR0FBRztBQUN2QkgsSUFBQUEsWUFBWSxFQUFFQSxZQURTO0FBRXZCSSxJQUFBQSxTQUFTLEVBQUU7QUFDUEMsTUFBQUEsR0FBRyxFQUFFUCxjQUFLQyxRQUFMLENBQWNOLGVBQWQsQ0FERTtBQUVQYSxNQUFBQSxrQkFBa0IsRUFBRSxNQUFNQyxtQkFBbUIsQ0FBQ2QsZUFBRCxFQUFrQixlQUFsQixFQUFtQyxJQUFuQyxDQUZ0QztBQUdQZSxNQUFBQSxnQkFBZ0IsRUFBRSxNQUFNQyxpQkFBaUIsQ0FBQ1gsY0FBS0ksSUFBTCxDQUFVVCxlQUFWLEVBQTJCLFVBQTNCLENBQUQsQ0FIbEM7QUFJUGlCLE1BQUFBLGNBQWMsRUFBRSxNQUFNQyw0QkFBNEIsQ0FBQ2IsY0FBS0ksSUFBTCxDQUFVVCxlQUFWLEVBQTJCLFNBQTNCLENBQUQsQ0FKM0M7QUFLUG1CLE1BQUFBLGtCQUFrQixFQUFFLE1BQU1ELDRCQUE0QixDQUFDYixjQUFLSSxJQUFMLENBQVVULGVB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QixXQUFPRCxZQUFQO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHJlYWRkaXIsIHJlYWRGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgcmVjdXJzaXZlUmVhZGRpciBmcm9tIFwicmVjdXJzaXZlLXJlYWRkaXJcIjtcblxuaW1wb3J0IHsgaXNEaXJlY3RvcnlFeGlzdHMgfSBmcm9tIFwiLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VnYXJDb250ZW50IHtcbiAgICBbc3VnYXJGaWxlTmFtZVdpdGhvdXRFeHRlbnNpb246IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Db250cm9sc0NvbnRlbnQge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtUmVzb3VyY2VzIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBhZGRpdGlvbmFsU2V0dGluZ3M6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBhdXRvY2FsY3NDb250ZW50OiBzdHJpbmdbXTtcbiAgICBoZWxwZXJzQ29udGVudDogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT47XG4gICAgdmFsaWRhdGlvbnNDb250ZW50OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PjtcbiAgICBzY2hlbWFSbmdDb250ZW50OiBzdHJpbmc7XG4gICAga2NKc1htbENvbnRlbnQ6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBub3JtYXRpdmVIZWxwQ29udGVudDogc3RyaW5nO1xuICAgIHRvdXJTdGVwczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGhvb2tzQ29udGVudDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGN1c3RvbUNvbnRyb2xzQ29udGVudDogQ3VzdG9tQ29udHJvbHNDb250ZW50O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJlcHJvY2Vzc29yPzogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVNvdXJjZSB7XG4gICAgc3VnYXJDb250ZW50OiBTdWdhckNvbnRlbnQ7XG4gICAgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZvcm1Tb3VyY2UoXG4gICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxGb3JtU291cmNlPiB7XG4gICAgY29uc3Qgcm9vdFBhdGggPSBmYXJtRGlyZWN0b3J5O1xuICAgIGNvbnN0IGZvcm1OYW1lID0gcGF0aC5iYXNlbmFtZShmb3JtU291cmNlc1BhdGgpO1xuICAgIGNvbnN0IHN1Z2FyQ29udGVudCA9IGF3YWl0IHJlYWRTdWdhckZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwic3VnYXJcIikpO1xuICAgIGNvbnN0IHJlc3VsdDogRm9ybVNvdXJjZSA9IHtcbiAgICAgICAgc3VnYXJDb250ZW50OiBzdWdhckNvbnRlbnQsXG4gICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgZ2Z2OiBwYXRoLmJhc2VuYW1lKGZvcm1Tb3VyY2VzUGF0aCksXG4gICAgICAgICAgICBhZGRpdGlvbmFsU2V0dGluZ3M6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQoZm9ybVNvdXJjZXNQYXRoLCBcInNldHRpbmdzLmpzb25cIiwgXCJ7fVwiKSxcbiAgICAgICAgICAgIGF1dG9jYWxjc0NvbnRlbnQ6IGF3YWl0IHJlYWRBdXRvQ2FsY0ZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiYXV0b2NhbGNcIikpLFxuICAgICAgICAgICAgaGVscGVyc0NvbnRlbnQ6IGF3YWl0IHJlYWRKYXZhU2NyaXB0RmlsZXNXaXRoTmFtZXMocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJoZWxwZXJzXCIpKSxcbiAgICAgICAgICAgIHZhbGlkYXRpb25zQ29udGVudDogYXdhaXQgcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcInZhbGlkYXRpb25zXCIpKSxcbiAgICAgICAgICAgIHNjaGVtYVJuZ0NvbnRlbnQ6IGF3YWl0IHJlYWRTY2hlbWFSbmdGaWxlKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwic2NoZW1hc1wiKSwgZm9ybU5hbWUpLFxuICAgICAgICAgICAga2NKc1htbENvbnRlbnQ6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJhdXRvY2FsY1wiKSxcbiAgICAgICAgICAgICAgICBgJHtmb3JtTmFtZX0u0JrQoS5jYW5keS5qcy54bWxgLFxuICAgICAgICAgICAgICAgIFwiPGR1bW15Lz5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBhd2FpdCByZWFkTm9ybWF0aXZlSGVscEZpbGUoaGxGYXJtRGlyZWN0b3J5UGF0aCksXG4gICAgICAgICAgICB0b3VyU3RlcHM6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQocGF0aC5qb2luKHJvb3RQYXRoLCBcInRvdXJcIiksIFwidG91ci5qc1wiLCBcInt9XCIpLFxuICAgICAgICAgICAgaG9va3NDb250ZW50OiBhd2FpdCByZWFkSG9va3NGaWxlKGZvcm1Tb3VyY2VzUGF0aCksXG4gICAgICAgICAgICBjdXN0b21Db250cm9sc0NvbnRlbnQ6IGF3YWl0IHJlYWRDdXN0b21Db250cm9sc0ZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiY29udHJvbHNcIikpLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKGZvcm1OYW1lLnN0YXJ0c1dpdGgoXCI0XCIpKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vblJlc291cmNlc1BhdGggPSBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJjb21tb25SZXNvdXJjZXNcIik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IHsgZWxlbWVudHMgfSA9IHJlcXVpcmUocGF0aC5qb2luKGNvbW1vblJlc291cmNlc1BhdGgsIFwic3RhdFRpdGxlLmpzXCIpKTtcbiAgICAgICAgY29uc3QgaGFzUmVnaW9uYWxGb3JtID0gT2JqZWN0LnZhbHVlcyhzdWdhckNvbnRlbnQpLmZpbmQoc3VnYXIgPT4gc3VnYXIuaW5jbHVkZXMoJ2hhc1JlZ2lvbmFsRm9ybXM9XCJ0cnVlXCInKSk7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQucmVzb3VyY2VzLmhvb2tzQ29udGVudCAmJiBoYXNSZWdpb25hbEZvcm0pIHtcbiAgICAgICAgICAgIHJlc3VsdC5yZXNvdXJjZXMuaG9va3NDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChjb21tb25SZXNvdXJjZXNQYXRoLCBcInJlZ2lvblN0YXRIb29rcy5qc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucmVzb3VyY2VzLnByZXByb2Nlc3NvciA9IHsgLi4uZWxlbWVudHMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN1Z2FyRmlsZXMoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICBjb25zdCBmaWxlTmFtZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpO1xuICAgIGNvbnN0IHJlc3VsdDogU3VnYXJDb250ZW50ID0ge307XG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBmaWxlTmFtZXMpIHtcbiAgICAgICAgY29uc3Qgc3VnYXJNb2R1bGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZShcIi5zdWdhci54bWxcIiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHN1Z2FyTW9kdWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmb3JtU3VnYXJEaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSksIFwidXRmLThcIik7XG4gICAgICAgIHJlc3VsdFtzdWdhck1vZHVsZU5hbWVdID0gc3VnYXJNb2R1bGVDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tQ29udHJvbHNGaWxlcyhmb3JtU3VnYXJEaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEN1c3RvbUNvbnRyb2xzQ29udGVudD4ge1xuICAgIGlmICghKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlY3Vyc2l2ZVJlYWRkaXIoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCk7XG4gICAgY29uc3QgcmVzdWx0OiBDdXN0b21Db250cm9sc0NvbnRlbnQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBzdWdhck1vZHVsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlTmFtZSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVGaWxlTmFtZSA9IChcImNvbnRyb2xzXFxcXFwiICsgZmlsZU5hbWUucmVwbGFjZShmb3JtU3VnYXJEaXJlY3RvcnlQYXRoICsgXCJcXFxcXCIsIFwiXCIpKS5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAgIFwiL1wiXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdFtyZWxhdGl2ZUZpbGVOYW1lXSA9IHN1Z2FyTW9kdWxlQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dG9DYWxjRmlsZXMoZm9ybUF1dG9DYWxjUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihmb3JtQXV0b0NhbGNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChqc0ZpbGVzLm1hcChmaWxlbmFtZSA9PiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybUF1dG9DYWxjUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpKSk7XG4gICAgfSBjYXRjaCAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhcbiAgICBmb3JtSmF2YVNjcmlwdEZpbGVzUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGpzRmlsZXMubWFwKGFzeW5jIGZpbGVuYW1lID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhdGgucGFyc2UoZmlsZW5hbWUpLm5hbWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoLCBmaWxlbmFtZSksIFwidXRmLThcIiksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChpZ25vcmVFcnJvcikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hUm5nRmlsZShmb3JtU2NoZW1hc1BhdGg6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybVNjaGVtYXNQYXRoLCBgJHtnZnZ9LnJuZy54bWxgKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZE5vcm1hdGl2ZUhlbHBGaWxlKGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHJlYWRGaWxlKHBhdGguam9pbihobEZhcm1EaXJlY3RvcnlQYXRoLCBcIkZvcm1zXCIsIFwiaGVscGlkX25vcm1hdGl2LnhtbFwiKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZEhvb2tzRmlsZShmb3JtRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gcmVhZEZpbGUocGF0aC5qb2luKGZvcm1EaXJlY3RvcnlQYXRoLCBcImhvb2tzLmpzXCIpLCBcInV0Zi04XCIpLmNhdGNoKCgpID0+IFwiXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRmlsZVdpdGhEZWZhdWx0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbik6IFByb21pc2U8dW5kZWZpbmVkIHwgc3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmaWxlUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpO1xuICAgIH0gY2F0Y2ggKGluZ29yZUVycm9yKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxufVxuIl19
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1JlYWRGb3JtU291cmNlLnRzIl0sIm5hbWVzIjpbInJlYWRGb3JtU291cmNlIiwiZm9ybVNvdXJjZXNQYXRoIiwiZmFybURpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJyb290UGF0aCIsImZvcm1OYW1lIiwicGF0aCIsImJhc2VuYW1lIiwic3VnYXJDb250ZW50IiwicmVhZFN1Z2FyRmlsZXMiLCJqb2luIiwicmVzdWx0IiwicmVzb3VyY2VzIiwiZ2Z2IiwiYWRkaXRpb25hbFNldHRpbmdzIiwicmVhZEZpbGVXaXRoRGVmYXVsdCIsImF1dG9jYWxjc0NvbnRlbnQiLCJyZWFkQXV0b0NhbGNGaWxlcyIsImhlbHBlcnNDb250ZW50IiwicmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyIsInZhbGlkYXRpb25zQ29udGVudCIsInNjaGVtYVJuZ0NvbnRlbnQiLCJyZWFkU2NoZW1hUm5nRmlsZSIsImtjSnNYbWxDb250ZW50Iiwia2NMYW5nQ29udGVudCIsIm5vcm1hdGl2ZUhlbHBDb250ZW50IiwicmVhZE5vcm1hdGl2ZUhlbHBGaWxlIiwidG91clN0ZXBzIiwiaG9va3NDb250ZW50IiwicmVhZEhvb2tzRmlsZSIsImN1c3RvbUNvbnRyb2xzQ29udGVudCIsInJlYWRDdXN0b21Db250cm9sc0ZpbGVzIiwic3RhcnRzV2l0aCIsImNvbW1vblJlc291cmNlc1BhdGgiLCJlbGVtZW50cyIsInJlcXVpcmUiLCJoYXNSZWdpb25hbEZvcm0iLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaW5kIiwic3VnYXIiLCJpbmNsdWRlcyIsInByZXByb2Nlc3NvciIsImZvcm1TdWdhckRpcmVjdG9yeVBhdGgiLCJmaWxlTmFtZXMiLCJmaWxlTmFtZSIsInN1Z2FyTW9kdWxlTmFtZSIsInJlcGxhY2UiLCJzdWdhck1vZHVsZUNvbnRlbnQiLCJyZWxhdGl2ZUZpbGVOYW1lIiwiZm9ybUF1dG9DYWxjUGF0aCIsImZpbGVzIiwianNGaWxlcyIsImZpbHRlciIsImZpbGVuYW1lIiwidGVzdCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpZ25vcmVFcnJvciIsImZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoIiwicGFyc2UiLCJuYW1lIiwiY29udGVudCIsImZvcm1TY2hlbWFzUGF0aCIsImZvcm1EaXJlY3RvcnlQYXRoIiwiY2F0Y2giLCJmaWxlUGF0aCIsImRlZmF1bHRWYWx1ZSIsImluZ29yZUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFnQ08sZUFBZUEsY0FBZixDQUNIQyxlQURHLEVBRUhDLGFBRkcsRUFHSEMsbUJBSEcsRUFJZ0I7QUFDbkIsUUFBTUMsUUFBUSxHQUFHRixhQUFqQjs7QUFDQSxRQUFNRyxRQUFRLEdBQUdDLGNBQUtDLFFBQUwsQ0FBY04sZUFBZCxDQUFqQjs7QUFDQSxRQUFNTyxZQUFZLEdBQUcsTUFBTUMsY0FBYyxDQUFDSCxjQUFLSSxJQUFMLENBQVVULGVBQVYsRUFBMkIsT0FBM0IsQ0FBRCxDQUF6QztBQUNBLFFBQU1VLE1BQWtCLEdBQUc7QUFDdkJILElBQUFBLFlBQVksRUFBRUEsWUFEUztBQUV2QkksSUFBQUEsU0FBUyxFQUFFO0FBQ1BDLE1BQUFBLEdBQUcsRUFBRVAsY0FBS0MsUUFBTCxDQUFjTixlQUFkLENBREU7QUFFUGEsTUFBQUEsa0JBQWtCLEVBQUUsTUFBTUMsbUJBQW1CLENBQUNkLGVBQUQsRUFBa0IsZUFBbEIsRUFBbUMsSUFBbkMsQ0FGdEM7QUFHUGUsTUFBQUEsZ0JBQWdCLEVBQUUsTUFBTUMsaUJBQWlCLENBQUNYLGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixVQUEzQixDQUFELENBSGxDO0FBSVBpQixNQUFBQSxjQUFjLEVBQUUsTUFBTUMsNEJBQTRCLENBQUNiLGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixTQUEzQixDQUFELENBSjNDO0FBS1BtQixNQUFBQSxrQkFBa0IsRUFBRSxNQUFNRCw0QkFBNEIsQ0FBQ2IsY0FB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LFFBRkosRUFHSWMsWUFISixFQUkrQjtBQUMzQixNQUFJO0FBQ0EsV0FBTyxNQUFNLHVCQUFTOUQsY0FBS0ksSUFBTCxDQUFVeUQsUUFBVixFQUFvQmIsUUFBcEIsQ0FBVCxFQUF3QyxPQUF4QyxDQUFiO0FBQ0gsR0FGRCxDQUVFLE9BQU9lLFdBQVAsRUFBb0I7QUFDbEIsV0FBT0QsWUFBUDtBQUNIO0FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHJlY3Vyc2l2ZVJlYWRkaXIgZnJvbSBcInJlY3Vyc2l2ZS1yZWFkZGlyXCI7XG5cbmltcG9ydCB7IGlzRGlyZWN0b3J5RXhpc3RzIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1Z2FyQ29udGVudCB7XG4gICAgW3N1Z2FyRmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uOiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ29udHJvbHNDb250ZW50IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVJlc291cmNlcyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgYWRkaXRpb25hbFNldHRpbmdzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgYXV0b2NhbGNzQ29udGVudDogc3RyaW5nW107XG4gICAgaGVscGVyc0NvbnRlbnQ6IEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+O1xuICAgIHZhbGlkYXRpb25zQ29udGVudDogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT47XG4gICAgc2NoZW1hUm5nQ29udGVudDogc3RyaW5nO1xuICAgIGtjSnNYbWxDb250ZW50OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAga2NMYW5nQ29udGVudDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBzdHJpbmc7XG4gICAgdG91clN0ZXBzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgaG9va3NDb250ZW50OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgY3VzdG9tQ29udHJvbHNDb250ZW50OiBDdXN0b21Db250cm9sc0NvbnRlbnQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcmVwcm9jZXNzb3I/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU291cmNlIHtcbiAgICBzdWdhckNvbnRlbnQ6IFN1Z2FyQ29udGVudDtcbiAgICByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRm9ybVNvdXJjZShcbiAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEZvcm1Tb3VyY2U+IHtcbiAgICBjb25zdCByb290UGF0aCA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgY29uc3QgZm9ybU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZvcm1Tb3VyY2VzUGF0aCk7XG4gICAgY29uc3Qgc3VnYXJDb250ZW50ID0gYXdhaXQgcmVhZFN1Z2FyRmlsZXMocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJzdWdhclwiKSk7XG4gICAgY29uc3QgcmVzdWx0OiBGb3JtU291cmNlID0ge1xuICAgICAgICBzdWdhckNvbnRlbnQ6IHN1Z2FyQ29udGVudCxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgICBnZnY6IHBhdGguYmFzZW5hbWUoZm9ybVNvdXJjZXNQYXRoKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxTZXR0aW5nczogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChmb3JtU291cmNlc1BhdGgsIFwic2V0dGluZ3MuanNvblwiLCBcInt9XCIpLFxuICAgICAgICAgICAgYXV0b2NhbGNzQ29udGVudDogYXdhaXQgcmVhZEF1dG9DYWxjRmlsZXMocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJhdXRvY2FsY1wiKSksXG4gICAgICAgICAgICBoZWxwZXJzQ29udGVudDogYXdhaXQgcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImhlbHBlcnNcIikpLFxuICAgICAgICAgICAgdmFsaWRhdGlvbnNDb250ZW50OiBhd2FpdCByZWFkSmF2YVNjcmlwdEZpbGVzV2l0aE5hbWVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwidmFsaWRhdGlvbnNcIikpLFxuICAgICAgICAgICAgc2NoZW1hUm5nQ29udGVudDogYXdhaXQgcmVhZFNjaGVtYVJuZ0ZpbGUocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBmb3JtTmFtZSksXG4gICAgICAgICAgICBrY0pzWG1sQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLnhtbGAsXG4gICAgICAgICAgICAgICAgXCI8ZHVtbXkvPlwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAga2NMYW5nQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLmtjbGFuZ2AsXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBhd2FpdCByZWFkTm9ybWF0aXZlSGVscEZpbGUoaGxGYXJtRGlyZWN0b3J5UGF0aCksXG4gICAgICAgICAgICB0b3VyU3RlcHM6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQocGF0aC5qb2luKHJvb3RQYXRoLCBcInRvdXJcIiksIFwidG91ci5qc1wiLCBcInt9XCIpLFxuICAgICAgICAgICAgaG9va3NDb250ZW50OiBhd2FpdCByZWFkSG9va3NGaWxlKGZvcm1Tb3VyY2VzUGF0aCksXG4gICAgICAgICAgICBjdXN0b21Db250cm9sc0NvbnRlbnQ6IGF3YWl0IHJlYWRDdXN0b21Db250cm9sc0ZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiY29udHJvbHNcIikpLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKGZvcm1OYW1lLnN0YXJ0c1dpdGgoXCI0XCIpKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vblJlc291cmNlc1BhdGggPSBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJjb21tb25SZXNvdXJjZXNcIik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IHsgZWxlbWVudHMgfSA9IHJlcXVpcmUocGF0aC5qb2luKGNvbW1vblJlc291cmNlc1BhdGgsIFwic3RhdFRpdGxlLmpzXCIpKTtcbiAgICAgICAgY29uc3QgaGFzUmVnaW9uYWxGb3JtID0gT2JqZWN0LnZhbHVlcyhzdWdhckNvbnRlbnQpLmZpbmQoc3VnYXIgPT4gc3VnYXIuaW5jbHVkZXMoJ2hhc1JlZ2lvbmFsRm9ybXM9XCJ0cnVlXCInKSk7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQucmVzb3VyY2VzLmhvb2tzQ29udGVudCAmJiBoYXNSZWdpb25hbEZvcm0pIHtcbiAgICAgICAgICAgIHJlc3VsdC5yZXNvdXJjZXMuaG9va3NDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChjb21tb25SZXNvdXJjZXNQYXRoLCBcInJlZ2lvblN0YXRIb29rcy5qc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucmVzb3VyY2VzLnByZXByb2Nlc3NvciA9IHsgLi4uZWxlbWVudHMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN1Z2FyRmlsZXMoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICBjb25zdCBmaWxlTmFtZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpO1xuICAgIGNvbnN0IHJlc3VsdDogU3VnYXJDb250ZW50ID0ge307XG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBmaWxlTmFtZXMpIHtcbiAgICAgICAgY29uc3Qgc3VnYXJNb2R1bGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZShcIi5zdWdhci54bWxcIiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHN1Z2FyTW9kdWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmb3JtU3VnYXJEaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSksIFwidXRmLThcIik7XG4gICAgICAgIHJlc3VsdFtzdWdhck1vZHVsZU5hbWVdID0gc3VnYXJNb2R1bGVDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tQ29udHJvbHNGaWxlcyhmb3JtU3VnYXJEaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEN1c3RvbUNvbnRyb2xzQ29udGVudD4ge1xuICAgIGlmICghKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlY3Vyc2l2ZVJlYWRkaXIoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCk7XG4gICAgY29uc3QgcmVzdWx0OiBDdXN0b21Db250cm9sc0NvbnRlbnQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBzdWdhck1vZHVsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlTmFtZSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVGaWxlTmFtZSA9IChcImNvbnRyb2xzXFxcXFwiICsgZmlsZU5hbWUucmVwbGFjZShmb3JtU3VnYXJEaXJlY3RvcnlQYXRoICsgXCJcXFxcXCIsIFwiXCIpKS5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAgIFwiL1wiXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdFtyZWxhdGl2ZUZpbGVOYW1lXSA9IHN1Z2FyTW9kdWxlQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dG9DYWxjRmlsZXMoZm9ybUF1dG9DYWxjUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihmb3JtQXV0b0NhbGNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChqc0ZpbGVzLm1hcChmaWxlbmFtZSA9PiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybUF1dG9DYWxjUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpKSk7XG4gICAgfSBjYXRjaCAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhcbiAgICBmb3JtSmF2YVNjcmlwdEZpbGVzUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGpzRmlsZXMubWFwKGFzeW5jIGZpbGVuYW1lID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhdGgucGFyc2UoZmlsZW5hbWUpLm5hbWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoLCBmaWxlbmFtZSksIFwidXRmLThcIiksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChpZ25vcmVFcnJvcikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hUm5nRmlsZShmb3JtU2NoZW1hc1BhdGg6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybVNjaGVtYXNQYXRoLCBgJHtnZnZ9LnJuZy54bWxgKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZE5vcm1hdGl2ZUhlbHBGaWxlKGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHJlYWRGaWxlKHBhdGguam9pbihobEZhcm1EaXJlY3RvcnlQYXRoLCBcIkZvcm1zXCIsIFwiaGVscGlkX25vcm1hdGl2LnhtbFwiKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZEhvb2tzRmlsZShmb3JtRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gcmVhZEZpbGUocGF0aC5qb2luKGZvcm1EaXJlY3RvcnlQYXRoLCBcImhvb2tzLmpzXCIpLCBcInV0Zi04XCIpLmNhdGNoKCgpID0+IFwiXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRmlsZVdpdGhEZWZhdWx0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbik6IFByb21pc2U8dW5kZWZpbmVkIHwgc3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmaWxlUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpO1xuICAgIH0gY2F0Y2ggKGluZ29yZUVycm9yKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxufVxuIl19
@@ -50,7 +50,7 @@ const buildFormsOptionsDefinition = (0, _CommandBasedOptionsParser.commandDefini
50
50
  parse: input => ({
51
51
  buildCacheMode: (0, _BuildCacheMode.parseBuildCacheMode)(input)
52
52
  }),
53
- description: "Задаёт режим использования кэша сборки. Возможные значения:\n" + " disabled - не использовать кэш\n" + " readonly - использовать кэш для сборки, но не обновляеть его (значение по умолчанию)\n" + " update - использовать кэш для сборки и презаписывать, если не совпадает\n" + " force-update - всегда выполнять сборку и обновить значения в кэше\n" + "Отключается при использовании watch-режима"
53
+ description: "Задаёт режим использования кэша сборки. Возможные значения:\n" + " disabled - не использовать кэш\n" + " readonly - использовать кэш для сборки, но не обновляет его (значение по умолчанию)\n" + " update - использовать кэш для сборки и презаписывать, если не совпадает\n" + " force-update - всегда выполнять сборку и обновить значения в кэше\n" + "Отключается при использовании watch-режима"
54
54
  }, {
55
55
  name: "use-last-stable-version",
56
56
  defaultValue: {
@@ -60,7 +60,7 @@ const buildFormsOptionsDefinition = (0, _CommandBasedOptionsParser.commandDefini
60
60
  useLastStableVersion: input
61
61
  }),
62
62
  doesNotRequireValue: true,
63
- description: "Уставнавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master"
63
+ description: "Устанавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master"
64
64
  }, {
65
65
  name: "use-prerelease-version",
66
66
  defaultValue: {
@@ -69,7 +69,7 @@ const buildFormsOptionsDefinition = (0, _CommandBasedOptionsParser.commandDefini
69
69
  parse: input => ({
70
70
  usePrereleaseVersion: input
71
71
  }),
72
- description: "Уставнавливает версию движка в файла form.json в последнюю предрелизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid."
72
+ description: "Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid."
73
73
  }, {
74
74
  name: "no-reformat",
75
75
  doesNotRequireValue: true,
@@ -91,7 +91,7 @@ const buildFormsOptionsDefinition = (0, _CommandBasedOptionsParser.commandDefini
91
91
  }),
92
92
  defaultOption: true,
93
93
  multiple: true,
94
- description: "Одна или несколько GFV или GFV-масок для пересобрки. Может содержать значки `?` и `*`."
94
+ description: "Одна или несколько GFV или GFV-масок для пересборки. Может содержать значки `?` и `*`."
95
95
  }, {
96
96
  name: "use-version-from-cache",
97
97
  defaultValue: {
@@ -126,7 +126,7 @@ candy build 1?????
126
126
  \`\`\`
127
127
 
128
128
  \`\`\`
129
- # Собрать форму 104816 и сделить за изменениями
129
+ # Собрать форму 104816 и следить за изменениями
130
130
  candy build 104816 -w
131
131
  \`\`\`
132
132
 
@@ -138,7 +138,7 @@ candy build 104816 --use-prerelease-version bso
138
138
  extendedDetails: `
139
139
  ### Версионирование
140
140
 
141
- При сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соотвествии с [semver](https://semver.org/lang/ru/).
141
+ При сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соответствии с [semver](https://semver.org/lang/ru/).
142
142
  В этом случае будет выбрана последняя подходящая версия.
143
143
 
144
144
  Файл form.json должен выглядеть следующим образом:
@@ -162,4 +162,4 @@ candy build 104816 --use-prerelease-version bso
162
162
  `.trim()
163
163
  });
164
164
  exports.buildFormsOptionsDefinition = buildFormsOptionsDefinition;
165
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkRm9ybXNPcHRpb25zLnRzIl0sIm5hbWVzIjpbImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsImFsaWFzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsIndhdGNoIiwicGFyc2UiLCJpbnB1dCIsImRvZXNOb3RSZXF1aXJlVmFsdWUiLCJkZXNjcmlwdGlvbiIsImNsZWFuIiwidXBncmFkZUZvcm1Kc29uIiwiYnVpbGRDYWNoZU1vZGUiLCJCdWlsZENhY2hlTW9kZSIsIlJlYWRPbmx5IiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsInVuZGVmaW5lZCIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwiZm9ybUdsb2JzIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsImRldk1vZGVPcHRpb24iLCJsb2dWZXJib3NpdHlPcHRpb24iLCJkZXRhaWxlZERlc2NyaXB0aW9uIiwidHJpbSIsImV4YW1wbGVzIiwiZXh0ZW5kZWREZXRhaWxzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBY08sTUFBTUEsMkJBQTJCLEdBQUcsa0RBQ3ZDLE9BRHVDLEVBRXZDLE9BRnVDLEVBR3ZDLGtEQUNJO0FBQ0lDLEVBQUFBLEtBQUssRUFBRSxHQURYO0FBRUlDLEVBQUFBLElBQUksRUFBRSxPQUZWO0FBR0lDLEVBQUFBLFlBQVksRUFBRTtBQUFFQyxJQUFBQSxLQUFLLEVBQUU7QUFBVCxHQUhsQjtBQUlJQyxFQUFBQSxLQUFLLEVBQUVDLEtBQUssS0FBSztBQUFFRixJQUFBQSxLQUFLLEVBQUVFO0FBQVQsR0FBTCxDQUpoQjtBQUtJQyxFQUFBQSxtQkFBbUIsRUFBRSxJQUx6QjtBQU1JQyxFQUFBQSxXQUFXLEVBQ1A7QUFQUixDQURKLEVBVUk7QUFDSU4sRUFBQUEsSUFBSSxF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O0FBSUlFLEVBQUFBLFdBQVcsRUFBRSw2REFKakI7QUFLSUQsRUFBQUEsbUJBQW1CLEVBQUU7QUFMekIsQ0FyRUosRUE0RUllLHFDQTVFSixFQTZFSUMsMENBN0VKLENBSHVDLEVBa0Z2QztBQUNJZixFQUFBQSxXQUFXLEVBQ1Asa0RBQ0Esc0ZBSFI7QUFLSWdCLEVBQUFBLG1CQUFtQixFQUFHO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQVQ2QixDQVMzQkMsSUFUMkIsRUFMekI7QUFnQklDLEVBQUFBLFFBQVEsRUFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBcEJrQixDQW9CaEJELElBcEJnQixFQWhCZDtBQXNDSUUsRUFBQUEsZUFBZSxFQUFHO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQXhCeUIsQ0F3QnZCRixJQXhCdUI7QUF0Q3JCLENBbEZ1QyxDQUFwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1hbmREZWZpbml0aW9uLCBvcHRpb25zRGVmaW5pdGlvbiB9IGZyb20gXCIuLi8uLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbnNcIjtcbmltcG9ydCB7IGRldk1vZGVPcHRpb24sIGxvZ1ZlcmJvc2l0eU9wdGlvbiB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbkRlZmludGlvbnNcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUsIHBhcnNlQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi9CdWlsZENhY2hlTW9kZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRm9ybXNPcHRpb25zIGV4dGVuZHMgQ29tbW9uT3B0aW9ucyB7XG4gICAgd2F0Y2g6IGJvb2xlYW47XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgZm9ybUdsb2JzOiBzdHJpbmdbXTtcbiAgICB1cGdyYWRlRm9ybUpzb246IGJvb2xlYW47XG4gICAgdXNlTGFzdFN0YWJsZVZlcnNpb246IGJvb2xlYW47XG4gICAgdXNlUHJlcmVsZWFzZVZlcnNpb24/OiBzdHJpbmc7XG4gICAgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IGJvb2xlYW47XG4gICAgdXNlVmVyc2lvbkZyb21DYWNoZTogYm9vbGVhbjtcbiAgICBidWlsZENhY2hlTW9kZTogQnVpbGRDYWNoZU1vZGU7XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZEZvcm1zT3B0aW9uc0RlZmluaXRpb24gPSBjb21tYW5kRGVmaW5pdGlvbjxcImJ1aWxkXCIsIEJ1aWxkRm9ybXNPcHRpb25zPihcbiAgICBcImJ1aWxkXCIsXG4gICAgXCJidWlsZFwiLFxuICAgIG9wdGlvbnNEZWZpbml0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJ3XCIsXG4gICAgICAgICAgICBuYW1lOiBcIndhdGNoXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgd2F0Y2g6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgd2F0Y2g6IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwiV2F0Y2gt0YDQtdC20LjQvC4g0JLRi9C/0L7Qu9C90Y/QtdGCINGB0LHQvtGA0LrRgyDRhNC+0YDQvCwg0LAg0LfQsNGC0LXQvCDQv9C10YDQtdGB0L7QsdC40YDQsNC10YIg0L/RgNC4INC40LfQvNC10L3QtdC90LjRj9GFLiDQkiDRgtC+0Lwg0YfQuNGB0LvQtSDQtNCy0LjQttC60LAsINCz0LXQvdC10YDQsNGC0L7RgNCwINC4INGB0YLQsNGC0LjRh9C10YHQutC40YUg0YDQtdGB0YPRgNGB0L7Qsi5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGNsZWFuOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGNsZWFuOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCf0L7Qu9C90L7RgdGC0YzRjiDQvtGH0LjRidCw0LXRgiDRhtC10LvQtdCy0L7QuSDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/RgNC4INC/0L7Qu9C90L7QuSDRgdCx0L7RgNC60LUg0YTQvtGA0Lwg0LTQu9GPINC/0YDQvtC00LDQutGI0LXQvdCwXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXBncmFkZS1mb3JtLWpzb25cIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1cGdyYWRlRm9ybUpzb246IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgdXBncmFkZUZvcm1Kc29uOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCLQpNC+0YDRgdC40YDRg9C10YIg0LjQt9C80LXQvdC10L3QuNC1INGE0L7RgNC80LDRgtCwINGE0LDQudC70LAgZm9ybS5qc29uINC90LAg0L3QvtCy0YvQuVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImJ1aWxkLWNhY2hlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgYnVpbGRDYWNoZU1vZGU6IEJ1aWxkQ2FjaGVNb2RlLlJlYWRPbmx5IH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmcpID0+ICh7IGJ1aWxkQ2FjaGVNb2RlOiBwYXJzZUJ1aWxkQ2FjaGVNb2RlKGlucHV0KSB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0JfQsNC00LDRkdGCINGA0LXQttC40Lwg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LrRjdGI0LAg0YHQsdC+0YDQutC4LiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzpcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIGRpc2FibGVkIC0g0L3QtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LrRjdGIXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiICByZWFkb25seSAtINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQutGN0Ygg0LTQu9GPINGB0LHQvtGA0LrQuCwg0L3QviDQvdC1INC+0LHQvdC+0LLQu9GP0LXRgtGMINC10LPQviAo0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjilcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIHVwZGF0ZSAtINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQutGN0Ygg0LTQu9GPINGB0LHQvtGA0LrQuCDQuCDQv9GA0LXQt9Cw0L/QuNGB0YvQstCw0YLRjCwg0LXRgdC70Lgg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YJcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIGZvcmNlLXVwZGF0ZSAtINCy0YHQtdCz0LTQsCDQstGL0L/QvtC70L3Rj9GC0Ywg0YHQsdC+0YDQutGDINC4INC+0LHQvdC+0LLQuNGC0Ywg0LfQvdCw0YfQtdC90LjRjyDQsiDQutGN0YjQtVxcblwiICtcbiAgICAgICAgICAgICAgICBcItCe0YLQutC70Y7Rh9Cw0LXRgtGB0Y8g0L/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC4IHdhdGNoLdGA0LXQttC40LzQsFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVzZS1sYXN0LXN0YWJsZS12ZXJzaW9uXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgdXNlTGFzdFN0YWJsZVZlcnNpb246IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgdXNlTGFzdFN0YWJsZVZlcnNpb246IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0KPRgdGC0LDQstC90LDQstC70LjQstCw0LXRgiDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINCyINGE0LDQudC70LAgYGZvcm0uanNvbmAg0LIg0L/QvtGB0LvQtdC00L3RjtGOINGB0YLQsNCx0LjQu9GM0L3Rg9GOINCy0LXRgNGB0LjRji4g0JDQvdCw0LvQvtCz0LjRh9C10L0g0LfQsNC/0YPRgdC60YMgY2FuZHktYnVpbGQg0YEg0L/QsNGA0LDQvNC10YLRgNC+0LwgLWdlIG1hc3RlclwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVzZS1wcmVyZWxlYXNlLXZlcnNpb25cIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1c2VQcmVyZWxlYXNlVmVyc2lvbjogdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB8IHN0cmluZyB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nKSA9PiAoeyB1c2VQcmVyZWxlYXNlVmVyc2lvbjogaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCj0YHRgtCw0LLQvdCw0LLQu9C40LLQsNC10YIg0LLQtdGA0YHQuNGOINC00LLQuNC20LrQsCDQsiDRhNCw0LnQu9CwIGZvcm0uanNvbiDQsiDQv9C+0YHQu9C10LTQvdGO0Y4g0L/RgNC10LTRgNC10LvQuNC30L3Rg9GOINCy0LXRgNGB0LjRjiDQsiDQt9Cw0LTQsNC90L3Ri9C8IHByZWlkLiDQkiDRhNCw0LnQu9C1INCy0LXRgNGB0LjQuCDQs9C10L3QtdGA0LDRgtC+0YDQsCDQuCDQtNCy0LjQttC60LAg0LHRg9C00YPRgiDRg9GB0YLQsNC90L7QstC70LXQvdGLINCyIHByZTpzb21lLXByZWlkLlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIm5vLXJlZm9ybWF0XCIsXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiB0cnVlIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBib29sZWFuKSA9PiAoeyBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCe0YLQu9GO0YfQsNC10YIg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDQutC+0LTQsC4g0KDQsNCx0L7RgtCw0LXRgiwg0YLQvtC70YzQutC+INC10YHQu9C4INCy0LXRgNGB0LjRjyDQs9C10L3QtdGA0LDRgtC+0YDQsCDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0Y3RgtGDINC+0L/RhtC40Y4uINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0YPRgdC60L7RgNC10L3QuNGPINGB0LHQvtGA0LrQuCDRhNC+0YDQvC4gKGRlZmF1bHQ6IHRydWUpXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGFsaWFzOiBcImdcIixcbiAgICAgICAgICAgIG5hbWU6IFwiZ2Z2c1wiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGZvcm1HbG9iczogW10gfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZ1tdKSA9PiAoeyBmb3JtR2xvYnM6IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0J7QtNC90LAg0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviBHRlYg0LjQu9C4IEdGVi3QvNCw0YHQvtC6INC00LvRjyDQv9C10YDQtdGB0L7QsdGA0LrQuC4g0JzQvtC20LXRgiDRgdC+0LTQtdGA0LbQsNGC0Ywg0LfQvdCw0YfQutC4IGA/YCDQuCBgKmAuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXNlLXZlcnNpb24tZnJvbS1jYWNoZVwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHVzZVZlcnNpb25Gcm9tQ2FjaGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBib29sZWFuKSA9PiAoeyB1c2VWZXJzaW9uRnJvbUNhY2hlOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCY0YHQv9C+0LvRjNC30L7QstCw0YLRjCDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINC4INCz0LXQvdC10YDQsNGC0L7RgNCwINC40Lcg0YTQsNC50LvQvtCy0L7QuSDRgdC40YHRgtC10LzRi1wiLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGV2TW9kZU9wdGlvbixcbiAgICAgICAgbG9nVmVyYm9zaXR5T3B0aW9uXG4gICAgKSxcbiAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgXCLQktGL0L/QvtC70L3Rj9C10YIg0YHQsdC+0YDQutGDINC+0LTQvdC+0Lkg0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQuNGFINGE0L7RgNC8LlxcblwiICtcbiAgICAgICAgICAgIFwi0J/QvtC00YDQvtCx0L3QtdC1OiBodHRwczovL2dpdC5za2Jrb250dXIucnUva2UvY2FuZHktdXRpbHMvYmxvYi9uZXctY2FuZHktdG9vbC1jbGkvUkVBRE1FLm1kXCIsXG5cbiAgICAgICAgZGV0YWlsZWREZXNjcmlwdGlvbjogYFxu0J7RgdC90L7QstC90L7QuSDRgdGG0LXQvdCw0YDQuNC5OiDQstGL0L/QvtC70L3Rj9C10YIg0YHQsdC+0YDQutGDINGE0L7RgNC8INCyINC60LDRgtCw0LvQvtCzINGBINGA0LXRgdGD0YDRgdCw0LzQuC4g0JTQtdC50YHRgtCy0LjRjywg0LrQvtGC0L7RgNGL0LUg0LLRi9C/0L7Qu9C90Y/QtdGCINC60L7QvNCw0L3QtNCwOlxuXG4qINCf0L7Qu9GD0YfQtdC90LjQtSDQtNCy0LjQttC60LAg0YTQvtGA0Lwg0LLQtdGA0YHQuNC4INGD0LrQsNC30LDQvdC90L7QuSDQsiBcXGBmb3JtLmpzb25cXGAsXG4qINC/0L7Qu9GD0YfQtdC90LjQtSDQs9C10L3QtdGA0LDRgtC+0YDQsCDRhNC+0YDQvCDQstC10YDRgdC40Lgg0YPQutCw0LfQsNC90L3QvtC5INCyIFxcYGZvcm0uanNvblxcYCxcbiog0LPQtdC90LXRgNCw0YbQuNGPINC4INC60L7QvNC/0LjQu9GP0YbQuNGPINGE0L7RgNC80Ysg0LIg0LrQsNGC0LDQu9C+0LMg0YDQtdGB0YPRgNGB0L7Qsixcbiog0YHQvtC30LTQsNC90LjQtSDRhNCw0LnQu9C+0LIgXFxge2dmdn0ubWV0YXMuanNvblxcYCDQuCBcXGBwcmVzZW50YXRpb25zLmpzb25cXGAg0LIg0LrQsNGC0LDQu9C+0LPQtSDRgNC10YHRg9GA0YHQvtCyXG4qINC60L7Qv9C40YDQvtCy0LDQvdC40LUg0LrQvtC90LLQtdGA0YLQtdGA0L7QsiDQsiDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLFxuKiDQutC+0L/QuNGA0L7QstCw0L3QuNC1INGB0YXQtdC80Ysg0LIg0LrQsNGC0LDQu9C+0LMg0YDQtdGB0YPRgNGB0L7Qsi5cbmAudHJpbSgpLFxuXG4gICAgICAgIGV4YW1wbGVzOiBgXG5cXGBcXGBcXGBcbiMg0KHQsdC+0YDQutCwINGE0L7RgNC80YsgMTA0ODE2XG5jYW5keSBidWlsZCAxMDQ4MTZcblxcYFxcYFxcYFxuXG5cXGBcXGBcXGBcbiMg0KHQsdC+0YDQutCwINCy0YHQtSDRhNC+0YDQvNGLINCz0YDRg9C/0L/RiyAxXG5jYW5keSBidWlsZCAxPz8/Pz9cblxcYFxcYFxcYFxuXG5cXGBcXGBcXGBcbiMg0KHQvtCx0YDQsNGC0Ywg0YTQvtGA0LzRgyAxMDQ4MTYg0Lgg0YHQtNC10LvQuNGC0Ywg0LfQsCDQuNC30LzQtdC90LXQvdC40Y/QvNC4XG5jYW5keSBidWlsZCAxMDQ4MTYgLXdcblxcYFxcYFxcYFxuXG5cXGBcXGBcXGBcbiMg0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC/0L7RgdC70LXQtNC90Y7RjiDQv9GA0LXRgNC10LvQuNC30L3Rg9GOINCy0LXRgNGB0LjRjiDQtNCy0LjQttC60LAg0YEgcHJlaWQ9YnNvXG5jYW5keSBidWlsZCAxMDQ4MTYgLS11c2UtcHJlcmVsZWFzZS12ZXJzaW9uIGJzb1xuXFxgXFxgXFxgXG5gLnRyaW0oKSxcblxuICAgICAgICBleHRlbmRlZERldGFpbHM6IGBcbiMjIyDQktC10YDRgdC40L7QvdC40YDQvtCy0LDQvdC40LVcblxu0J/RgNC4INGB0LHQvtGA0LrQtSDRhNC+0YDQvCwg0YPRh9C40YLRi9Cy0LDQtdGC0YHRjyDQstC10YDRgdC40Y8g0LTQstC40LbQutCwINC4INCz0LXQvdC10YDQsNGC0L7RgNCwINGD0LrQsNC30LDQvdC90YvQtSDRhNCw0LnQu9C1IGZvcm0uanNvbi4g0JLQtdGA0YHQuNC4INC80L7Qs9GD0YIg0YPQutCw0LfRi9Cy0LDRgtGMINC90LUg0L3QsCDQutC+0L3QutGA0LXRgtC90YPRjiDQstC10YDRgdC40Y4sINCwINCw0LTRgNC10YHQvtCy0LDRgtGMINC00LjQsNC/0LDQt9C+0L0g0LIg0YHQvtC+0YLQstC10YHRgtCy0LjQuCDRgSBbc2VtdmVyXShodHRwczovL3NlbXZlci5vcmcvbGFuZy9ydS8pLlxu0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INCx0YPQtNC10YIg0LLRi9Cx0YDQsNC90LAg0L/QvtGB0LvQtdC00L3Rj9GPINC/0L7QtNGF0L7QtNGP0YnQsNGPINCy0LXRgNGB0LjRjy5cblxu0KTQsNC50LsgZm9ybS5qc29uINC00L7Qu9C20LXQvSDQstGL0LPQu9GP0LTQtdGC0Ywg0YHQu9C10LTRg9GO0YnQuNC8INC+0LHRgNCw0LfQvtC8OlxuXFxgXFxgXFxgXG57XG4gICAgLy8g0J7Qv9GG0LjQvtC90LDQu9GM0L3QvlxuICAgIFwidGhlbWVzXCI6IFtcItC40LzRjy3RgtC10LzRi1wiLCAuLi5dLFxuICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgICAgXCJlbmdpbmVcIjogXCJb0LLQtdGA0YHQuNGPLdC00LLQuNC20LrQsF1cIixcbiAgICAgICAgXCJnZW5lcmF0b3JcIjogXCJb0LLQtdGA0YHQuNGPLdCz0LXQvdC10YDQsNGC0L7RgNCwXVwiXG4gICAgfVxufVxuXFxgXFxgXFxgXG5cblxcYNCy0LXRgNGB0LjRjy3QtNCy0LjQttC60LBcXGAsIFxcYNCy0LXRgNGB0LjRjy3Qs9C10L3QtdGA0LDRgtC+0YDQsFxcYCAtINCh0L7QvtGC0LLQtdGC0YHRgtCy0LXQvdC90L4sINC00LjQsNC/0LDQt9C+0L3RiyDQstC10YDRgdC40LkuINCd0LAg0LTQsNC90L3Ri9C5INC80L7QvNC10L3RgiDQstGB0LXQs9C00LAg0YHQvtCy0L/QsNC00LDRjtGCLlxuXG7QlNC+0L/Rg9GB0YLQuNC80YvQtSDQstCw0YDQuNCw0L3RgtGLINCy0LXRgNGB0LjQuTpcbiog0JLQtdGA0YHQuNGPINCyINGE0L7RgNC80LDRgtC1IFtzZW12ZXJdKGh0dHBzOi8vc2VtdmVyLm9yZy9sYW5nL3J1LykuXG4qINCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlLiDQndCw0L/RgNC40LzQtdGALCBcXGBwcmU6bXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgLCDQs9C00LUgXFxgbXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgIC0g0L3QsNC30LLQsNC90LjQtSDQv9GA0LXQtNGA0LXQu9C40LfQvdC+0Lkg0LLQtdGA0YHQuNC4LCDQstGL0L/Rg9GB0LrQsNC10LzQvtC5INGA0LDQt9GA0LDQsdC+0YLRh9C40LrQsNC80LggQ2FuZHksINC00LvRjyDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQstGL0L/Rg9GB0LrQsCDRhNC+0YDQvC5cbtCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlINC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0LTQstC40LbQutC+0LIsINC60L7RgtC+0YDRi9C1INC90LUg0Y/QstC70Y/RjtGC0YHRjyDRgdGC0LDQsdC40LvRjNC90YvQvNC4INC4INC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3Ri9GFINGB0LHQvtGA0L7QuiDRhNC+0YDQvC5cbmAudHJpbSgpLFxuICAgIH1cbik7XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkRm9ybXNPcHRpb25zLnRzIl0sIm5hbWVzIjpbImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsImFsaWFzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsIndhdGNoIiwicGFyc2UiLCJpbnB1dCIsImRvZXNOb3RSZXF1aXJlVmFsdWUiLCJkZXNjcmlwdGlvbiIsImNsZWFuIiwidXBncmFkZUZvcm1Kc29uIiwiYnVpbGRDYWNoZU1vZGUiLCJCdWlsZENhY2hlTW9kZSIsIlJlYWRPbmx5IiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsInVuZGVmaW5lZCIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwiZm9ybUdsb2JzIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsImRldk1vZGVPcHRpb24iLCJsb2dWZXJib3NpdHlPcHRpb24iLCJkZXRhaWxlZERlc2NyaXB0aW9uIiwidHJpbSIsImV4YW1wbGVzIiwiZXh0ZW5kZWREZXRhaWxzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBY08sTUFBTUEsMkJBQTJCLEdBQUcsa0RBQ3ZDLE9BRHVDLEVBRXZDLE9BRnVDLEVBR3ZDLGtEQUNJO0FBQ0lDLEVBQUFBLEtBQUssRUFBRSxHQURYO0FBRUlDLEVBQUFBLElBQUksRUFBRSxPQUZWO0FBR0lDLEVBQUFBLFlBQVksRUFBRTtBQUFFQyxJQUFBQSxLQUFLLEVBQUU7QUFBVCxHQUhsQjtBQUlJQyxFQUFBQSxLQUFLLEVBQUVDLEtBQUssS0FBSztBQUFFRixJQUFBQSxLQUFLLEVBQUVFO0FBQVQsR0FBTCxDQUpoQjtBQUtJQyxFQUFBQSxtQkFBbUIsRUFBRSxJQUx6QjtBQU1JQyxFQUFBQSxXQUFXLEVBQ1A7QUFQUixDQURKLEVBVUk7QUFDSU4sRUFBQUEsSUFBSSxF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O0FBSUlFLEVBQUFBLFdBQVcsRUFBRSw2REFKakI7QUFLSUQsRUFBQUEsbUJBQW1CLEVBQUU7QUFMekIsQ0FyRUosRUE0RUllLHFDQTVFSixFQTZFSUMsMENBN0VKLENBSHVDLEVBa0Z2QztBQUNJZixFQUFBQSxXQUFXLEVBQ1Asa0RBQ0Esc0ZBSFI7QUFLSWdCLEVBQUFBLG1CQUFtQixFQUFHO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQVQ2QixDQVMzQkMsSUFUMkIsRUFMekI7QUFnQklDLEVBQUFBLFFBQVEsRUFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBcEJrQixDQW9CaEJELElBcEJnQixFQWhCZDtBQXNDSUUsRUFBQUEsZUFBZSxFQUFHO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQXhCeUIsQ0F3QnZCRixJQXhCdUI7QUF0Q3JCLENBbEZ1QyxDQUFwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1hbmREZWZpbml0aW9uLCBvcHRpb25zRGVmaW5pdGlvbiB9IGZyb20gXCIuLi8uLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbnNcIjtcbmltcG9ydCB7IGRldk1vZGVPcHRpb24sIGxvZ1ZlcmJvc2l0eU9wdGlvbiB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbkRlZmludGlvbnNcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUsIHBhcnNlQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi9CdWlsZENhY2hlTW9kZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRm9ybXNPcHRpb25zIGV4dGVuZHMgQ29tbW9uT3B0aW9ucyB7XG4gICAgd2F0Y2g6IGJvb2xlYW47XG4gICAgY2xlYW46IGJvb2xlYW47XG4gICAgZm9ybUdsb2JzOiBzdHJpbmdbXTtcbiAgICB1cGdyYWRlRm9ybUpzb246IGJvb2xlYW47XG4gICAgdXNlTGFzdFN0YWJsZVZlcnNpb246IGJvb2xlYW47XG4gICAgdXNlUHJlcmVsZWFzZVZlcnNpb24/OiBzdHJpbmc7XG4gICAgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IGJvb2xlYW47XG4gICAgdXNlVmVyc2lvbkZyb21DYWNoZTogYm9vbGVhbjtcbiAgICBidWlsZENhY2hlTW9kZTogQnVpbGRDYWNoZU1vZGU7XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZEZvcm1zT3B0aW9uc0RlZmluaXRpb24gPSBjb21tYW5kRGVmaW5pdGlvbjxcImJ1aWxkXCIsIEJ1aWxkRm9ybXNPcHRpb25zPihcbiAgICBcImJ1aWxkXCIsXG4gICAgXCJidWlsZFwiLFxuICAgIG9wdGlvbnNEZWZpbml0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJ3XCIsXG4gICAgICAgICAgICBuYW1lOiBcIndhdGNoXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgd2F0Y2g6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgd2F0Y2g6IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwiV2F0Y2gt0YDQtdC20LjQvC4g0JLRi9C/0L7Qu9C90Y/QtdGCINGB0LHQvtGA0LrRgyDRhNC+0YDQvCwg0LAg0LfQsNGC0LXQvCDQv9C10YDQtdGB0L7QsdC40YDQsNC10YIg0L/RgNC4INC40LfQvNC10L3QtdC90LjRj9GFLiDQkiDRgtC+0Lwg0YfQuNGB0LvQtSDQtNCy0LjQttC60LAsINCz0LXQvdC10YDQsNGC0L7RgNCwINC4INGB0YLQsNGC0LjRh9C10YHQutC40YUg0YDQtdGB0YPRgNGB0L7Qsi5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjbGVhblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGNsZWFuOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGNsZWFuOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCf0L7Qu9C90L7RgdGC0YzRjiDQvtGH0LjRidCw0LXRgiDRhtC10LvQtdCy0L7QuSDQutCw0YLQsNC70L7QsyDRgNC10YHRg9GA0YHQvtCyLiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0L/RgNC4INC/0L7Qu9C90L7QuSDRgdCx0L7RgNC60LUg0YTQvtGA0Lwg0LTQu9GPINC/0YDQvtC00LDQutGI0LXQvdCwXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXBncmFkZS1mb3JtLWpzb25cIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1cGdyYWRlRm9ybUpzb246IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgdXBncmFkZUZvcm1Kc29uOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCLQpNC+0YDRgdC40YDRg9C10YIg0LjQt9C80LXQvdC10L3QuNC1INGE0L7RgNC80LDRgtCwINGE0LDQudC70LAgZm9ybS5qc29uINC90LAg0L3QvtCy0YvQuVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImJ1aWxkLWNhY2hlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgYnVpbGRDYWNoZU1vZGU6IEJ1aWxkQ2FjaGVNb2RlLlJlYWRPbmx5IH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmcpID0+ICh7IGJ1aWxkQ2FjaGVNb2RlOiBwYXJzZUJ1aWxkQ2FjaGVNb2RlKGlucHV0KSB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0JfQsNC00LDRkdGCINGA0LXQttC40Lwg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LrRjdGI0LAg0YHQsdC+0YDQutC4LiDQktC+0LfQvNC+0LbQvdGL0LUg0LfQvdCw0YfQtdC90LjRjzpcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgIGRpc2FibGVkIC0g0L3QtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LrRjdGIXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiICByZWFkb25seSAtINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQutGN0Ygg0LTQu9GPINGB0LHQvtGA0LrQuCwg0L3QviDQvdC1INC+0LHQvdC+0LLQu9GP0LXRgiDQtdCz0L4gKNC30L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4pXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiICB1cGRhdGUgLSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LrRjdGIINC00LvRjyDRgdCx0L7RgNC60Lgg0Lgg0L/RgNC10LfQsNC/0LjRgdGL0LLQsNGC0YwsINC10YHQu9C4INC90LUg0YHQvtCy0L/QsNC00LDQtdGCXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiICBmb3JjZS11cGRhdGUgLSDQstGB0LXQs9C00LAg0LLRi9C/0L7Qu9C90Y/RgtGMINGB0LHQvtGA0LrRgyDQuCDQvtCx0L3QvtCy0LjRgtGMINC30L3QsNGH0LXQvdC40Y8g0LIg0LrRjdGI0LVcXG5cIiArXG4gICAgICAgICAgICAgICAgXCLQntGC0LrQu9GO0YfQsNC10YLRgdGPINC/0YDQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQuCB3YXRjaC3RgNC10LbQuNC80LBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ1c2UtbGFzdC1zdGFibGUtdmVyc2lvblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHVzZUxhc3RTdGFibGVWZXJzaW9uOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IHVzZUxhc3RTdGFibGVWZXJzaW9uOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0LXRgNGB0LjRjiDQtNCy0LjQttC60LAg0LIg0YTQsNC50LvQsCBgZm9ybS5qc29uYCDQsiDQv9C+0YHQu9C10LTQvdGO0Y4g0YHRgtCw0LHQuNC70YzQvdGD0Y4g0LLQtdGA0YHQuNGOLiDQkNC90LDQu9C+0LPQuNGH0LXQvSDQt9Cw0L/Rg9GB0LrRgyBjYW5keS1idWlsZCDRgSDQv9Cw0YDQsNC80LXRgtGA0L7QvCAtZ2UgbWFzdGVyXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwidXNlLXByZXJlbGVhc2UtdmVyc2lvblwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IHVzZVByZXJlbGVhc2VWZXJzaW9uOiB1bmRlZmluZWQgYXMgdW5kZWZpbmVkIHwgc3RyaW5nIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmcpID0+ICh7IHVzZVByZXJlbGVhc2VWZXJzaW9uOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LLQtdGA0YHQuNGOINC00LLQuNC20LrQsCDQsiDRhNCw0LnQu9CwIGZvcm0uanNvbiDQsiDQv9C+0YHQu9C10LTQvdGO0Y4g0L/RgNC10YDQtdC70LjQt9C90YPRjiDQstC10YDRgdC40Y4g0LIg0LfQsNC00LDQvdC90YvQvCBwcmVpZC4g0JIg0YTQsNC50LvQtSDQstC10YDRgdC40Lgg0LPQtdC90LXRgNCw0YLQvtGA0LAg0Lgg0LTQstC40LbQutCwINCx0YPQtNGD0YIg0YPRgdGC0LDQvdC+0LLQu9C10L3RiyDQsiBwcmU6c29tZS1wcmVpZC5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJuby1yZWZvcm1hdFwiLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogdHJ1ZSB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogYm9vbGVhbikgPT4gKHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQntGC0LvRjtGH0LDQtdGCINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC40LUg0LPQtdC90LXRgNC40YDRg9C10LzQvtCz0L4g0LrQvtC00LAuINCg0LDQsdC+0YLQsNC10YIsINGC0L7Qu9GM0LrQviDQtdGB0LvQuCDQstC10YDRgdC40Y8g0LPQtdC90LXRgNCw0YLQvtGA0LAg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINGN0YLRgyDQvtC/0YbQuNGOLiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINGD0YHQutC+0YDQtdC90LjRjyDRgdCx0L7RgNC60Lgg0YTQvtGA0LwuIChkZWZhdWx0OiB0cnVlKVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJnXCIsXG4gICAgICAgICAgICBuYW1lOiBcImdmdnNcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBmb3JtR2xvYnM6IFtdIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmdbXSkgPT4gKHsgZm9ybUdsb2JzOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCe0LTQvdCwINC40LvQuCDQvdC10YHQutC+0LvRjNC60L4gR0ZWINC40LvQuCBHRlYt0LzQsNGB0L7QuiDQtNC70Y8g0L/QtdGA0LXRgdCx0L7RgNC60LguINCc0L7QttC10YIg0YHQvtC00LXRgNC20LDRgtGMINC30L3QsNGH0LrQuCBgP2Ag0LggYCpgLlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInVzZS12ZXJzaW9uLWZyb20tY2FjaGVcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyB1c2VWZXJzaW9uRnJvbUNhY2hlOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogYm9vbGVhbikgPT4gKHsgdXNlVmVyc2lvbkZyb21DYWNoZTogaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCLQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LLQtdGA0YHQuNGOINC00LLQuNC20LrQsCDQuCDQs9C10L3QtdGA0LDRgtC+0YDQsCDQuNC3INGE0LDQudC70L7QstC+0Lkg0YHQuNGB0YLQtdC80YtcIixcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRldk1vZGVPcHRpb24sXG4gICAgICAgIGxvZ1ZlcmJvc2l0eU9wdGlvblxuICAgICksXG4gICAge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi0JLRi9C/0L7Qu9C90Y/QtdGCINGB0LHQvtGA0LrRgyDQvtC00L3QvtC5INC40LvQuCDQvdC10YHQutC+0LvRjNC60LjRhSDRhNC+0YDQvC5cXG5cIiArXG4gICAgICAgICAgICBcItCf0L7QtNGA0L7QsdC90LXQtTogaHR0cHM6Ly9naXQuc2tia29udHVyLnJ1L2tlL2NhbmR5LXV0aWxzL2Jsb2IvbmV3LWNhbmR5LXRvb2wtY2xpL1JFQURNRS5tZFwiLFxuXG4gICAgICAgIGRldGFpbGVkRGVzY3JpcHRpb246IGBcbtCe0YHQvdC+0LLQvdC+0Lkg0YHRhtC10L3QsNGA0LjQuTog0LLRi9C/0L7Qu9C90Y/QtdGCINGB0LHQvtGA0LrRgyDRhNC+0YDQvCDQsiDQutCw0YLQsNC70L7QsyDRgSDRgNC10YHRg9GA0YHQsNC80LguINCU0LXQudGB0YLQstC40Y8sINC60L7RgtC+0YDRi9C1INCy0YvQv9C+0LvQvdGP0LXRgiDQutC+0LzQsNC90LTQsDpcblxuKiDQn9C+0LvRg9GH0LXQvdC40LUg0LTQstC40LbQutCwINGE0L7RgNC8INCy0LXRgNGB0LjQuCDRg9C60LDQt9Cw0L3QvdC+0Lkg0LIgXFxgZm9ybS5qc29uXFxgLFxuKiDQv9C+0LvRg9GH0LXQvdC40LUg0LPQtdC90LXRgNCw0YLQvtGA0LAg0YTQvtGA0Lwg0LLQtdGA0YHQuNC4INGD0LrQsNC30LDQvdC90L7QuSDQsiBcXGBmb3JtLmpzb25cXGAsXG4qINCz0LXQvdC10YDQsNGG0LjRjyDQuCDQutC+0LzQv9C40LvRj9GG0LjRjyDRhNC+0YDQvNGLINCyINC60LDRgtCw0LvQvtCzINGA0LXRgdGD0YDRgdC+0LIsXG4qINGB0L7Qt9C00LDQvdC40LUg0YTQsNC50LvQvtCyIFxcYHtnZnZ9Lm1ldGFzLmpzb25cXGAg0LggXFxgcHJlc2VudGF0aW9ucy5qc29uXFxgINCyINC60LDRgtCw0LvQvtCz0LUg0YDQtdGB0YPRgNGB0L7QslxuKiDQutC+0L/QuNGA0L7QstCw0L3QuNC1INC60L7QvdCy0LXRgNGC0LXRgNC+0LIg0LIg0LrQsNGC0LDQu9C+0LMg0YDQtdGB0YPRgNGB0L7Qsixcbiog0LrQvtC/0LjRgNC+0LLQsNC90LjQtSDRgdGF0LXQvNGLINCyINC60LDRgtCw0LvQvtCzINGA0LXRgdGD0YDRgdC+0LIuXG5gLnRyaW0oKSxcblxuICAgICAgICBleGFtcGxlczogYFxuXFxgXFxgXFxgXG4jINCh0LHQvtGA0LrQsCDRhNC+0YDQvNGLIDEwNDgxNlxuY2FuZHkgYnVpbGQgMTA0ODE2XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCh0LHQvtGA0LrQsCDQstGB0LUg0YTQvtGA0LzRiyDQs9GA0YPQv9C/0YsgMVxuY2FuZHkgYnVpbGQgMT8/Pz8/XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCh0L7QsdGA0LDRgtGMINGE0L7RgNC80YMgMTA0ODE2INC4INGB0LvQtdC00LjRgtGMINC30LAg0LjQt9C80LXQvdC10L3QuNGP0LzQuFxuY2FuZHkgYnVpbGQgMTA0ODE2IC13XG5cXGBcXGBcXGBcblxuXFxgXFxgXFxgXG4jINCY0YHQv9C+0LvRjNC30L7QstCw0YLRjCDQv9C+0YHQu9C10LTQvdGO0Y4g0L/RgNC10YDQtdC70LjQt9C90YPRjiDQstC10YDRgdC40Y4g0LTQstC40LbQutCwINGBIHByZWlkPWJzb1xuY2FuZHkgYnVpbGQgMTA0ODE2IC0tdXNlLXByZXJlbGVhc2UtdmVyc2lvbiBic29cblxcYFxcYFxcYFxuYC50cmltKCksXG5cbiAgICAgICAgZXh0ZW5kZWREZXRhaWxzOiBgXG4jIyMg0JLQtdGA0YHQuNC+0L3QuNGA0L7QstCw0L3QuNC1XG5cbtCf0YDQuCDRgdCx0L7RgNC60LUg0YTQvtGA0LwsINGD0YfQuNGC0YvQstCw0LXRgtGB0Y8g0LLQtdGA0YHQuNGPINC00LLQuNC20LrQsCDQuCDQs9C10L3QtdGA0LDRgtC+0YDQsCDRg9C60LDQt9Cw0L3QvdGL0LUg0YTQsNC50LvQtSBmb3JtLmpzb24uINCS0LXRgNGB0LjQuCDQvNC+0LPRg9GCINGD0LrQsNC30YvQstCw0YLRjCDQvdC1INC90LAg0LrQvtC90LrRgNC10YLQvdGD0Y4g0LLQtdGA0YHQuNGOLCDQsCDQsNC00YDQtdGB0L7QstCw0YLRjCDQtNC40LDQv9Cw0LfQvtC9INCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSBbc2VtdmVyXShodHRwczovL3NlbXZlci5vcmcvbGFuZy9ydS8pLlxu0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INCx0YPQtNC10YIg0LLRi9Cx0YDQsNC90LAg0L/QvtGB0LvQtdC00L3Rj9GPINC/0L7QtNGF0L7QtNGP0YnQsNGPINCy0LXRgNGB0LjRjy5cblxu0KTQsNC50LsgZm9ybS5qc29uINC00L7Qu9C20LXQvSDQstGL0LPQu9GP0LTQtdGC0Ywg0YHQu9C10LTRg9GO0YnQuNC8INC+0LHRgNCw0LfQvtC8OlxuXFxgXFxgXFxgXG57XG4gICAgLy8g0J7Qv9GG0LjQvtC90LDQu9GM0L3QvlxuICAgIFwidGhlbWVzXCI6IFtcItC40LzRjy3RgtC10LzRi1wiLCAuLi5dLFxuICAgIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICAgICAgXCJlbmdpbmVcIjogXCJb0LLQtdGA0YHQuNGPLdC00LLQuNC20LrQsF1cIixcbiAgICAgICAgXCJnZW5lcmF0b3JcIjogXCJb0LLQtdGA0YHQuNGPLdCz0LXQvdC10YDQsNGC0L7RgNCwXVwiXG4gICAgfVxufVxuXFxgXFxgXFxgXG5cblxcYNCy0LXRgNGB0LjRjy3QtNCy0LjQttC60LBcXGAsIFxcYNCy0LXRgNGB0LjRjy3Qs9C10L3QtdGA0LDRgtC+0YDQsFxcYCAtINCh0L7QvtGC0LLQtdGC0YHRgtCy0LXQvdC90L4sINC00LjQsNC/0LDQt9C+0L3RiyDQstC10YDRgdC40LkuINCd0LAg0LTQsNC90L3Ri9C5INC80L7QvNC10L3RgiDQstGB0LXQs9C00LAg0YHQvtCy0L/QsNC00LDRjtGCLlxuXG7QlNC+0L/Rg9GB0YLQuNC80YvQtSDQstCw0YDQuNCw0L3RgtGLINCy0LXRgNGB0LjQuTpcbiog0JLQtdGA0YHQuNGPINCyINGE0L7RgNC80LDRgtC1IFtzZW12ZXJdKGh0dHBzOi8vc2VtdmVyLm9yZy9sYW5nL3J1LykuXG4qINCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlLiDQndCw0L/RgNC40LzQtdGALCBcXGBwcmU6bXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgLCDQs9C00LUgXFxgbXktc3RhbmdlLWJyYW5jaC1uYW1lXFxgIC0g0L3QsNC30LLQsNC90LjQtSDQv9GA0LXQtNGA0LXQu9C40LfQvdC+0Lkg0LLQtdGA0YHQuNC4LCDQstGL0L/Rg9GB0LrQsNC10LzQvtC5INGA0LDQt9GA0LDQsdC+0YLRh9C40LrQsNC80LggQ2FuZHksINC00LvRjyDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQstGL0L/Rg9GB0LrQsCDRhNC+0YDQvC5cbtCS0LXRgNGB0LjRjyDRgSDQv9GA0LXRhNC40LrRgdC+0LwgcHJlINC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0LTQstC40LbQutC+0LIsINC60L7RgtC+0YDRi9C1INC90LUg0Y/QstC70Y/RjtGC0YHRjyDRgdGC0LDQsdC40LvRjNC90YvQvNC4INC4INC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQtNC70Y8g0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3Ri9GFINGB0LHQvtGA0L7QuiDRhNC+0YDQvC5cbmAudHJpbSgpLFxuICAgIH1cbik7XG4iXX0=