@kontur.candy/tools 2.130.0 → 2.130.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +5 -1
  3. package/distr/Common/Errors.js +3 -3
  4. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +12 -0
  5. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -2
  6. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -2
  7. package/distr/Common/IndentString.js +18 -0
  8. package/distr/Common/IterableUtils.js +18 -1
  9. package/distr/Common/ModelPath/BuildIterationSequence.js +3 -3
  10. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +30 -0
  11. package/distr/Common/ModelPath/Map/Map2.js +143 -0
  12. package/distr/Common/ModelPath/Map/ModelPathMap.js +30 -0
  13. package/distr/Common/ModelPath/ModelPath.js +182 -154
  14. package/distr/Common/ModelPath/ModelPathBuilder.js +11 -7
  15. package/distr/Common/ModelPath/PathMatcher.js +9 -11
  16. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +40 -0
  17. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +40 -0
  18. package/distr/Common/ModelPath/Set/ModelPathSet.js +40 -0
  19. package/distr/Common/ModelPath/Set/Set2.js +60 -0
  20. package/distr/Common/PathConstants.js +3 -3
  21. package/distr/Common/TypingUtils.js +1 -1
  22. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  23. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  24. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1077 -470
  25. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  26. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +350 -356
  27. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  28. package/package.json +3 -2
  29. package/distr/Common/ModelPath/AbsoluteModelPathSet.js +0 -62
  30. package/distr/Common/ModelPath/ModelPathMap.js +0 -120
  31. package/distr/Common/ModelPath/ModelPathSet.js +0 -66
package/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ <a name="2.130.2"></a>
2
+ ## [2.130.2](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.130.1...release/tools/v2.130.2) (2022-03-29)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * **Tools:** Сборка client.js идет в первую очередь, при обновлении candy.tools ([f230310](https://git.skbkontur.ru/ke/candy-utils/commit/f230310))
8
+
9
+ <a name="2.130.1"></a>
10
+ ## [2.130.1](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.130.0...release/tools/v2.130.1) (2022-03-29)
11
+
1
12
  <a name="2.130.0"></a>
2
13
  # [2.130.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.129.0...release/tools/v2.130.0) (2022-01-06)
3
14
 
@@ -50,6 +50,10 @@ class FakeCandyApiClient {
50
50
  throw new _Errors.NotImplementedError();
51
51
  }
52
52
 
53
+ getFeatureFlagsWithoutPromise(featureFlags) {
54
+ return featureFlags;
55
+ }
56
+
53
57
  getFeatureFlags() {
54
58
  const response = {
55
59
  candyTestFeature: "true"
@@ -201,4 +205,4 @@ class FakeCandyApiDraftClient {
201
205
  }
202
206
 
203
207
  exports.FakeCandyApiDraftClient = FakeCandyApiDraftClient;
204
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3MiLCJyZXNwb25zZSIsImNhbmR5VGVzdEZlYXR1cmUiLCJjYW5jZWxUYXNrIiwidGFza0lkIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwicmVxdWVzdCIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJnZXRBbGxBdHRhY2htZW50cyIsImdldEFsbFRhc2tzIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRFcnJvckxvZyIsImdldEV4cGVydEVycm9yTG9nIiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImdldEhyZWZEb3dubG9hZEZ1ZiIsImdldEhyZWZEb3dubG9hZElubmVyIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZlRvRXJyb3JMb2dQZGYiLCJlcnJvckxvZ05hbWUiLCJwcm9wc05hbWUiLCJnZXRIcmVmVG9Jbm5lckVkaXRvciIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJwYXRocyIsImdldFBhcnRpYWxJbm5lciIsInJ1bGVzIiwibWF4SW5zdGFuY2VDb3VudCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJnZXRUYXNrQnlJZCIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJwYXRjaFByZXNlbnRhdGlvbiIsInR5cGUiLCJjb250ZW50IiwicmVtb3ZlQXR0YWNobWVudHMiLCJhdHRhY2htZW50SWRzIiwic2VuZENoYW5nZVNldCIsInNlbmRDaGFuZ2VTZXRTeW5jIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsInNldFByZXNlbnRhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQXFCQTs7QUFFTyxNQUFNQSxrQkFBTixDQUFvRDtBQUFBO0FBQUEsU0FDdENDLFlBRHNDLEdBQ3ZCLElBQUlDLHdDQUFKLEVBRHVCO0FBQUE7O0FBR2hEQyxFQUFBQSxxQkFBcUIsQ0FBQ0MsV0FBRCxFQUE2QztBQUNyRSxXQUFPLEtBQUtILFlBQVo7QUFDSDs7QUFFTUksRUFBQUEsY0FBYyxDQUFDQyxHQUFELEVBQWNDLElBQWQsRUFBOEM7QUFDL0QsU0FBS04sWUFBTCxDQUFrQkksY0FBbEIsQ0FBaUNDLEdBQWpDLEVBQXNDQyxJQUF0QztBQUNIOztBQUVNQyxFQUFBQSxVQUFVLENBQUNDLFdBQUQsRUFBK0M7QUFDNUQsV0FBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCLEVBQWhCLENBQVA7QUFDSDs7QUFFTUMsRUFBQUEsVUFBVSxHQUFrQjtB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RSxXQUFPOUQsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRXlCLFFBQWI0RCxhQUFhLENBQUNsRSxJQUFELEVBQXVDO0FBQzdELFdBQU9HLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNNkQsRUFBQUEsaUJBQWlCLENBQUNuRSxJQUFELEVBQXdDO0FBQzVELFdBQU8sR0FBUDtBQUNIOztBQUVNb0UsRUFBQUEsZ0JBQWdCLENBQUM3QixRQUFELEVBQWtDO0FBQ3JELFdBQU9wQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTStELEVBQUFBLG9CQUFvQixDQUN2QjlCLFFBRHVCLEVBRXZCK0IsYUFGdUIsRUFHYztBQUNyQyxXQUFPbkUsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU1pRSxFQUFBQSxlQUFlLENBQUNULElBQUQsRUFBOEJDLE9BQTlCLEVBQXdFO0FBQzFGLFdBQU81RCxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUExSWdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQaWNrbGlzdERhdGFJdGVtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tIFwiLi4vRXJyb3JzXCI7XG5pbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5cbmltcG9ydCB0eXBlIHsgSUNhbmR5QXBpQ2xpZW50LCBJQ2FuZHlBcGlEcmFmdENsaWVudCB9IGZyb20gXCIuL0lDYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlcklubmVyUmVzcG9uc2UsIFNlcnZlckpzb25SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZpbGVQcm9wZXJ0aWVzIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEdldEJ5SW5uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1R5cGVzXCI7XG5pbXBvcnQgeyBBdHRhY2hJbmZvIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvQXR0YWNtZW50c1wiO1xuaW1wb3J0IHsgRHJhZnRQcmVzZW50YXRpb25UeXBlIH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9EcmFmdFByZXNlbnRhdGlvblR5cGVcIjtcbmltcG9ydCB7IENvbnZlcnREcmFmdFJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29udmVydERyYWZ0UmVxdWVzdFwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBJRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0lEaWdlc3RBcGlDbGllbnRcIjtcbmltcG9ydCB7IEZha2VEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvRmFrZXMvRmFrZURpZ2VzdEFwaUNsaWVudFwiO1xuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpZ2VzdENsaWVudCA9IG5ldyBGYWtlRGlnZXN0QXBpQ2xpZW50KCk7XG5cbiAgICBwdWJsaWMgY3JlYXRlRGlnZXN0QXBpQ2xpZW50KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElEaWdlc3RBcGlDbGllbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWdlc3RDbGllbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVBpY2tsaXN0KGdJZDogc3RyaW5nLCBkYXRhOiBQaWNrbGlzdERhdGFJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWdlc3RDbGllbnQuY3JlYXRlUGlja2xpc3QoZ0lkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsR2Z2cyhhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkLCBib2R5OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZyB8IHVuZGVmaW5lZCwgYm9keT86IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JEcmFmdChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgICAgIHJldHVybiBuZXcgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnRGcm9tRHJpdmUoXG4gICAgICAgIG5zOiBzdHJpbmcsXG4gICAgICAgIGZ1ZkRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbmZvQnlJbm5zKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgaW5uczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPEdldEJ5SW5uUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmVhdHVyZUZsYWdzKCk6IFByb21pc2U8RmVhdHVyZUZsYWdzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2U6IEZlYXR1cmVGbGFnc1Jlc3BvbnNlID0geyBjYW5keVRlc3RGZWF0dXJlOiBcInRydWVcIiB9O1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICBwdWJsaWMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERyYWZ0RnJvbVByZXZHZnYocmVxdWVzdDogQ29udmVydERyYWZ0UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHM6IHJlYWRvbmx5IEF0dGFjaEluZm9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVucXVldWVUYXNrKHRhc2tJZDogc3RyaW5nLCB0YXNrSW5mbzogVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxBdHRhY2htZW50cygpOiBQcm9taXNlPEF0dGFjaEluZm9bXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dGFjaG1lbnRCeUlkKGF0dGFjaG1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBdHRhY2hJbmZvPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeHBsYW5hdG9yeU5vdGUoKTogUHJvbWlzZTxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWxlUHJvcGVydGllcyhkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyhkcml2ZVVyaTogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2coKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Vycm9yTG9nUGRmKGVycm9yTG9nTmFtZTogc3RyaW5nLCBwcm9wc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Jbm5lckVkaXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5uZXIocGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyKHJ1bGVzOiByZWFkb25seSBzdHJpbmdbXSwgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlcik6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlKHJ1bGVzOiByZWFkb25seSBzdHJpbmdbXSwgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlcik6IFByb21pc2U8U2VydmVySnNvblJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm9ybWFsaXplQnlSdWxlcyhydWxlczogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGF0Y2hQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBQcmVzZW50YXRpb25Db250ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQXR0YWNobWVudHMoYXR0YWNobWVudElkczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbmRDaGFuZ2VTZXRTeW5jKGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIDIwMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBzdHJpbmcgfCB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsImNhbmNlbFRhc2siLCJ0YXNrSWQiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJyZXF1ZXN0IiwiY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiZW5xdWV1ZVRhc2siLCJ0YXNrSW5mbyIsImdldEFsbEF0dGFjaG1lbnRzIiwiZ2V0QWxsVGFza3MiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsImdldEVycm9yTG9nIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJnZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpIiwicHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZkRvd25sb2FkSW5uZXIiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYiLCJnZXRIcmVmVG9FcnJvckxvZ1BkZiIsImVycm9yTG9nTmFtZSIsInByb3BzTmFtZSIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwiZ2V0UmVxdWlzaXRlcyIsInJlcXVpc2l0ZUxpc3QiLCJnZXRJbm5lciIsInBhdGhzIiwiZ2V0UGFydGlhbElubmVyIiwicnVsZXMiLCJtYXhJbnN0YW5jZUNvdW50IiwiZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZSIsImdldFRhc2tCeUlkIiwibm9ybWFsaXplQnlSdWxlcyIsInBhdGNoUHJlc2VudGF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJzZW5kQ2hhbmdlU2V0Iiwic2VuZENoYW5nZVNldFN5bmMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwic2V0UHJlc2VudGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBcUJBOztBQUVPLE1BQU1BLGtCQUFOLENBQW9EO0FBQUE7QUFBQSxTQUN0Q0MsWUFEc0MsR0FDdkIsSUFBSUMsd0NBQUosRUFEdUI7QUFBQTs7QUFHaERDLEVBQUFBLHFCQUFxQixDQUFDQyxXQUFELEVBQTZDO0FBQ3JFLFdBQU8sS0FBS0gsWUFBWjtBQUNIOztBQUVNSSxFQUFBQSxjQUFjLENBQUNDLEdBQUQsRUFBY0MsSUFBZCxFQUE4QztBQUMvRCxTQUFLTixZQUFMLENBQWtCSSxjQUFsQixDQUFpQ0MsR0FBakMsRUFBc0NDLElBQXRDO0FBQ0g7O0FBRU1DLEVBQUFBLFVBQVUsQ0FBQ0MsV0FBRCxFQUErQztBQUM1RCxXQUFPQyxPQUFPLENBQUNDLE9BQVIs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T0FBOUIsRUFBMkU7QUFDL0YsV0FBTzlELE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNNEQsRUFBQUEsaUJBQWlCLENBQUNDLGFBQUQsRUFBa0Q7QUFDdEUsV0FBT2hFLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUV5QixRQUFiOEQsYUFBYSxDQUFDcEUsSUFBRCxFQUF1QztBQUM3RCxXQUFPRyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTStELEVBQUFBLGlCQUFpQixDQUFDckUsSUFBRCxFQUF3QztBQUM1RCxXQUFPLEdBQVA7QUFDSDs7QUFFTXNFLEVBQUFBLGdCQUFnQixDQUFDN0IsUUFBRCxFQUFrQztBQUNyRCxXQUFPdEMsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU1pRSxFQUFBQSxvQkFBb0IsQ0FDdkI5QixRQUR1QixFQUV2QitCLGFBRnVCLEVBR2M7QUFDckMsV0FBT3JFLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNbUUsRUFBQUEsZUFBZSxDQUFDVCxJQUFELEVBQThCQyxPQUE5QixFQUF3RTtBQUMxRixXQUFPOUQsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBMUlnRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGlja2xpc3REYXRhSXRlbSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IElDYW5keUFwaUNsaWVudCwgSUNhbmR5QXBpRHJhZnRDbGllbnQgfSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlUHJvcGVydGllcyB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRlbnQgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL1ByZXNlbnRhdGlvbkNvbnRlbnRcIjtcbmltcG9ydCB7IFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlclJlcXVpc2l0ZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCwgRnVmQ29tYmluZU1ldGhvZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db21iaW5lRnVmUmVzdWx0XCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ3NSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZlYXR1cmVGbGFncy9GZWF0dXJlRmxhZ3NSZXNwb25zZVwiO1xuaW1wb3J0IHsgSURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9JRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBGYWtlRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0Zha2VzL0Zha2VEaWdlc3RBcGlDbGllbnRcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWdlc3RDbGllbnQgPSBuZXcgRmFrZURpZ2VzdEFwaUNsaWVudCgpO1xuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlnZXN0Q2xpZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVQaWNrbGlzdChnSWQ6IHN0cmluZywgZGF0YTogUGlja2xpc3REYXRhSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlnZXN0Q2xpZW50LmNyZWF0ZVBpY2tsaXN0KGdJZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyYWZ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHJlcXVlc3Q6IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzOiByZWFkb25seSBBdHRhY2hJbmZvW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsQXR0YWNobWVudHMoKTogUHJvbWlzZTxBdHRhY2hJbmZvW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwbGFuYXRvcnlOb3RlKCk6IFByb21pc2U8Q3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRJbm5lcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvSW5uZXJFZGl0b3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFJlcXVpc2l0ZXMocmVxdWlzaXRlTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogcmVhZG9ubHkgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShydWxlczogcmVhZG9ubHkgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlckpzb25SZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYXNrQnlJZCh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8U2VydmVyVGFzayB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoUHJlc2VudGF0aW9uKHR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogUHJlc2VudGF0aW9uQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VuZENoYW5nZVNldChkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiAyMDA7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UHJlc2VudGF0aW9uKHR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
@@ -34,8 +34,8 @@ class NotSupportedError extends ApplicationError {
34
34
  exports.NotSupportedError = NotSupportedError;
35
35
 
36
36
  class InvalidProgramStateError extends ApplicationError {
37
- constructor() {
38
- super("Invalid program state");
37
+ constructor(message) {
38
+ super("Invalid program state" + (message != undefined ? ": " + message : ""));
39
39
  }
40
40
 
41
41
  }
@@ -59,4 +59,4 @@ class TypingError extends ApplicationError {
59
59
  }
60
60
 
61
61
  exports.TypingError = TypingError;
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9FcnJvcnMudHMiXSwibmFtZXMiOlsiQXBwbGljYXRpb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwibmFtZSIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJOb3RTdXBwb3J0ZWRFcnJvciIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYXJndW1lbnROYW1lIiwidW5kZWZpbmVkIiwiVHlwaW5nRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxNQUFNQSxnQkFBTixTQUErQkMsS0FBL0IsQ0FBcUM7QUFDakNDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFrQjtBQUNoQyxVQUFNQSxPQUFOO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLEtBQUtGLFdBQUwsQ0FBaUJFLElBQTdCO0FBQ0g7O0FBSnVDOzs7O0FBT3JDLE1BQU1DLG1CQUFOLFNBQWtDTCxnQkFBbEMsQ0FBbUQ7QUFDL0NFLEVBQUFBLFdBQVcsR0FBRztBQUNqQixVQUFNLDJCQUFOO0FBQ0g7O0FBSHFEOzs7O0FBTW5ELE1BQU1JLGlCQUFOLFNBQWdDTixnQkFBaEMsQ0FBaUQ7QUFDN0NFLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFtQjtBQUNqQyxVQUFNQSxPQUFOLGFBQU1BLE9BQU4sY0FBTUEsT0FBTixHQUFpQix5QkFBakI7QUFDSDs7QUFIbUQ7Ozs7QUFNakQsTUFBTUksd0JBQU4sU0FBdUNQLGdCQUF2QyxDQUF3RDtBQUNwREUsRUFBQUEsV0FBVyxHQUFHO0FBQ2pCLFVBQU0sdUJBQU47QUFDSDs7QUFIMEQ7Ozs7QUFNeEQsTUFBTU0sb0JBQU4sU0FBbUNSLGdCQUFuQyxDQUFvRDtBQUNoREUsRUFBQUEsV0FBVyxDQUFDTyxZQUFELEVBQXVCTixPQUF2QixFQUF5QztBQUN2RCxVQUNJQSxPQUFPLElBQUlPLFNBQVgsR0FBd0IsR0FBRVAsT0FBUSxlQUFjTSxZQUFhLEdBQTdELEdBQW1FLDJCQUEwQkEsWUFBYSxFQUQ5RztBQUdIOztBQUxzRDs7OztBQVFwRCxNQUFNRSxXQUFOLFNBQTBCWCxnQkFBMUIsQ0FBMkM7QUFDdkNFLEVBQUFBLFdBQVcsR0FBRztBQUNqQixVQUFNLGdCQUFOO0FBQ0g7O0FBSDZDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9FcnJvcnMudHMiXSwibmFtZXMiOlsiQXBwbGljYXRpb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwibmFtZSIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJOb3RTdXBwb3J0ZWRFcnJvciIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsInVuZGVmaW5lZCIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYXJndW1lbnROYW1lIiwiVHlwaW5nRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxNQUFNQSxnQkFBTixTQUErQkMsS0FBL0IsQ0FBcUM7QUFDakNDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFrQjtBQUNoQyxVQUFNQSxPQUFOO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLEtBQUtGLFdBQUwsQ0FBaUJFLElBQTdCO0FBQ0g7O0FBSnVDOzs7O0FBT3JDLE1BQU1DLG1CQUFOLFNBQWtDTCxnQkFBbEMsQ0FBbUQ7QUFDL0NFLEVBQUFBLFdBQVcsR0FBRztBQUNqQixVQUFNLDJCQUFOO0FBQ0g7O0FBSHFEOzs7O0FBTW5ELE1BQU1JLGlCQUFOLFNBQWdDTixnQkFBaEMsQ0FBaUQ7QUFDN0NFLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFtQjtBQUNqQyxVQUFNQSxPQUFOLGFBQU1BLE9BQU4sY0FBTUEsT0FBTixHQUFpQix5QkFBakI7QUFDSDs7QUFIbUQ7Ozs7QUFNakQsTUFBTUksd0JBQU4sU0FBdUNQLGdCQUF2QyxDQUF3RDtBQUNwREUsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQW1CO0FBQ2pDLFVBQU0sMkJBQTJCQSxPQUFPLElBQUlLLFNBQVgsR0FBdUIsT0FBT0wsT0FBOUIsR0FBd0MsRUFBbkUsQ0FBTjtBQUNIOztBQUgwRDs7OztBQU14RCxNQUFNTSxvQkFBTixTQUFtQ1QsZ0JBQW5DLENBQW9EO0FBQ2hERSxFQUFBQSxXQUFXLENBQUNRLFlBQUQsRUFBdUJQLE9BQXZCLEVBQXlDO0FBQ3ZELFVBQ0lBLE9BQU8sSUFBSUssU0FBWCxHQUF3QixHQUFFTCxPQUFRLGVBQWNPLFlBQWEsR0FBN0QsR0FBbUUsMkJBQTBCQSxZQUFhLEVBRDlHO0FBR0g7O0FBTHNEOzs7O0FBUXBELE1BQU1DLFdBQU4sU0FBMEJYLGdCQUExQixDQUEyQztBQUN2Q0UsRUFBQUEsV0FBVyxHQUFHO0FBQ2pCLFVBQU0sZ0JBQU47QUFDSDs7QUFINkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQXBwbGljYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJPcGVyYXRpb24gbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSA/PyBcIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQcm9ncmFtU3RhdGVFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIgKyAobWVzc2FnZSAhPSB1bmRlZmluZWQgPyBcIjogXCIgKyBtZXNzYWdlIDogXCJcIikpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.browserFetchWithOptionalPolyfill = void 0;
7
+
8
+ require("whatwg-fetch");
9
+
10
+ const browserFetchWithOptionalPolyfill = typeof window === "undefined" ? fetch : window.fetch.bind(window);
11
+ exports.browserFetchWithOptionalPolyfill = browserFetchWithOptionalPolyfill;
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vQnJvd3NlckZldGNoV2l0aE9wdGlvbmFsUG9seWZpbGwudHMiXSwibmFtZXMiOlsiYnJvd3NlckZldGNoV2l0aE9wdGlvbmFsUG9seWZpbGwiLCJ3aW5kb3ciLCJmZXRjaCIsImJpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJTyxNQUFNQSxnQ0FBdUMsR0FDaEQsT0FBT0MsTUFBUCxLQUFrQixXQUFsQixHQUFnQ0MsS0FBaEMsR0FBd0NELE1BQU0sQ0FBQ0MsS0FBUCxDQUFhQyxJQUFiLENBQWtCRixNQUFsQixDQURyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIndoYXR3Zy1mZXRjaFwiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoXCI7XG5cbmV4cG9ydCBjb25zdCBicm93c2VyRmV0Y2hXaXRoT3B0aW9uYWxQb2x5ZmlsbDogRmV0Y2ggPVxuICAgIHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBmZXRjaCA6IHdpbmRvdy5mZXRjaC5iaW5kKHdpbmRvdyk7XG4iXX0=
@@ -7,7 +7,6 @@ exports.browserFetchWithPolyfill = void 0;
7
7
 
8
8
  var _whatwgFetch = require("whatwg-fetch");
9
9
 
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
10
  const browserFetchWithPolyfill = _whatwgFetch.fetch;
12
11
  exports.browserFetchWithPolyfill = browserFetchWithPolyfill;
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vQnJvd3NlckZldGNoV2l0aFBvbHlmaWxsLnRzIl0sIm5hbWVzIjpbImJyb3dzZXJGZXRjaFdpdGhQb2x5ZmlsbCIsImZldGNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSUE7QUFDTyxNQUFNQSx3QkFBK0IsR0FBR0Msa0JBQXhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2ggfSBmcm9tIFwid2hhdHdnLWZldGNoXCI7XG5cbmltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4vRmV0Y2hcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBicm93c2VyRmV0Y2hXaXRoUG9seWZpbGw6IEZldGNoID0gZmV0Y2ggYXMgYW55O1xuIl19
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vQnJvd3NlckZldGNoV2l0aFBvbHlmaWxsLnRzIl0sIm5hbWVzIjpbImJyb3dzZXJGZXRjaFdpdGhQb2x5ZmlsbCIsImZldGNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSU8sTUFBTUEsd0JBQStCLEdBQUdDLGtCQUF4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoXCI7XG5cbmV4cG9ydCBjb25zdCBicm93c2VyRmV0Y2hXaXRoUG9seWZpbGw6IEZldGNoID0gZmV0Y2g7XG4iXX0=
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.nativeBrowserFetch = void 0;
7
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
7
  const nativeBrowserFetch = window.fetch.bind(window);
9
8
  exports.nativeBrowserFetch = nativeBrowserFetch;
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vTmF0aXZlQnJvd3NlckZldGNoLnRzIl0sIm5hbWVzIjpbIm5hdGl2ZUJyb3dzZXJGZXRjaCIsIndpbmRvdyIsImZldGNoIiwiYmluZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxrQkFBeUIsR0FBR0MsTUFBTSxDQUFDQyxLQUFQLENBQWFDLElBQWIsQ0FBa0JGLE1BQWxCLENBQWxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IG5hdGl2ZUJyb3dzZXJGZXRjaDogRmV0Y2ggPSB3aW5kb3cuZmV0Y2guYmluZCh3aW5kb3cpIGFzIGFueTtcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vTmF0aXZlQnJvd3NlckZldGNoLnRzIl0sIm5hbWVzIjpbIm5hdGl2ZUJyb3dzZXJGZXRjaCIsIndpbmRvdyIsImZldGNoIiwiYmluZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRU8sTUFBTUEsa0JBQXlCLEdBQUdDLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhQyxJQUFiLENBQWtCRixNQUFsQixDQUFsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4vRmV0Y2hcIjtcblxuZXhwb3J0IGNvbnN0IG5hdGl2ZUJyb3dzZXJGZXRjaDogRmV0Y2ggPSB3aW5kb3cuZmV0Y2guYmluZCh3aW5kb3cpO1xuIl19
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.indent = indent;
7
+
8
+ function indent(str, count) {
9
+ const indentStr = new Array(count * 2).fill(" ").join("");
10
+ return str.split("\n").map(x => {
11
+ if (x === "") {
12
+ return x;
13
+ }
14
+
15
+ return indentStr + x;
16
+ }).join("\n");
17
+ }
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JbmRlbnRTdHJpbmcudHMiXSwibmFtZXMiOlsiaW5kZW50Iiwic3RyIiwiY291bnQiLCJpbmRlbnRTdHIiLCJBcnJheSIsImZpbGwiLCJqb2luIiwic3BsaXQiLCJtYXAiLCJ4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU8sU0FBU0EsTUFBVCxDQUFnQkMsR0FBaEIsRUFBNkJDLEtBQTdCLEVBQW9EO0FBQ3ZELFFBQU1DLFNBQVMsR0FBRyxJQUFJQyxLQUFKLENBQVVGLEtBQUssR0FBRyxDQUFsQixFQUFxQkcsSUFBckIsQ0FBMEIsR0FBMUIsRUFBK0JDLElBQS9CLENBQW9DLEVBQXBDLENBQWxCO0FBQ0EsU0FBT0wsR0FBRyxDQUNMTSxLQURFLENBQ0ksSUFESixFQUVGQyxHQUZFLENBRUVDLENBQUMsSUFBSTtBQUNOLFFBQUlBLENBQUMsS0FBSyxFQUFWLEVBQWM7QUFDVixhQUFPQSxDQUFQO0FBQ0g7O0FBQ0QsV0FBT04sU0FBUyxHQUFHTSxDQUFuQjtBQUNILEdBUEUsRUFRRkgsSUFSRSxDQVFHLElBUkgsQ0FBUDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGluZGVudChzdHI6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZW50U3RyID0gbmV3IEFycmF5KGNvdW50ICogMikuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgICAubWFwKHggPT4ge1xuICAgICAgICAgICAgaWYgKHggPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmRlbnRTdHIgKyB4O1xuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIlxcblwiKTtcbn1cbiJdfQ==
@@ -93,6 +93,23 @@ class IterUtils {
93
93
  return true;
94
94
  }
95
95
 
96
+ static groupBy(iterable, selectKey) {
97
+ const result = new Map();
98
+
99
+ for (const item of iterable) {
100
+ const key = selectKey(item);
101
+ const keyList = result.get(key);
102
+
103
+ if (keyList == undefined) {
104
+ result.set(key, [item]);
105
+ } else {
106
+ keyList.push(item);
107
+ }
108
+ }
109
+
110
+ return result;
111
+ }
112
+
96
113
  static sortBy(items, selector) {
97
114
  const result = [...items];
98
115
  result.sort((aItem, bItem) => {
@@ -311,4 +328,4 @@ class IterUtils {
311
328
  exports.IterUtils = IterUtils;
312
329
  IterUtils.count = count;
313
330
  IterUtils.concat = concat;
314
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sIm5hbWVzIjpbInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJFcnJvciIsInNpbmdsZUVsZW1lbnQiLCJpbmRleCIsInNraXBMYXN0Iiwic2tpcENvdW50IiwicHJldkl0ZW1zIiwiZmlsbCIsInJlc3VsdEl0ZW0iLCJjdXJyZW50SW5kZXgiLCJtaW5CeSIsImNvbXBhcmVGdW5jIiwibWluVmFsdWUiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIm1pbkJ5T3JVbmRlZmluZWQiLCJ1bmRlZmluZWQiLCJyYW5nZSIsImluU3RhcnRPckNvdW50IiwiaW5JdGVtQ291bnQiLCJzdGFydCIsIml0ZW1Db3VudCIsImludGVyc3BlcnNlIiwiaW50ZXJzcGVyc2VGbiIsImZsYXRNYXAiLCJ4IiwiemlwIiwiaXRlcmF0b3JzIiwibWFwIiwiaXQiLCJJdGVyYXRvciIsImhhc1VuZG9uZUl0ZXJhdG9ycyIsInJlc3VsdEVudHJ5IiwiaXRlcmF0b3IiLCJwdXNoIiwicmVzdWx0VmFsdWUiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiZGlzdGluY3RCeSIsImlkU2VsZWN0b3IiLCJzZXQiLCJTZXQiLCJpZCIsImhhcyIsImFkZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRU8sVUFBVUEsWUFBVixDQUEwQkMsS0FBMUIsRUFBb0U7QUFDdkUsT0FBSyxJQUFJQyxDQUFDLEdBQUdELEtBQUssQ0FBQ0UsTUFBTixHQUFlLENBQTVCLEVBQStCRCxDQUFDLElBQUksQ0FBcEMsRUFBdUNBLENBQUMsRUFBeEMsRUFBNEM7QUFDeEM7QUFDQSxVQUFNRCxLQUFLLENBQUNDLENBQUQsQ0FBWDtBQUNIO0FBQ0o7O0FBRU0sU0FBU0UsZUFBVCxDQUE0QkMsU0FBNUIsRUFBMEY7QUFDN0YsU0FBT0MsYUFBYSxDQUFDQyxJQUFkLENBQW1CRixTQUFTLEVBQTVCLENBQVA7QUFDSDs7QUFFTSxTQUFTRyxRQUFULENBQXFCQyxLQUFyQixFQUF5Q0MsU0FBekMsRUFBeUY7QUFDNUYsTUFBSUMsTUFBSjs7QUFDQSxPQUFLLE1BQU1DLElBQVgsSUFBbUJILEtBQW5CLEVBQTBCO0FBQ3RCLFFBQUlDLFNBQVMsQ0FBQ0UsSUFBRCxDQUFiLEVBQXFCO0FBQ2pCRCxNQUFBQSxNQUFNLEdBQUdDLElBQVQ7QUFDSDtBQUNKOztBQUNELFNBQU9ELE1BQVA7QUFDSDs7QUFFTSxVQUFVRSxNQUFWLENBQW9CLEdBQUdDLFNBQXZCLEVBQTJFO0FBQzlFLE9BQUssTUFBTUMsWUFBWCxJQUEyQkQsU0FBM0IsRUFBc0M7QUFDbEMsV0FBT0MsWUFBUDtBQUNIO0FBQ0o7O0FBRU0sVUFBVUMsYUFBVixDQUFpRUMsR0FBakUsRUFBeUc7QUFDNUcsT0FBSyxNQUFNQyxHQUFYLElBQWtCRCxHQUFsQixFQUF1QjtBQUNuQixRQUFJRSxN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Q0FBQ0UsSUFBaEIsRUFBc0I7QUFDbEJMLFlBQUFBLFdBQVcsQ0FBQ0UsSUFBWixDQUFpQmxCLFNBQWpCO0FBQ0FXLFlBQUFBLFNBQVMsQ0FBQ3hFLENBQUQsQ0FBVCxHQUFlNEIsYUFBZjtBQUNILFdBSEQsTUFHTztBQUNIaUQsWUFBQUEsV0FBVyxDQUFDRSxJQUFaLENBQWlCQyxXQUFXLENBQUNHLEtBQTdCO0FBQ0FQLFlBQUFBLGtCQUFrQixHQUFHLElBQXJCO0FBQ0g7QUFDSjtBQUNKOztBQUNELFVBQUlBLGtCQUFKLEVBQXdCO0FBQ3BCLGNBQU1DLFdBQU47QUFDSDtBQUNKO0FBQ0o7O0FBRXdCLFVBQVZPLFVBQVUsQ0FBSTdFLEtBQUosRUFBd0I4RSxVQUF4QixFQUFzRTtBQUMzRixVQUFNQyxHQUFHLEdBQUcsSUFBSUMsR0FBSixFQUFaOztBQUNBLFNBQUssTUFBTTdFLElBQVgsSUFBbUJILEtBQW5CLEVBQTBCO0FBQ3RCLFlBQU1pRixFQUFFLEdBQUdILFVBQVUsQ0FBQzNFLElBQUQsQ0FBckI7O0FBQ0EsVUFBSSxDQUFDNEUsR0FBRyxDQUFDRyxHQUFKLENBQVFELEVBQVIsQ0FBTCxFQUFrQjtBQUNkRixRQUFBQSxHQUFHLENBQUNJLEdBQUosQ0FBUUYsRUFBUjtBQUNBLGNBQU05RSxJQUFOO0FBQ0g7QUFDSjtBQUNKOztBQTFNa0I7OztBQUFWbUIsUyxDQUNLTixLLEdBQVFBLEs7QUFEYk0sUyxDQUVLbEIsTSxHQUFTQSxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluTGVuZ3RoQXJyYXksIHJlamVjdCB9IGZyb20gXCIuL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBDb21wYXJlRnVuYyB9IGZyb20gXCIuL0NvbXBhcmVyc1wiO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tIFwiLi9FcnJvcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uKiByZXZlcnNlQXJyYXk8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSk6IEl0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB5aWVsZCBhcnJheVtpXSE7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Bc3luY0l0ZXJhdG9yPFQ+KGdlbmVyYXRvcjogKCkgPT4gQXN5bmNHZW5lcmF0b3I8VD4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIHJldHVybiBBc3luY0l0ZXJhdG9yLmZyb20oZ2VuZXJhdG9yKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZExhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBjb25kaXRpb246IChpdGVtOiBUKSA9PiBib29sZWFuKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogVCB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbihpdGVtKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNvbmNhdDxUPiguLi5pdGVyYWJsZXM6IEFycmF5PEl0ZXJhYmxlPFQ+Pik6IEl0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIGZvciAoY29uc3QgaXRlcmFibGVJdGVtIG9mIGl0ZXJhYmxlcykge1xuICAgICAgICB5aWVsZCogaXRlcmFibGVJdGVtO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlVmFsdWVzPFRLIGV4dGVuZHMgc3RyaW5nIHwgc3ltYm9sIHwgbnVtYmVyLCBUVj4ob2JqOiB7IFtrZXkgaW4gVEtdOiBUViB9KTogSXRlcmFibGU8VFY+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIG9ialtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXM8VE8+KG9iajogUmVhZG9ubHk8VE8+KTogSXRlcmFibGU8RXh0cmFjdDxrZXlvZiBUTywgc3RyaW5nPj47XG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXMob2JqOiBSZWFkb25seTx7fT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlS2V5czxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlcj4ob2JqOiB7IFtrZXkgaW4gVEtdOiB1bmtub3duIH0pOiBJdGVyYWJsZTxUSz4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgeWllbGQga2V5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUVudHJpZXM8VE8+KG9iajogUmVhZG9ubHk8VE8+KTogSXRlcmFibGU8W0V4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4sIFRPW2tleW9mIFRPXV0+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxbc3RyaW5nLCBUVl0+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8W3N0cmluZywgdW5rbm93bl0+O1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgeWllbGQgW2tleSwgb2JqW2tleV0hXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPik6IG51bWJlciB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVtcykge1xuICAgICAgICByZXN1bHQrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgRW1wdHlTaW5nbGVFbGVtZW50ID0gU3ltYm9sLmZvcihcIkVtcHR5U2luZ2xlRWxlbWVudFwiKTtcbmNvbnN0IE5vVmFsdWVNYXJrZXIgPSBTeW1ib2wuZm9yKFwiTm9WYWx1ZU1hcmtlclwiKTtcblxuZXhwb3J0IGNsYXNzIEl0ZXJVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyBjb3VudCA9IGNvdW50O1xuICAgIHB1YmxpYyBzdGF0aWMgY29uY2F0ID0gY29uY2F0O1xuXG4gICAgcHVibGljIHN0YXRpYyBpc0VtcHR5PFQ+KGl0ZXJhYmxlOiBJdGVyYWJsZTxUPik6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IF9pdGVtIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0Qnk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSwgc2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBUW10ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbLi4uaXRlbXNdO1xuICAgICAgICByZXN1bHQuc29ydCgoYUl0ZW0sIGJJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsdWUgPSBzZWxlY3RvcihhSXRlbSk7XG4gICAgICAgICAgICBjb25zdCByaWdodFZhbHVlID0gc2VsZWN0b3IoYkl0ZW0pO1xuICAgICAgICAgICAgaWYgKGxlZnRWYWx1ZSA9PT0gcmlnaHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsZWZ0VmFsdWUgPCByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBsYXN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBsYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiB8IHJlYWRvbmx5IFRbXSk6IHVuZGVmaW5lZCB8IFQ7XG4gICAgcHVibGljIHN0YXRpYyBsYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiB8IHJlYWRvbmx5IFRbXSk6IHVuZGVmaW5lZCB8IFQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgbGFzdEl0ZW0gPSBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYXN0SXRlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
331
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sIm5hbWVzIjpbInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwiZ3JvdXBCeSIsInNlbGVjdEtleSIsIk1hcCIsImtleUxpc3QiLCJnZXQiLCJ1bmRlZmluZWQiLCJzZXQiLCJwdXNoIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJFcnJvciIsInNpbmdsZUVsZW1lbnQiLCJpbmRleCIsInNraXBMYXN0Iiwic2tpcENvdW50IiwicHJldkl0ZW1zIiwiZmlsbCIsInJlc3VsdEl0ZW0iLCJjdXJyZW50SW5kZXgiLCJtaW5CeSIsImNvbXBhcmVGdW5jIiwibWluVmFsdWUiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIm1pbkJ5T3JVbmRlZmluZWQiLCJyYW5nZSIsImluU3RhcnRPckNvdW50IiwiaW5JdGVtQ291bnQiLCJzdGFydCIsIml0ZW1Db3VudCIsImludGVyc3BlcnNlIiwiaW50ZXJzcGVyc2VGbiIsImZsYXRNYXAiLCJ4IiwiemlwIiwiaXRlcmF0b3JzIiwibWFwIiwiaXQiLCJJdGVyYXRvciIsImhhc1VuZG9uZUl0ZXJhdG9ycyIsInJlc3VsdEVudHJ5IiwiaXRlcmF0b3IiLCJyZXN1bHRWYWx1ZSIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJkaXN0aW5jdEJ5IiwiaWRTZWxlY3RvciIsIlNldCIsImlkIiwiaGFzIiwiYWRkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFTyxVQUFVQSxZQUFWLENBQTBCQyxLQUExQixFQUFvRTtBQUN2RSxPQUFLLElBQUlDLENBQUMsR0FBR0QsS0FBSyxDQUFDRSxNQUFOLEdBQWUsQ0FBNUIsRUFBK0JELENBQUMsSUFBSSxDQUFwQyxFQUF1Q0EsQ0FBQyxFQUF4QyxFQUE0QztBQUN4QztBQUNBLFVBQU1ELEtBQUssQ0FBQ0MsQ0FBRCxDQUFYO0FBQ0g7QUFDSjs7QUFFTSxTQUFTRSxlQUFULENBQTRCQyxTQUE1QixFQUEwRjtBQUM3RixTQUFPQyxhQUFhLENBQUNDLElBQWQsQ0FBbUJGLFNBQVMsRUFBNUIsQ0FBUDtBQUNIOztBQUVNLFNBQVNHLFFBQVQsQ0FBcUJDLEtBQXJCLEVBQXlDQyxTQUF6QyxFQUF5RjtBQUM1RixNQUFJQyxNQUFKOztBQUNBLE9BQUssTUFBTUMsSUFBWCxJQUFtQkgsS0FBbkIsRUFBMEI7QUFDdEIsUUFBSUMsU0FBUyxDQUFDRSxJQUFELENBQWIsRUFBcUI7QUFDakJELE1BQUFBLE1BQU0sR0FBR0MsSUFBVDtBQUNIO0FBQ0o7O0FBQ0QsU0FBT0QsTUFBUDtBQUNIOztBQUVNLFVBQVVFLE1BQVYsQ0FBb0IsR0FBR0MsU0FBdkIsRUFBMkU7QUFDOUUsT0FBSyxNQUFNQyxZQUFYLElBQTJCRCxTQUEzQixFQUFzQztBQUNsQyxXQUFPQyxZQUFQO0FBQ0g7QUFDSjs7QUFFTSxVQUFVQyxhQUFWLENBQWlFQyxHQUFqRSxFQUF5RztBQUM1RyxPQUFL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QUFFLEdBQUdGLFVBQVUsQ0FBQ2pGLElBQUQsQ0FBckI7O0FBQ0EsVUFBSSxDQUFDNEIsR0FBRyxDQUFDd0QsR0FBSixDQUFRRCxFQUFSLENBQUwsRUFBa0I7QUFDZHZELFFBQUFBLEdBQUcsQ0FBQ3lELEdBQUosQ0FBUUYsRUFBUjtBQUNBLGNBQU1uRixJQUFOO0FBQ0g7QUFDSjtBQUNKOztBQXpOa0I7OztBQUFWbUIsUyxDQUNLTixLLEdBQVFBLEs7QUFEYk0sUyxDQUVLbEIsTSxHQUFTQSxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluTGVuZ3RoQXJyYXksIHJlamVjdCB9IGZyb20gXCIuL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBDb21wYXJlRnVuYyB9IGZyb20gXCIuL0NvbXBhcmVyc1wiO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tIFwiLi9FcnJvcnNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uKiByZXZlcnNlQXJyYXk8VD4oYXJyYXk6IHJlYWRvbmx5IFRbXSk6IEl0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB5aWVsZCBhcnJheVtpXSE7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Bc3luY0l0ZXJhdG9yPFQ+KGdlbmVyYXRvcjogKCkgPT4gQXN5bmNHZW5lcmF0b3I8VD4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIHJldHVybiBBc3luY0l0ZXJhdG9yLmZyb20oZ2VuZXJhdG9yKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZExhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBjb25kaXRpb246IChpdGVtOiBUKSA9PiBib29sZWFuKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogVCB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbihpdGVtKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNvbmNhdDxUPiguLi5pdGVyYWJsZXM6IEFycmF5PEl0ZXJhYmxlPFQ+Pik6IEl0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIGZvciAoY29uc3QgaXRlcmFibGVJdGVtIG9mIGl0ZXJhYmxlcykge1xuICAgICAgICB5aWVsZCogaXRlcmFibGVJdGVtO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlVmFsdWVzPFRLIGV4dGVuZHMgc3RyaW5nIHwgc3ltYm9sIHwgbnVtYmVyLCBUVj4ob2JqOiB7IFtrZXkgaW4gVEtdOiBUViB9KTogSXRlcmFibGU8VFY+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIG9ialtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXM8VE8+KG9iajogUmVhZG9ubHk8VE8+KTogSXRlcmFibGU8RXh0cmFjdDxrZXlvZiBUTywgc3RyaW5nPj47XG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUtleXMob2JqOiBSZWFkb25seTx7fT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlS2V5czxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlcj4ob2JqOiB7IFtrZXkgaW4gVEtdOiB1bmtub3duIH0pOiBJdGVyYWJsZTxUSz4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgeWllbGQga2V5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUVudHJpZXM8VE8+KG9iajogUmVhZG9ubHk8VE8+KTogSXRlcmFibGU8W0V4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4sIFRPW2tleW9mIFRPXV0+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxbc3RyaW5nLCBUVl0+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8W3N0cmluZywgdW5rbm93bl0+O1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgeWllbGQgW2tleSwgb2JqW2tleV0hXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPik6IG51bWJlciB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVtcykge1xuICAgICAgICByZXN1bHQrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgRW1wdHlTaW5nbGVFbGVtZW50ID0gU3ltYm9sLmZvcihcIkVtcHR5U2luZ2xlRWxlbWVudFwiKTtcbmNvbnN0IE5vVmFsdWVNYXJrZXIgPSBTeW1ib2wuZm9yKFwiTm9WYWx1ZU1hcmtlclwiKTtcblxuZXhwb3J0IGNsYXNzIEl0ZXJVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyBjb3VudCA9IGNvdW50O1xuICAgIHB1YmxpYyBzdGF0aWMgY29uY2F0ID0gY29uY2F0O1xuXG4gICAgcHVibGljIHN0YXRpYyBpc0VtcHR5PFQ+KGl0ZXJhYmxlOiBJdGVyYWJsZTxUPik6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IF9pdGVtIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBncm91cEJ5PFQsIFRLZXk+KGl0ZXJhYmxlOiBJdGVyYWJsZTxUPiwgc2VsZWN0S2V5OiAoaXRlbTogVCkgPT4gVEtleSk6IE1hcDxUS2V5LCBUW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxUS2V5LCBUW10+KCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gc2VsZWN0S2V5KGl0ZW0pO1xuICAgICAgICAgICAgY29uc3Qga2V5TGlzdCA9IHJlc3VsdC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChrZXlMaXN0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCBbaXRlbV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXlMaXN0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNvcnRCeTxUPihpdGVtczogcmVhZG9ubHkgVFtdLCBzZWxlY3RvcjogKGl0ZW06IFQpID0+IHN0cmluZyk6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5pdGVtc107XG4gICAgICAgIHJlc3VsdC5zb3J0KChhSXRlbSwgYkl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IHNlbGVjdG9yKGFJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBzZWxlY3RvcihiSXRlbSk7XG4gICAgICAgICAgICBpZiAobGVmdFZhbHVlID09PSByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRWYWx1ZSA8IHJpZ2h0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IE1pbkxlbmd0aEFycmF5PFQsIDE+KTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0SXRlbTogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IFtULCAuLi51bmtub3duW11dKTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -14,12 +14,12 @@ function buildIterationSequence(modelPath) {
14
14
  for (let i = 0; i < tokens.length; i++) {
15
15
  if (tokens[i] === _ModelPath.PathTokens.each) {
16
16
  result.push({
17
- iterable: new _ModelPath.ModelPath(tokens.slice(0, i), modelPath.isAbsolute()),
18
- suffix: new _ModelPath.ModelPath(tokens.slice(i + 1), false)
17
+ iterable: (0, _ModelPath.createAbsoluteFromTokens)(tokens.slice(0, i)),
18
+ suffix: (0, _ModelPath.createRelativeFromTokens)(tokens.slice(i + 1))
19
19
  });
20
20
  }
21
21
  }
22
22
 
23
23
  return result;
24
24
  }
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQnVpbGRJdGVyYXRpb25TZXF1ZW5jZS50cyJdLCJuYW1lcyI6WyJidWlsZEl0ZXJhdGlvblNlcXVlbmNlIiwibW9kZWxQYXRoIiwicmVzdWx0IiwidG9rZW5zIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImkiLCJsZW5ndGgiLCJQYXRoVG9rZW5zIiwiZWFjaCIsInB1c2giLCJpdGVyYWJsZSIsIk1vZGVsUGF0aCIsInNsaWNlIiwiaXNBYnNvbHV0ZSIsInN1ZmZpeCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQU9PLFNBQVNBLHNCQUFULENBQWdDQyxTQUFoQyxFQUF3RTtBQUMzRSxRQUFNQyxNQUF3QixHQUFHLEVBQWpDO0FBQ0EsUUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNHLG1CQUFWLEVBQWY7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQTNCLEVBQW1DRCxDQUFDLEVBQXBDLEVBQXdDO0FBQ3BDLFFBQUlGLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLEtBQWNFLHNCQUFXQyxJQUE3QixFQUFtQztBQUMvQk4sTUFBQUEsTUFBTSxDQUFDTyxJQUFQLENBQVk7QUFDUkMsUUFBQUEsUUFBUSxFQUFFLElBQUlDLG9CQUFKLENBQWNSLE1BQU0sQ0FBQ1MsS0FBUCxDQUFhLENBQWIsRUFBZ0JQLENBQWhCLENBQWQsRUFBa0NKLFNBQVMsQ0FBQ1ksVUFBVixFQUFsQyxDQURGO0FBRVJDLFFBQUFBLE1BQU0sRUFBRSxJQUFJSCxvQkFBSixDQUFjUixNQUFNLENBQUNTLEtBQVAsQ0FBYVAsQ0FBQyxHQUFHLENBQWpCLENBQWQsRUFBbUMsS0FBbkM7QUFGQSxPQUFaO0FBSUg7QUFDSjs7QUFDRCxTQUFPSCxNQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFBhdGgsIFBhdGhUb2tlbnMgfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVyYXRpb25FbnRyeSB7XG4gICAgaXRlcmFibGU6IE1vZGVsUGF0aDtcbiAgICBzdWZmaXg6IE1vZGVsUGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSXRlcmF0aW9uU2VxdWVuY2UobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBJdGVyYXRpb25FbnRyeVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEl0ZXJhdGlvbkVudHJ5W10gPSBbXTtcbiAgICBjb25zdCB0b2tlbnMgPSBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbnNbaV0gPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBuZXcgTW9kZWxQYXRoKHRva2Vucy5zbGljZSgwLCBpKSwgbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSksXG4gICAgICAgICAgICAgICAgc3VmZml4OiBuZXcgTW9kZWxQYXRoKHRva2Vucy5zbGljZShpICsgMSksIGZhbHNlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQnVpbGRJdGVyYXRpb25TZXF1ZW5jZS50cyJdLCJuYW1lcyI6WyJidWlsZEl0ZXJhdGlvblNlcXVlbmNlIiwibW9kZWxQYXRoIiwicmVzdWx0IiwidG9rZW5zIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImkiLCJsZW5ndGgiLCJQYXRoVG9rZW5zIiwiZWFjaCIsInB1c2giLCJpdGVyYWJsZSIsInNsaWNlIiwic3VmZml4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBYU8sU0FBU0Esc0JBQVQsQ0FBZ0NDLFNBQWhDLEVBQWdGO0FBQ25GLFFBQU1DLE1BQXdCLEdBQUcsRUFBakM7QUFDQSxRQUFNQyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0csbUJBQVYsRUFBZjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLE1BQU0sQ0FBQ0csTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDcEMsUUFBSUYsTUFBTSxDQUFDRSxDQUFELENBQU4sS0FBY0Usc0JBQVdDLElBQTdCLEVBQW1DO0FBQy9CTixNQUFBQSxNQUFNLENBQUNPLElBQVAsQ0FBWTtBQUNSQyxRQUFBQSxRQUFRLEVBQUUseUNBQXlCUCxNQUFNLENBQUNRLEtBQVAsQ0FBYSxDQUFiLEVBQWdCTixDQUFoQixDQUF6QixDQURGO0FBRVJPLFFBQUFBLE1BQU0sRUFBRSx5Q0FBeUJULE1BQU0sQ0FBQ1EsS0FBUCxDQUFhTixDQUFDLEdBQUcsQ0FBakIsQ0FBekI7QUFGQSxPQUFaO0FBSUg7QUFDSjs7QUFDRCxTQUFPSCxNQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFic29sdXRlTW9kZWxQYXRoLFxuICAgIGNyZWF0ZUFic29sdXRlRnJvbVRva2VucyxcbiAgICBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnMsXG4gICAgTW9kZWxQYXRoLFxuICAgIFBhdGhUb2tlbnMsXG59IGZyb20gXCIuL01vZGVsUGF0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkVudHJ5IHtcbiAgICBpdGVyYWJsZTogQWJzb2x1dGVNb2RlbFBhdGg7XG4gICAgc3VmZml4OiBNb2RlbFBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEl0ZXJhdGlvblNlcXVlbmNlKG1vZGVsUGF0aDogQWJzb2x1dGVNb2RlbFBhdGgpOiBJdGVyYXRpb25FbnRyeVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEl0ZXJhdGlvbkVudHJ5W10gPSBbXTtcbiAgICBjb25zdCB0b2tlbnMgPSBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbnNbaV0gPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnModG9rZW5zLnNsaWNlKDAsIGkpKSxcbiAgICAgICAgICAgICAgICBzdWZmaXg6IGNyZWF0ZVJlbGF0aXZlRnJvbVRva2Vucyh0b2tlbnMuc2xpY2UoaSArIDEpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AbsoluteModelPathMap = void 0;
7
+
8
+ var _EachCurrentCollision = require("../EachCurrentCollision");
9
+
10
+ var _Map = require("./Map2");
11
+
12
+ class AbsoluteModelPathMap extends _Map.Map2 {
13
+ constructor(eachCurrentCollision = _EachCurrentCollision.EachCurrentCollision.AreSame) {
14
+ super();
15
+ this.eachCurrentCollision = void 0;
16
+ this.eachCurrentCollision = eachCurrentCollision;
17
+ }
18
+
19
+ areKeyEqual(left, right) {
20
+ return left.isEquals(right, this.eachCurrentCollision);
21
+ }
22
+
23
+ getKeyHash(key) {
24
+ return key.getHash(this.eachCurrentCollision);
25
+ }
26
+
27
+ }
28
+
29
+ exports.AbsoluteModelPathMap = AbsoluteModelPathMap;
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTWFwL0Fic29sdXRlTW9kZWxQYXRoTWFwLnRzIl0sIm5hbWVzIjpbIkFic29sdXRlTW9kZWxQYXRoTWFwIiwiTWFwMiIsImNvbnN0cnVjdG9yIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiLCJhcmVLZXlFcXVhbCIsImxlZnQiLCJyaWdodCIsImlzRXF1YWxzIiwiZ2V0S2V5SGFzaCIsImtleSIsImdldEhhc2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFTyxNQUFNQSxvQkFBTixTQUFzQ0MsU0FBdEMsQ0FBaUU7QUFHN0RDLEVBQUFBLFdBQVcsQ0FBQ0Msb0JBQTBDLEdBQUdDLDJDQUFxQkMsT0FBbkUsRUFBNEU7QUFDMUY7QUFEMEYsU0FGN0VGLG9CQUU2RTtBQUUxRixTQUFLQSxvQkFBTCxHQUE0QkEsb0JBQTVCO0FBQ0g7O0FBRVNHLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBRCxFQUEwQkMsS0FBMUIsRUFBNkQ7QUFDOUUsV0FBT0QsSUFBSSxDQUFDRSxRQUFMLENBQWNELEtBQWQsRUFBcUIsS0FBS0wsb0JBQTFCLENBQVA7QUFDSDs7QUFFU08sRUFBQUEsVUFBVSxDQUFDQyxHQUFELEVBQWlDO0FBQ2pELFdBQU9BLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLEtBQUtULG9CQUFqQixDQUFQO0FBQ0g7O0FBZG1FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzb2x1dGVNb2RlbFBhdGggfSBmcm9tIFwiLi4vTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBFYWNoQ3VycmVudENvbGxpc2lvbiB9IGZyb20gXCIuLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuXG5pbXBvcnQgeyBNYXAyIH0gZnJvbSBcIi4vTWFwMlwiO1xuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbFBhdGhNYXA8Vj4gZXh0ZW5kcyBNYXAyPEFic29sdXRlTW9kZWxQYXRoLCBWPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb247XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uID0gZWFjaEN1cnJlbnRDb2xsaXNpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFyZUtleUVxdWFsKGxlZnQ6IEFic29sdXRlTW9kZWxQYXRoLCByaWdodDogQWJzb2x1dGVNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuaXNFcXVhbHMocmlnaHQsIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRLZXlIYXNoKGtleTogQWJzb2x1dGVNb2RlbFBhdGgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4ga2V5LmdldEhhc2godGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbik7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ModelPathMap = exports.Map2 = exports.AbsoluteModelPathMap = void 0;
7
+
8
+ var _TypingUtils = require("../../TypingUtils");
9
+
10
+ var _EachCurrentCollision = require("../EachCurrentCollision");
11
+
12
+ class Map2 {
13
+ constructor() {
14
+ this.hashMap = new Map();
15
+ }
16
+
17
+ set(key, value) {
18
+ this.setOrUpdate(key, () => value, () => value);
19
+ }
20
+
21
+ getOrSet(key, defaultValue) {
22
+ return this.setOrUpdate(key, () => defaultValue, (k, v) => v);
23
+ }
24
+
25
+ get(key) {
26
+ var _this$getEntryOrUndef;
27
+
28
+ return (_this$getEntryOrUndef = this.getEntryOrUndefined(key)) === null || _this$getEntryOrUndef === void 0 ? void 0 : _this$getEntryOrUndef[1];
29
+ }
30
+
31
+ has(key) {
32
+ return this.getEntryOrUndefined(key) != undefined;
33
+ }
34
+
35
+ get isEmpty() {
36
+ return this.hashMap.size === 0;
37
+ }
38
+ /**
39
+ * Обновляет значение в словаре по ключю, если значения нет -- устнавит новое
40
+ * @param key ключ словаря для робновления
41
+ * @param newValueFactory Если значения нет -- будет установлен результат этой функции
42
+ * @param updateValueFactory Если значение есть -- будет установлен результат этой функции
43
+ */
44
+
45
+
46
+ setOrUpdate(key, newValueFactory, updateValueFactory) {
47
+ const hash = this.getKeyHash(key);
48
+ const list = this.hashMap.get(hash);
49
+
50
+ if (list == undefined) {
51
+ const result = newValueFactory(key);
52
+ this.hashMap.set(hash, [[key, newValueFactory(key)]]);
53
+ return result;
54
+ } else {
55
+ const itemIndex = list.findIndex(x => this.areKeyEqual(x[0], key));
56
+
57
+ if (itemIndex == -1) {
58
+ const result = newValueFactory(key);
59
+ list.push([key, result]);
60
+ return result;
61
+ } else {
62
+ var _list$itemIndex;
63
+
64
+ const entry = (_list$itemIndex = list[itemIndex]) !== null && _list$itemIndex !== void 0 ? _list$itemIndex : (0, _TypingUtils.reject)();
65
+ entry[1] = updateValueFactory(key, entry[1]);
66
+ return entry[1];
67
+ }
68
+ }
69
+ }
70
+
71
+ keys() {
72
+ return Iterator.from(this.entries()).map(e => e[0]);
73
+ }
74
+
75
+ values() {
76
+ return Iterator.from(this.entries()).map(e => e[1]);
77
+ }
78
+
79
+ entries() {
80
+ return Iterator.from(this.hashMap.values()).flatMap(x => x);
81
+ }
82
+
83
+ clear() {
84
+ this.hashMap.clear();
85
+ }
86
+
87
+ getKeyHash(key) {
88
+ return key.getHash();
89
+ }
90
+
91
+ areKeyEqual(left, right) {
92
+ return left.isEquals(right);
93
+ }
94
+
95
+ getEntryOrUndefined(key) {
96
+ var _this$hashMap$get;
97
+
98
+ const hash = this.getKeyHash(key);
99
+ return (_this$hashMap$get = this.hashMap.get(hash)) === null || _this$hashMap$get === void 0 ? void 0 : _this$hashMap$get.find(x => this.areKeyEqual(x[0], key));
100
+ }
101
+
102
+ }
103
+
104
+ exports.Map2 = Map2;
105
+
106
+ class ModelPathMap extends Map2 {
107
+ constructor(eachCurrentCollision = _EachCurrentCollision.EachCurrentCollision.AreSame) {
108
+ super();
109
+ this.eachCurrentCollision = void 0;
110
+ this.eachCurrentCollision = eachCurrentCollision;
111
+ }
112
+
113
+ areKeyEqual(left, right) {
114
+ return left.isEquals(right, this.eachCurrentCollision);
115
+ }
116
+
117
+ getKeyHash(key) {
118
+ return key.getHash(this.eachCurrentCollision);
119
+ }
120
+
121
+ }
122
+
123
+ exports.ModelPathMap = ModelPathMap;
124
+
125
+ class AbsoluteModelPathMap extends Map2 {
126
+ constructor(eachCurrentCollision = _EachCurrentCollision.EachCurrentCollision.AreSame) {
127
+ super();
128
+ this.eachCurrentCollision = void 0;
129
+ this.eachCurrentCollision = eachCurrentCollision;
130
+ }
131
+
132
+ areKeyEqual(left, right) {
133
+ return left.isEquals(right, this.eachCurrentCollision);
134
+ }
135
+
136
+ getKeyHash(key) {
137
+ return key.getHash(this.eachCurrentCollision);
138
+ }
139
+
140
+ }
141
+
142
+ exports.AbsoluteModelPathMap = AbsoluteModelPathMap;
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTWFwL01hcDIudHMiXSwibmFtZXMiOlsiTWFwMiIsImhhc2hNYXAiLCJNYXAiLCJzZXQiLCJrZXkiLCJ2YWx1ZSIsInNldE9yVXBkYXRlIiwiZ2V0T3JTZXQiLCJkZWZhdWx0VmFsdWUiLCJrIiwidiIsImdldCIsImdldEVudHJ5T3JVbmRlZmluZWQiLCJoYXMiLCJ1bmRlZmluZWQiLCJpc0VtcHR5Iiwic2l6ZSIsIm5ld1ZhbHVlRmFjdG9yeSIsInVwZGF0ZVZhbHVlRmFjdG9yeSIsImhhc2giLCJnZXRLZXlIYXNoIiwibGlzdCIsInJlc3VsdCIsIml0ZW1JbmRleCIsImZpbmRJbmRleCIsIngiLCJhcmVLZXlFcXVhbCIsInB1c2giLCJlbnRyeSIsImtleXMiLCJJdGVyYXRvciIsImZyb20iLCJlbnRyaWVzIiwibWFwIiwiZSIsInZhbHVlcyIsImZsYXRNYXAiLCJjbGVhciIsImdldEhhc2giLCJsZWZ0IiwicmlnaHQiLCJpc0VxdWFscyIsImZpbmQiLCJNb2RlbFBhdGhNYXAiLCJjb25zdHJ1Y3RvciIsImVhY2hDdXJyZW50Q29sbGlzaW9uIiwiRWFjaEN1cnJlbnRDb2xsaXNpb24iLCJBcmVTYW1lIiwiQWJzb2x1dGVNb2RlbFBhdGhNYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFJTyxNQUFNQSxJQUFOLENBQXVDO0FBQUE7QUFBQSxTQUN6QkMsT0FEeUIsR0FDZixJQUFJQyxHQUFKLEVBRGU7QUFBQTs7QUFHbkNDLEVBQUFBLEdBQUcsQ0FBQ0MsR0FBRCxFQUFTQyxLQUFULEVBQXlCO0FBQy9CLFNBQUtDLFdBQUwsQ0FDSUYsR0FESixFQUVJLE1BQU1DLEtBRlYsRUFHSSxNQUFNQSxLQUhWO0FBS0g7O0FBRU1FLEVBQUFBLFFBQVEsQ0FBQ0gsR0FBRCxFQUFTSSxZQUFULEVBQTZCO0FBQ3hDLFdBQU8sS0FBS0YsV0FBTCxDQUNIRixHQURHLEVBRUgsTUFBTUksWUFGSCxF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LElBQUQsRUFBMEJDLEtBQTFCLEVBQTZEO0FBQzlFLFdBQU9ELElBQUksQ0FBQ0UsUUFBTCxDQUFjRCxLQUFkLEVBQXFCLEtBQUtLLG9CQUExQixDQUFQO0FBQ0g7O0FBRVN6QixFQUFBQSxVQUFVLENBQUNoQixHQUFELEVBQWlDO0FBQ2pELFdBQU9BLEdBQUcsQ0FBQ2tDLE9BQUosQ0FBWSxLQUFLTyxvQkFBakIsQ0FBUDtBQUNIOztBQWRtRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi4vRWFjaEN1cnJlbnRDb2xsaXNpb25cIjtcbmltcG9ydCB7IElFcXVhdGFibGUgfSBmcm9tIFwiLi4vSUVxdWF0YWJsZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVNb2RlbFBhdGgsIE1vZGVsUGF0aCB9IGZyb20gXCIuLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IGNsYXNzIE1hcDI8SyBleHRlbmRzIElFcXVhdGFibGU8Sz4sIFY+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc2hNYXAgPSBuZXcgTWFwPG51bWJlciwgQXJyYXk8W0ssIFZdPj4oKTtcblxuICAgIHB1YmxpYyBzZXQoa2V5OiBLLCB2YWx1ZTogVik6IHZvaWQge1xuICAgICAgICB0aGlzLnNldE9yVXBkYXRlKFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgKCkgPT4gdmFsdWUsXG4gICAgICAgICAgICAoKSA9PiB2YWx1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPclNldChrZXk6IEssIGRlZmF1bHRWYWx1ZTogVik6IFYge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRPclVwZGF0ZShcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICgpID0+IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgIChrLCB2KSA9PiB2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChrZXk6IEspOiBWIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50cnlPclVuZGVmaW5lZChrZXkpPy5bMV07XG4gICAgfVxuXG4gICAgcHVibGljIGhhcyhrZXk6IEspOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50cnlPclVuZGVmaW5lZChrZXkpICE9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc2hNYXAuc2l6ZSA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0LfQvdCw0YfQtdC90LjQtSDQsiDRgdC70L7QstCw0YDQtSDQv9C+INC60LvRjtGH0Y4sINC10YHQu9C4INC30L3QsNGH0LXQvdC40Y8g0L3QtdGCIC0tINGD0YHRgtC90LDQstC40YIg0L3QvtCy0L7QtVxuICAgICAqIEBwYXJhbSBrZXkg0LrQu9GO0Ycg0YHQu9C+0LLQsNGA0Y8g0LTQu9GPINGA0L7QsdC90L7QstC70LXQvdC40Y9cbiAgICAgKiBAcGFyYW0gbmV3VmFsdWVGYWN0b3J5INCV0YHQu9C4INC30L3QsNGH0LXQvdC40Y8g0L3QtdGCIC0tINCx0YPQtNC10YIg0YPRgdGC0LDQvdC+0LLQu9C10L0g0YDQtdC30YPQu9GM0YLQsNGCINGN0YLQvtC5INGE0YPQvdC60YbQuNC4XG4gICAgICogQHBhcmFtIHVwZGF0ZVZhbHVlRmFjdG9yeSDQldGB0LvQuCDQt9C90LDRh9C10L3QuNC1INC10YHRgtGMIC0tINCx0YPQtNC10YIg0YPRgdGC0LDQvdC+0LLQu9C10L0g0YDQtdC30YPQu9GM0YLQsNGCINGN0YLQvtC5INGE0YPQvdC60YbQuNC4XG4gICAgICovXG4gICAgcHVibGljIHNldE9yVXBkYXRlKGtleTogSywgbmV3VmFsdWVGYWN0b3J5OiAoa2V5OiBLKSA9PiBWLCB1cGRhdGVWYWx1ZUZhY3Rvcnk6IChrZXk6IEssIHVwZGF0ZTogVikgPT4gVik6IFYge1xuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5nZXRLZXlIYXNoKGtleSk7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmhhc2hNYXAuZ2V0KGhhc2gpO1xuICAgICAgICBpZiAobGlzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ld1ZhbHVlRmFjdG9yeShrZXkpO1xuICAgICAgICAgICAgdGhpcy5oYXNoTWFwLnNldChoYXNoLCBbW2tleSwgbmV3VmFsdWVGYWN0b3J5KGtleSldXSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gbGlzdC5maW5kSW5kZXgoeCA9PiB0aGlzLmFyZUtleUVxdWFsKHhbMF0sIGtleSkpO1xuICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ld1ZhbHVlRmFjdG9yeShrZXkpO1xuICAgICAgICAgICAgICAgIGxpc3QucHVzaChba2V5LCByZXN1bHRdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGxpc3RbaXRlbUluZGV4XSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICBlbnRyeVsxXSA9IHVwZGF0ZVZhbHVlRmFjdG9yeShrZXksIGVudHJ5WzFdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMga2V5cygpOiBJdGVyYWJsZTxLPiB7XG4gICAgICAgIHJldHVybiBJdGVyYXRvci5mcm9tKHRoaXMuZW50cmllcygpKS5tYXAoZSA9PiBlWzBdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWVzKCk6IEl0ZXJhYmxlPFY+IHtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20odGhpcy5lbnRyaWVzKCkpLm1hcChlID0+IGVbMV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnRyaWVzKCk6IEl0ZXJhYmxlPFtrZXk6IEssIHZhbHVlOiBWXT4ge1xuICAgICAgICByZXR1cm4gSXRlcmF0b3IuZnJvbSh0aGlzLmhhc2hNYXAudmFsdWVzKCkpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzaE1hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRLZXlIYXNoKGtleTogSyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBrZXkuZ2V0SGFzaCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcmVLZXlFcXVhbChsZWZ0OiBLLCByaWdodDogSyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbGVmdC5pc0VxdWFscyhyaWdodCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbnRyeU9yVW5kZWZpbmVkKGtleTogSyk6IFtLLCBWXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLmdldEtleUhhc2goa2V5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzaE1hcC5nZXQoaGFzaCk/LmZpbmQoeCA9PiB0aGlzLmFyZUtleUVxdWFsKHhbMF0sIGtleSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsUGF0aE1hcDxWPiBleHRlbmRzIE1hcDI8TW9kZWxQYXRoLCBWPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb247XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uID0gZWFjaEN1cnJlbnRDb2xsaXNpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFyZUtleUVxdWFsKGxlZnQ6IE1vZGVsUGF0aCwgcmlnaHQ6IE1vZGVsUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbGVmdC5pc0VxdWFscyhyaWdodCwgdGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEtleUhhc2goa2V5OiBNb2RlbFBhdGgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4ga2V5LmdldEhhc2godGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbFBhdGhNYXA8Vj4gZXh0ZW5kcyBNYXAyPEFic29sdXRlTW9kZWxQYXRoLCBWPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb247XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uID0gZWFjaEN1cnJlbnRDb2xsaXNpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFyZUtleUVxdWFsKGxlZnQ6IEFic29sdXRlTW9kZWxQYXRoLCByaWdodDogQWJzb2x1dGVNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuaXNFcXVhbHMocmlnaHQsIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRLZXlIYXNoKGtleTogQWJzb2x1dGVNb2RlbFBhdGgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4ga2V5LmdldEhhc2godGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbik7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ModelPathMap = void 0;
7
+
8
+ var _EachCurrentCollision = require("../EachCurrentCollision");
9
+
10
+ var _Map = require("./Map2");
11
+
12
+ class ModelPathMap extends _Map.Map2 {
13
+ constructor(eachCurrentCollision = _EachCurrentCollision.EachCurrentCollision.AreSame) {
14
+ super();
15
+ this.eachCurrentCollision = void 0;
16
+ this.eachCurrentCollision = eachCurrentCollision;
17
+ }
18
+
19
+ areKeyEqual(left, right) {
20
+ return left.isEquals(right, this.eachCurrentCollision);
21
+ }
22
+
23
+ getKeyHash(key) {
24
+ return key.getHash(this.eachCurrentCollision);
25
+ }
26
+
27
+ }
28
+
29
+ exports.ModelPathMap = ModelPathMap;
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTWFwL01vZGVsUGF0aE1hcC50cyJdLCJuYW1lcyI6WyJNb2RlbFBhdGhNYXAiLCJNYXAyIiwiY29uc3RydWN0b3IiLCJlYWNoQ3VycmVudENvbGxpc2lvbiIsIkVhY2hDdXJyZW50Q29sbGlzaW9uIiwiQXJlU2FtZSIsImFyZUtleUVxdWFsIiwibGVmdCIsInJpZ2h0IiwiaXNFcXVhbHMiLCJnZXRLZXlIYXNoIiwia2V5IiwiZ2V0SGFzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUVPLE1BQU1BLFlBQU4sU0FBOEJDLFNBQTlCLENBQWlEO0FBRzdDQyxFQUFBQSxXQUFXLENBQUNDLG9CQUEwQyxHQUFHQywyQ0FBcUJDLE9BQW5FLEVBQTRFO0FBQzFGO0FBRDBGLFNBRjdFRixvQkFFNkU7QUFFMUYsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNIOztBQUVTRyxFQUFBQSxXQUFXLENBQUNDLElBQUQsRUFBa0JDLEtBQWxCLEVBQTZDO0FBQzlELFdBQU9ELElBQUksQ0FBQ0UsUUFBTCxDQUFjRCxLQUFkLEVBQXFCLEtBQUtMLG9CQUExQixDQUFQO0FBQ0g7O0FBRVNPLEVBQUFBLFVBQVUsQ0FBQ0MsR0FBRCxFQUF5QjtBQUN6QyxXQUFPQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxLQUFLVCxvQkFBakIsQ0FBUDtBQUNIOztBQWRtRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsUGF0aCB9IGZyb20gXCIuLi9Nb2RlbFBhdGhcIjtcbmltcG9ydCB7IEVhY2hDdXJyZW50Q29sbGlzaW9uIH0gZnJvbSBcIi4uL0VhY2hDdXJyZW50Q29sbGlzaW9uXCI7XG5cbmltcG9ydCB7IE1hcDIgfSBmcm9tIFwiLi9NYXAyXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBhdGhNYXA8Vj4gZXh0ZW5kcyBNYXAyPE1vZGVsUGF0aCwgVj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbiA9IGVhY2hDdXJyZW50Q29sbGlzaW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcmVLZXlFcXVhbChsZWZ0OiBNb2RlbFBhdGgsIHJpZ2h0OiBNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuaXNFcXVhbHMocmlnaHQsIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRLZXlIYXNoKGtleTogTW9kZWxQYXRoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGtleS5nZXRIYXNoKHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cbn1cbiJdfQ==