@stemy/ngx-utils 12.2.10 → 12.2.12

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 (100) hide show
  1. package/bundles/stemy-ngx-utils.umd.js +34 -20
  2. package/bundles/stemy-ngx-utils.umd.js.map +1 -1
  3. package/esm2015/ngx-utils/common-types.js +1 -1
  4. package/esm2015/ngx-utils/services/formatter.service.js +4 -3
  5. package/esm2015/ngx-utils/services/language.service.js +16 -4
  6. package/esm2015/public_api.js +1 -1
  7. package/esm2020/ngx-utils/common-types.mjs +3 -1
  8. package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +3 -3
  9. package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +3 -3
  10. package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +3 -3
  11. package/esm2020/ngx-utils/directives/async-method.base.mjs +3 -3
  12. package/esm2020/ngx-utils/directives/async-method.directive.mjs +3 -3
  13. package/esm2020/ngx-utils/directives/background.directive.mjs +3 -3
  14. package/esm2020/ngx-utils/directives/dynamic-table-template.directive.mjs +3 -3
  15. package/esm2020/ngx-utils/directives/global-template.directive.mjs +3 -3
  16. package/esm2020/ngx-utils/directives/icon.directive.mjs +3 -3
  17. package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +3 -3
  18. package/esm2020/ngx-utils/directives/pagination-item.directive.mjs +3 -3
  19. package/esm2020/ngx-utils/directives/pagination.directive.mjs +3 -3
  20. package/esm2020/ngx-utils/directives/resource-if.directive.mjs +3 -3
  21. package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +3 -3
  22. package/esm2020/ngx-utils/directives/sticky.directive.mjs +3 -3
  23. package/esm2020/ngx-utils/directives/unordered-list-item.directive.mjs +3 -3
  24. package/esm2020/ngx-utils/directives/unordered-list-template.directive.mjs +3 -3
  25. package/esm2020/ngx-utils/ngx-utils.imports.mjs +5 -1
  26. package/esm2020/ngx-utils/ngx-utils.module.mjs +15 -6
  27. package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +3 -3
  28. package/esm2020/ngx-utils/pipes/entries.pipe.mjs +3 -3
  29. package/esm2020/ngx-utils/pipes/extra-item-properties.pipe.mjs +3 -3
  30. package/esm2020/ngx-utils/pipes/filter.pipe.mjs +3 -3
  31. package/esm2020/ngx-utils/pipes/find.pipe.mjs +3 -3
  32. package/esm2020/ngx-utils/pipes/format-number.pipe.mjs +3 -3
  33. package/esm2020/ngx-utils/pipes/get-offset.pipe.mjs +3 -3
  34. package/esm2020/ngx-utils/pipes/get-type.pipe.mjs +3 -3
  35. package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +3 -3
  36. package/esm2020/ngx-utils/pipes/group-by.pipe.mjs +3 -3
  37. package/esm2020/ngx-utils/pipes/is-type.pipe.mjs +3 -3
  38. package/esm2020/ngx-utils/pipes/join.pipe.mjs +3 -3
  39. package/esm2020/ngx-utils/pipes/keys.pipe.mjs +3 -3
  40. package/esm2020/ngx-utils/pipes/map.pipe.mjs +3 -3
  41. package/esm2020/ngx-utils/pipes/max.pipe.mjs +3 -3
  42. package/esm2020/ngx-utils/pipes/min.pipe.mjs +3 -3
  43. package/esm2020/ngx-utils/pipes/pop.pipe.mjs +3 -3
  44. package/esm2020/ngx-utils/pipes/reduce.pipe.mjs +3 -3
  45. package/esm2020/ngx-utils/pipes/remap.pipe.mjs +3 -3
  46. package/esm2020/ngx-utils/pipes/replace.pipe.mjs +6 -5
  47. package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +3 -3
  48. package/esm2020/ngx-utils/pipes/round.pipe.mjs +3 -3
  49. package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +3 -3
  50. package/esm2020/ngx-utils/pipes/shift.pipe.mjs +3 -3
  51. package/esm2020/ngx-utils/pipes/split.pipe.mjs +3 -3
  52. package/esm2020/ngx-utils/pipes/translate.pipe.mjs +4 -4
  53. package/esm2020/ngx-utils/pipes/values.pipe.mjs +3 -3
  54. package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +24 -9
  55. package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +3 -3
  56. package/esm2020/ngx-utils/services/acl.service.mjs +3 -3
  57. package/esm2020/ngx-utils/services/api.service.mjs +3 -3
  58. package/esm2020/ngx-utils/services/base-http.client.mjs +3 -3
  59. package/esm2020/ngx-utils/services/base-http.service.mjs +12 -8
  60. package/esm2020/ngx-utils/services/config.service.mjs +3 -3
  61. package/esm2020/ngx-utils/services/error-handler.service.mjs +3 -3
  62. package/esm2020/ngx-utils/services/events.service.mjs +3 -3
  63. package/esm2020/ngx-utils/services/formatter.service.mjs +7 -6
  64. package/esm2020/ngx-utils/services/global-template.service.mjs +3 -3
  65. package/esm2020/ngx-utils/services/icon.service.mjs +3 -3
  66. package/esm2020/ngx-utils/services/language.service.mjs +3 -3
  67. package/esm2020/ngx-utils/services/local-http.service.mjs +47 -0
  68. package/esm2020/ngx-utils/services/open-api.service.mjs +3 -3
  69. package/esm2020/ngx-utils/services/promise.service.mjs +3 -3
  70. package/esm2020/ngx-utils/services/state.service.mjs +5 -5
  71. package/esm2020/ngx-utils/services/static-language.service.mjs +3 -3
  72. package/esm2020/ngx-utils/services/storage.service.mjs +3 -3
  73. package/esm2020/ngx-utils/services/toaster.service.mjs +3 -3
  74. package/esm2020/ngx-utils/services/translated-url.serializer.mjs +3 -3
  75. package/esm2020/ngx-utils/services/universal.service.mjs +5 -5
  76. package/esm2020/ngx-utils/services/wasm.service.mjs +46 -0
  77. package/esm2020/ngx-utils/utils/auth.guard.mjs +3 -3
  78. package/esm2020/ngx-utils/utils/date.utils.mjs +5 -4
  79. package/esm2020/ngx-utils/utils/jsonfn.mjs +45 -0
  80. package/esm2020/ngx-utils/utils/object.utils.mjs +3 -3
  81. package/esm2020/ngx-utils/utils/wasi.mjs +159 -0
  82. package/esm2020/ngx-utils/utils/wasm-worker-proxy.mjs +99 -0
  83. package/esm2020/public_api.mjs +5 -2
  84. package/fesm2015/stemy-ngx-utils.js +18 -5
  85. package/fesm2015/stemy-ngx-utils.js.map +1 -1
  86. package/fesm2015/stemy-ngx-utils.mjs +705 -288
  87. package/fesm2015/stemy-ngx-utils.mjs.map +1 -1
  88. package/fesm2020/stemy-ngx-utils.mjs +699 -286
  89. package/fesm2020/stemy-ngx-utils.mjs.map +1 -1
  90. package/ngx-utils/common-types.d.ts +7 -1
  91. package/ngx-utils/services/formatter.service.d.ts +1 -1
  92. package/ngx-utils/services/language.service.d.ts +3 -3
  93. package/ngx-utils/services/local-http.service.d.ts +14 -0
  94. package/ngx-utils/services/wasm.service.d.ts +25 -0
  95. package/ngx-utils/utils/jsonfn.d.ts +6 -0
  96. package/ngx-utils/utils/wasi.d.ts +26 -0
  97. package/ngx-utils/utils/wasm-worker-proxy.d.ts +17 -0
  98. package/package.json +1 -1
  99. package/public_api.d.ts +1 -1
  100. package/stemy-ngx-utils.metadata.json +1 -1
@@ -24,7 +24,7 @@ export class StateService extends BehaviorSubject {
24
24
  return;
25
25
  const routerStateSnapshot = this.router.routerState.snapshot;
26
26
  let snapshot = routerStateSnapshot.root;
27
- let context = this.contexts.getContext("primary");
27
+ let context = this.contexts?.getContext("primary");
28
28
  let segments = snapshot.url;
29
29
  const components = [];
30
30
  const snapshots = [];
@@ -163,11 +163,11 @@ export class StateService extends BehaviorSubject {
163
163
  return [url, extras];
164
164
  }
165
165
  }
166
- StateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StateService, deps: [{ token: i0.Injector }, { token: i0.NgZone }, { token: i1.UniversalService }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
167
- StateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StateService });
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StateService, decorators: [{
166
+ StateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StateService, deps: [{ token: i0.Injector }, { token: i0.NgZone }, { token: i1.UniversalService }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ StateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StateService });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StateService, decorators: [{
169
169
  type: Injectable
170
170
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.NgZone }, { type: i1.UniversalService }, { type: i2.Router, decorators: [{
171
171
  type: Optional
172
172
  }] }]; } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDSCxzQkFBc0IsRUFJdEIsYUFBYSxFQU1iLE1BQU0sRUFHVCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxlQUFlLEVBQUUsVUFBVSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7QUFDbEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFTLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBVyxFQUFFLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFpQixFQUFFLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztBQVN6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLGVBQW9CO0lBeURsRCxZQUFxQixRQUFrQixFQUNsQixJQUFZLEVBQ1osU0FBMkIsRUFDZixTQUFpQixJQUFJO1FBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUpLLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQWtC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Q0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQXVCLEVBQUUsTUFBeUI7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7eUdBNUlRLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkE2RE0sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIERhdGEsXHJcbiAgICBFdmVudCxcclxuICAgIE5hdmlnYXRpb25FbmQsXHJcbiAgICBOYXZpZ2F0aW9uRXh0cmFzLFxyXG4gICAgT3V0bGV0Q29udGV4dCxcclxuICAgIFBhcmFtcyxcclxuICAgIFJlc29sdmUsXHJcbiAgICBSb3V0ZSxcclxuICAgIFJvdXRlcixcclxuICAgIFVybFNlZ21lbnQsIFVybFNlcmlhbGl6ZXIsXHJcbiAgICBVcmxUcmVlXHJcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge3NraXBXaGlsZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtJUm91dGUsIE5hdmlnYXRpb25VcmxQYXJhbX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZW1wdHlTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCA9IG5ldyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KCk7XHJcbmV4cG9ydCBjb25zdCBlbXB0eURhdGE6IERhdGEgPSB7aWQ6IFwiXCJ9O1xyXG5leHBvcnQgY29uc3QgZW1wdHlQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG5leHBvcnQgY29uc3QgZW1wdHlTZWdtZW50czogVXJsU2VnbWVudFtdID0gW107XHJcbmV4cG9ydCBjb25zdCBlbXB0eUNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTdGF0ZUluZm8ge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICBzZWdtZW50czogVXJsU2VnbWVudFtdO1xyXG4gICAgY29tcG9uZW50czogYW55W107XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN0YXRlU2VydmljZSBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxhbnk+IHtcclxuXHJcbiAgICByZWFkb25seSBnbG9iYWxFeHRyYXM6IE5hdmlnYXRpb25FeHRyYXM7XHJcblxyXG4gICAgcHJpdmF0ZSBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gICAgcHJpdmF0ZSBjb21wOiBhbnk7XHJcbiAgICBwcml2YXRlIHN0YXRlSW5mbzogSVN0YXRlSW5mbztcclxuICAgIHByaXZhdGUgY29udGV4dHM6IENoaWxkcmVuT3V0bGV0Q29udGV4dHM7XHJcblxyXG4gICAgc3RhdGljIHRvUGF0aChyb3V0ZTogUm91dGUsIHBhcmFtczogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcGF0aCA9IHJvdXRlLnBhdGggfHwgXCJcIjtcclxuICAgICAgICBPYmplY3RVdGlscy5pdGVyYXRlKHBhcmFtcywgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke2tleX1gLCBgJHt2YWx1ZX1gKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50KCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc25hcHNob3QoKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvdCB8fCBlbXB0eVNuYXBzaG90O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb3V0ZSgpOiBJUm91dGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkYXRhKCk6IERhdGEge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNuYXBzaG90LmRhdGEgfHwgZW1wdHlEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwYXJhbXMoKTogUGFyYW1zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zbmFwc2hvdC5wYXJhbXMgfHwgZW1wdHlQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc25hcHNob3QucXVlcnlQYXJhbXMgfHwgZW1wdHlQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHVybCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlSW5mby51cmwgfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXJsU2VnbWVudHMoKTogVXJsU2VnbWVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluZm8uc2VnbWVudHMgfHwgZW1wdHlTZWdtZW50cztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50cygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbmZvLmNvbXBvbmVudHMgfHwgZW1wdHlDb21wb25lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb3V0ZXJDb25maWcoKTogSVJvdXRlW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgem9uZTogTmdab25lLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIgPSBudWxsKSB7XHJcbiAgICAgICAgc3VwZXIobnVsbCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsRXh0cmFzID0ge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodGhpcy5oYW5kbGVSb3V0ZXJFdmVudCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgICAgIHVybDogXCJcIixcclxuICAgICAgICAgICAgc2VnbWVudHM6IFtdLFxyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyA9ICg8YW55PnJvdXRlcikucm9vdENvbnRleHRzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlclN0YXRlU25hcHNob3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcclxuICAgICAgICBjb25zdCByZXNvbHZlcnMgPSB0aGlzLnJvdXRlLnJlc29sdmUgfHwge307XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlc29sdmVycyk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KHJlc29sdmVyc1trZXldKSBhcyBSZXNvbHZlPGFueT47XHJcbiAgICAgICAgICAgIGxldCByZXNvbHZlZCA9IHJlc29sdmVyLnJlc29sdmUodGhpcy5zbmFwc2hvdCwgcm91dGVyU3RhdGVTbmFwc2hvdCk7XHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmVkID0gcmVzb2x2ZWQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSBhd2FpdCByZXNvbHZlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHJlc29sdmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nIHwgVXJsVHJlZSwgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUodXJsLCBuYXZpZ2F0aW9uRXh0cmFzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuYXZpZ2F0ZSh1cmw6IE5hdmlnYXRpb25VcmxQYXJhbSwgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IFt0cmVlLCBleHRyYXNdID0gdGhpcy5jcmVhdGVVcmxUcmVlKHVybCwgbmF2aWdhdGlvbkV4dHJhcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0cmVlLCBleHRyYXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9wZW4odXJsOiBOYXZpZ2F0aW9uVXJsUGFyYW0sIHRhcmdldCA9IFwiX2JsYW5rXCIsIG5hdmlnYXRpb25FeHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5yb3V0ZXIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBbdHJlZSwgZXh0cmFzXSA9IHRoaXMuY3JlYXRlVXJsVHJlZSh1cmwsIG5hdmlnYXRpb25FeHRyYXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkluTmV3V2luZG93KHRyZWUsIHRhcmdldCkgfHwgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0cmVlLCBleHRyYXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZUltbWVkaWF0ZWx5KG5leHQ/OiAodmFsdWU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHZvaWQsIGVycm9yPzogKGVycm9yOiBhbnkpID0+IHZvaWQsIGNvbXBsZXRlPzogKCkgPT4gdm9pZCk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGlwZShza2lwV2hpbGUodiA9PiB2ID09IG51bGwpKS5zdWJzY3JpYmUobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3BlbkluTmV3V2luZG93KHRyZWU6IFVybFRyZWUsIHRhcmdldDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh0aGlzLnJvdXRlci51cmwsIFwiXCIpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodHJlZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcmlhbGl6ZWQuc3RhcnRzV2l0aChcIi9cIikgPyBcIlwiIDogXCIvXCI7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGJhc2VVcmwgKyBzZXBhcmF0b3IgKyBzZXJpYWxpemVkLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBvcGVuIG5ldyB3aW5kb3c6ICR7ZX1gKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlVXJsVHJlZSh1cmw6IE5hdmlnYXRpb25VcmxQYXJhbSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFtVcmxUcmVlLCBOYXZpZ2F0aW9uRXh0cmFzXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgZXh0cmFzID0gT2JqZWN0LmFzc2lnbihleHRyYXMsIHRoaXMuZ2xvYmFsRXh0cmFzLCBleHRyYXMgfHwge30pO1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHVybCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHVybCwgZXh0cmFzKSwgZXh0cmFzXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNTdHJpbmcodXJsKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gW3RoaXMucm91dGVyLnBhcnNlVXJsKHVybCksIGV4dHJhc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbdXJsLCBleHRyYXNdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBoYW5kbGVSb3V0ZXJFdmVudCA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgcm91dGVyU3RhdGVTbmFwc2hvdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90O1xyXG4gICAgICAgIGxldCBzbmFwc2hvdCA9IHJvdXRlclN0YXRlU25hcHNob3Qucm9vdDtcclxuICAgICAgICBsZXQgY29udGV4dDogT3V0bGV0Q29udGV4dCA9IHRoaXMuY29udGV4dHMuZ2V0Q29udGV4dChcInByaW1hcnlcIik7XHJcbiAgICAgICAgbGV0IHNlZ21lbnRzID0gc25hcHNob3QudXJsO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcbiAgICAgICAgY29uc3Qgc25hcHNob3RzOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90W10gPSBbXTtcclxuICAgICAgICB3aGlsZSAoc25hcHNob3QpIHtcclxuICAgICAgICAgICAgc25hcHNob3RzLnB1c2goc25hcHNob3QpO1xyXG4gICAgICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmNvbmNhdChzbmFwc2hvdC51cmwpO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQub3V0bGV0ICYmIGNvbnRleHQub3V0bGV0LmlzQWN0aXZhdGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChjb250ZXh0Lm91dGxldC5jb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY2hpbGRyZW4uZ2V0Q29udGV4dChcInByaW1hcnlcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc25hcHNob3QgPSBzbmFwc2hvdC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbXAgPSBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdGhpcy5zaG90ID0gc25hcHNob3RzW3NuYXBzaG90cy5sZW5ndGggLSAxXTtcclxuICAgICAgICB0aGlzLnN0YXRlSW5mbyA9IHtcclxuICAgICAgICAgICAgdXJsOiByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybCxcclxuICAgICAgICAgICAgc2VnbWVudHM6IHNlZ21lbnRzLFxyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBjb21wb25lbnRzXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm5leHQodGhpcy5zaG90KTtcclxuICAgIH07XHJcbn1cclxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDSCxzQkFBc0IsRUFJdEIsYUFBYSxFQU1iLE1BQU0sRUFHVCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxlQUFlLEVBQUUsVUFBVSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7QUFDbEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFTLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBVyxFQUFFLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFpQixFQUFFLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztBQVN6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLGVBQW9CO0lBeURsRCxZQUFxQixRQUFrQixFQUNsQixJQUFZLEVBQ1osU0FBMkIsRUFDZixTQUFpQixJQUFJO1FBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUpLLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQWtC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Q0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQXVCLEVBQUUsTUFBeUI7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7eUdBNUlRLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkE2RE0sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIERhdGEsXHJcbiAgICBFdmVudCxcclxuICAgIE5hdmlnYXRpb25FbmQsXHJcbiAgICBOYXZpZ2F0aW9uRXh0cmFzLFxyXG4gICAgT3V0bGV0Q29udGV4dCxcclxuICAgIFBhcmFtcyxcclxuICAgIFJlc29sdmUsXHJcbiAgICBSb3V0ZSxcclxuICAgIFJvdXRlcixcclxuICAgIFVybFNlZ21lbnQsXHJcbiAgICBVcmxUcmVlXHJcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge3NraXBXaGlsZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtJUm91dGUsIE5hdmlnYXRpb25VcmxQYXJhbX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZW1wdHlTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCA9IG5ldyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KCk7XHJcbmV4cG9ydCBjb25zdCBlbXB0eURhdGE6IERhdGEgPSB7aWQ6IFwiXCJ9O1xyXG5leHBvcnQgY29uc3QgZW1wdHlQYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG5leHBvcnQgY29uc3QgZW1wdHlTZWdtZW50czogVXJsU2VnbWVudFtdID0gW107XHJcbmV4cG9ydCBjb25zdCBlbXB0eUNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTdGF0ZUluZm8ge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICBzZWdtZW50czogVXJsU2VnbWVudFtdO1xyXG4gICAgY29tcG9uZW50czogYW55W107XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN0YXRlU2VydmljZSBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxhbnk+IHtcclxuXHJcbiAgICByZWFkb25seSBnbG9iYWxFeHRyYXM6IE5hdmlnYXRpb25FeHRyYXM7XHJcblxyXG4gICAgcHJpdmF0ZSBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gICAgcHJpdmF0ZSBjb21wOiBhbnk7XHJcbiAgICBwcml2YXRlIHN0YXRlSW5mbzogSVN0YXRlSW5mbztcclxuICAgIHByaXZhdGUgY29udGV4dHM6IENoaWxkcmVuT3V0bGV0Q29udGV4dHM7XHJcblxyXG4gICAgc3RhdGljIHRvUGF0aChyb3V0ZTogUm91dGUsIHBhcmFtczogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcGF0aCA9IHJvdXRlLnBhdGggfHwgXCJcIjtcclxuICAgICAgICBPYmplY3RVdGlscy5pdGVyYXRlKHBhcmFtcywgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke2tleX1gLCBgJHt2YWx1ZX1gKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50KCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc25hcHNob3QoKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvdCB8fCBlbXB0eVNuYXBzaG90O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb3V0ZSgpOiBJUm91dGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkYXRhKCk6IERhdGEge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNuYXBzaG90LmRhdGEgfHwgZW1wdHlEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwYXJhbXMoKTogUGFyYW1zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zbmFwc2hvdC5wYXJhbXMgfHwgZW1wdHlQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc25hcHNob3QucXVlcnlQYXJhbXMgfHwgZW1wdHlQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHVybCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlSW5mby51cmwgfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXJsU2VnbWVudHMoKTogVXJsU2VnbWVudFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUluZm8uc2VnbWVudHMgfHwgZW1wdHlTZWdtZW50cztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50cygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbmZvLmNvbXBvbmVudHMgfHwgZW1wdHlDb21wb25lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb3V0ZXJDb25maWcoKTogSVJvdXRlW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgem9uZTogTmdab25lLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIgPSBudWxsKSB7XHJcbiAgICAgICAgc3VwZXIobnVsbCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsRXh0cmFzID0ge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodGhpcy5oYW5kbGVSb3V0ZXJFdmVudCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgICAgIHVybDogXCJcIixcclxuICAgICAgICAgICAgc2VnbWVudHM6IFtdLFxyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyA9ICg8YW55PnJvdXRlcikucm9vdENvbnRleHRzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlclN0YXRlU25hcHNob3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcclxuICAgICAgICBjb25zdCByZXNvbHZlcnMgPSB0aGlzLnJvdXRlLnJlc29sdmUgfHwge307XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlc29sdmVycyk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KHJlc29sdmVyc1trZXldKSBhcyBSZXNvbHZlPGFueT47XHJcbiAgICAgICAgICAgIGxldCByZXNvbHZlZCA9IHJlc29sdmVyLnJlc29sdmUodGhpcy5zbmFwc2hvdCwgcm91dGVyU3RhdGVTbmFwc2hvdCk7XHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmVkID0gcmVzb2x2ZWQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSBhd2FpdCByZXNvbHZlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHJlc29sdmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nIHwgVXJsVHJlZSwgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUodXJsLCBuYXZpZ2F0aW9uRXh0cmFzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuYXZpZ2F0ZSh1cmw6IE5hdmlnYXRpb25VcmxQYXJhbSwgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHt9KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IFt0cmVlLCBleHRyYXNdID0gdGhpcy5jcmVhdGVVcmxUcmVlKHVybCwgbmF2aWdhdGlvbkV4dHJhcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0cmVlLCBleHRyYXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9wZW4odXJsOiBOYXZpZ2F0aW9uVXJsUGFyYW0sIHRhcmdldCA9IFwiX2JsYW5rXCIsIG5hdmlnYXRpb25FeHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7fSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5yb3V0ZXIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBbdHJlZSwgZXh0cmFzXSA9IHRoaXMuY3JlYXRlVXJsVHJlZSh1cmwsIG5hdmlnYXRpb25FeHRyYXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkluTmV3V2luZG93KHRyZWUsIHRhcmdldCkgfHwgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0cmVlLCBleHRyYXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZUltbWVkaWF0ZWx5KG5leHQ/OiAodmFsdWU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHZvaWQsIGVycm9yPzogKGVycm9yOiBhbnkpID0+IHZvaWQsIGNvbXBsZXRlPzogKCkgPT4gdm9pZCk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGlwZShza2lwV2hpbGUodiA9PiB2ID09IG51bGwpKS5zdWJzY3JpYmUobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3BlbkluTmV3V2luZG93KHRyZWU6IFVybFRyZWUsIHRhcmdldDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh0aGlzLnJvdXRlci51cmwsIFwiXCIpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodHJlZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcmlhbGl6ZWQuc3RhcnRzV2l0aChcIi9cIikgPyBcIlwiIDogXCIvXCI7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGJhc2VVcmwgKyBzZXBhcmF0b3IgKyBzZXJpYWxpemVkLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBvcGVuIG5ldyB3aW5kb3c6ICR7ZX1gKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlVXJsVHJlZSh1cmw6IE5hdmlnYXRpb25VcmxQYXJhbSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFtVcmxUcmVlLCBOYXZpZ2F0aW9uRXh0cmFzXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlcikgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgZXh0cmFzID0gT2JqZWN0LmFzc2lnbihleHRyYXMsIHRoaXMuZ2xvYmFsRXh0cmFzLCBleHRyYXMgfHwge30pO1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHVybCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHVybCwgZXh0cmFzKSwgZXh0cmFzXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNTdHJpbmcodXJsKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gW3RoaXMucm91dGVyLnBhcnNlVXJsKHVybCksIGV4dHJhc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbdXJsLCBleHRyYXNdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBoYW5kbGVSb3V0ZXJFdmVudCA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgcm91dGVyU3RhdGVTbmFwc2hvdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90O1xyXG4gICAgICAgIGxldCBzbmFwc2hvdCA9IHJvdXRlclN0YXRlU25hcHNob3Qucm9vdDtcclxuICAgICAgICBsZXQgY29udGV4dDogT3V0bGV0Q29udGV4dCA9IHRoaXMuY29udGV4dHM/LmdldENvbnRleHQoXCJwcmltYXJ5XCIpO1xyXG4gICAgICAgIGxldCBzZWdtZW50cyA9IHNuYXBzaG90LnVybDtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHNuYXBzaG90czogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFtdID0gW107XHJcbiAgICAgICAgd2hpbGUgKHNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgIHNuYXBzaG90cy5wdXNoKHNuYXBzaG90KTtcclxuICAgICAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy5jb25jYXQoc25hcHNob3QudXJsKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0Lm91dGxldCAmJiBjb250ZXh0Lm91dGxldC5pc0FjdGl2YXRlZClcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29udGV4dC5vdXRsZXQuY29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNoaWxkcmVuLmdldENvbnRleHQoXCJwcmltYXJ5XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNuYXBzaG90ID0gc25hcHNob3QuZmlyc3RDaGlsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21wID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIHRoaXMuc2hvdCA9IHNuYXBzaG90c1tzbmFwc2hvdHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgICAgIHVybDogcm91dGVyU3RhdGVTbmFwc2hvdC51cmwsXHJcbiAgICAgICAgICAgIHNlZ21lbnRzOiBzZWdtZW50cyxcclxuICAgICAgICAgICAgY29tcG9uZW50czogY29tcG9uZW50c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5uZXh0KHRoaXMuc2hvdCk7XHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
@@ -143,9 +143,9 @@ export class StaticLanguageService {
143
143
  return browserLang;
144
144
  }
145
145
  }
146
- StaticLanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StaticLanguageService, deps: [{ token: EventsService }, { token: StorageService }, { token: CONFIG_SERVICE }, { token: PROMISE_SERVICE }, { token: BaseHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
147
- StaticLanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StaticLanguageService });
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StaticLanguageService, decorators: [{
146
+ StaticLanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StaticLanguageService, deps: [{ token: EventsService }, { token: StorageService }, { token: CONFIG_SERVICE }, { token: PROMISE_SERVICE }, { token: BaseHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
147
+ StaticLanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StaticLanguageService });
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StaticLanguageService, decorators: [{
149
149
  type: Injectable
150
150
  }], ctorParameters: function () { return [{ type: i1.EventsService, decorators: [{
151
151
  type: Inject,
@@ -41,9 +41,9 @@ export class StorageService {
41
41
  storage.removeItem(key);
42
42
  }
43
43
  }
44
- StorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StorageService, deps: [{ token: i1.UniversalService }], target: i0.ɵɵFactoryTarget.Injectable });
45
- StorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StorageService });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: StorageService, decorators: [{
44
+ StorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StorageService, deps: [{ token: i1.UniversalService }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ StorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StorageService });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StorageService, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: function () { return [{ type: i1.UniversalService }]; } });
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRXZCLFlBQXFCLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQ2hELENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLFlBQWtCLEVBQUUsT0FBb0IsV0FBVyxDQUFDLEtBQUs7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUztZQUFFLE9BQU8sWUFBWSxDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUMxRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxZQUFZLENBQUM7UUFDL0IsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxPQUFvQixXQUFXLENBQUMsS0FBSztRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDMUUsSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLEVBQUU7WUFDMUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUIsT0FBTztTQUNWO1FBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVyxFQUFFLE9BQW9CLFdBQVcsQ0FBQyxLQUFLO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUMxRSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OzJHQS9CUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdG9yYWdlTW9kZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogVXNlIHRoaXMgc2VydmljZSBpbnN0ZWFkIG9mIFN0b3JhZ2UgdG8gYXZvaWQgQW5ndWxhciBVbml2ZXJzYWwgYnJlYWtzIG9uIHNlcnZlciBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHVuaXZlcnNhbDogVW5pdmVyc2FsU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGdldChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55LCBtb2RlOiBTdG9yYWdlTW9kZSA9IFN0b3JhZ2VNb2RlLkxvY2FsKTogYW55IHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlcikgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBjb25zdCBzdG9yYWdlID0gbW9kZSA9PSBTdG9yYWdlTW9kZS5Mb2NhbCA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBtb2RlOiBTdG9yYWdlTW9kZSA9IFN0b3JhZ2VNb2RlLkxvY2FsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIpIHJldHVybjtcclxuICAgICAgICBjb25zdCBzdG9yYWdlID0gbW9kZSA9PSBTdG9yYWdlTW9kZS5Mb2NhbCA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoa2V5OiBzdHJpbmcsIG1vZGU6IFN0b3JhZ2VNb2RlID0gU3RvcmFnZU1vZGUuTG9jYWwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlcikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBtb2RlID09IFN0b3JhZ2VNb2RlLkxvY2FsID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2U7XHJcbiAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -21,9 +21,9 @@ export class ConsoleToasterService {
21
21
  this.language.getTranslation(message, params).then(callback);
22
22
  }
23
23
  }
24
- ConsoleToasterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConsoleToasterService, deps: [{ token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
25
- ConsoleToasterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConsoleToasterService });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConsoleToasterService, decorators: [{
24
+ ConsoleToasterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ConsoleToasterService, deps: [{ token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ConsoleToasterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ConsoleToasterService });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ConsoleToasterService, decorators: [{
27
27
  type: Injectable
28
28
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
29
29
  type: Inject,
@@ -62,9 +62,9 @@ export class TranslatedUrlSerializer extends DefaultUrlSerializer {
62
62
  return newGroup;
63
63
  }
64
64
  }
65
- TranslatedUrlSerializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatedUrlSerializer, deps: [{ token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
66
- TranslatedUrlSerializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatedUrlSerializer });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatedUrlSerializer, decorators: [{
65
+ TranslatedUrlSerializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TranslatedUrlSerializer, deps: [{ token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
66
+ TranslatedUrlSerializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TranslatedUrlSerializer });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TranslatedUrlSerializer, decorators: [{
68
68
  type: Injectable
69
69
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
70
70
  type: Inject,
@@ -11,7 +11,7 @@ export class UniversalService {
11
11
  this.platformId = platformId;
12
12
  this.dds = dds;
13
13
  const info = this.dds.getDeviceInfo();
14
- this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST)/gi.test(info.userAgent);
14
+ this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);
15
15
  }
16
16
  get isBrowser() {
17
17
  return isPlatformBrowser(this.platformId);
@@ -67,12 +67,12 @@ export class UniversalService {
67
67
  return this.crawler;
68
68
  }
69
69
  }
70
- UniversalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: UniversalService, deps: [{ token: PLATFORM_ID }, { token: i1.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Injectable });
71
- UniversalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: UniversalService });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: UniversalService, decorators: [{
70
+ UniversalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UniversalService, deps: [{ token: PLATFORM_ID }, { token: i1.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ UniversalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UniversalService });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UniversalService, decorators: [{
73
73
  type: Injectable
74
74
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
75
75
  type: Inject,
76
76
  args: [PLATFORM_ID]
77
77
  }] }, { type: i1.DeviceDetectorService }]; } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXVFekIsWUFBeUMsVUFBa0IsRUFBVSxHQUEwQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLGdHQUFnRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekksQ0FBQztJQXhFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE9BQU8sRUFBRSxNQUFNO2dCQUNmLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixlQUFlLEVBQUUsU0FBUztnQkFDMUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQ3BCO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7OzZHQW5FUSxnQkFBZ0Isa0JBdUVMLFdBQVc7aUhBdkV0QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBd0VNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mb30gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGV2aWNlSW5mbygpOiBEZXZpY2VJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogXCJhbmd1bGFyLXVuaXZlcnNhbFwiLFxyXG4gICAgICAgICAgICAgICAgb3M6IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogXCJub2RlXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2U6IFwibm9kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3NfdmVyc2lvbjogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIlxyXG4gICAgICAgICAgICB9IGFzIGFueVxyXG4gICAgICAgICAgICA6IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3Nlcl92ZXJzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0V4cGxvcmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwiaWVcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNFZGdlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwibXMtZWRnZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0Nocm9tZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlciA9PSBcImNocm9tZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGRzLmJyb3dzZXIgPT0gXCJmaXJlZm94XCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwic2FmYXJpXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzVGFibGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc1RhYmxldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNNb2JpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc0Rlc2t0b3AoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNDcmF3bGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyYXdsZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bGVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLCBwcml2YXRlIGRkczogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgICAgICB0aGlzLmNyYXdsZXIgPSAvKGJvdHxnb29nbGV8YmFpZHV8YmluZ3xtc258ZHVja2R1Y2tib3R8dGVvbWF8c2x1cnB8eWFuZGV4fGxpZ2h0aG91c2V8YW5ndWxhci11bml2ZXJzYWx8UFRTVCkvZ2kudGVzdChpbmZvLnVzZXJBZ2VudCk7XHJcbiAgICB9XHJcbn1cclxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXVFekIsWUFBeUMsVUFBa0IsRUFBVSxHQUEwQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLCtHQUErRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEosQ0FBQztJQXhFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE9BQU8sRUFBRSxNQUFNO2dCQUNmLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixlQUFlLEVBQUUsU0FBUztnQkFDMUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQ3BCO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7OzZHQW5FUSxnQkFBZ0Isa0JBdUVMLFdBQVc7aUhBdkV0QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBd0VNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mb30gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGV2aWNlSW5mbygpOiBEZXZpY2VJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogXCJhbmd1bGFyLXVuaXZlcnNhbFwiLFxyXG4gICAgICAgICAgICAgICAgb3M6IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogXCJub2RlXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2U6IFwibm9kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3NfdmVyc2lvbjogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIlxyXG4gICAgICAgICAgICB9IGFzIGFueVxyXG4gICAgICAgICAgICA6IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3Nlcl92ZXJzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0V4cGxvcmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwiaWVcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNFZGdlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwibXMtZWRnZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0Nocm9tZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlciA9PSBcImNocm9tZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGRzLmJyb3dzZXIgPT0gXCJmaXJlZm94XCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwic2FmYXJpXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzVGFibGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc1RhYmxldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNNb2JpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc0Rlc2t0b3AoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNDcmF3bGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyYXdsZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bGVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLCBwcml2YXRlIGRkczogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgICAgICB0aGlzLmNyYXdsZXIgPSAvKGJvdHxnb29nbGV8YmFpZHV8YmluZ3xtc258ZHVja2R1Y2tib3R8dGVvbWF8c2x1cnB8eWFuZGV4fGxpZ2h0aG91c2V8YW5ndWxhci11bml2ZXJzYWx8UFRTVHxQb3N0bWFuUnVudGltZSkvZ2kudGVzdChpbmZvLnVzZXJBZ2VudCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,46 @@
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { WASI_IMPLEMENTATION } from "../common-types";
3
+ import { WasmWorkerProxy } from "../utils/wasm-worker-proxy";
4
+ import { UniversalService } from "./universal.service";
5
+ import { LocalHttpService } from "./local-http.service";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./universal.service";
8
+ import * as i2 from "./local-http.service";
9
+ /**
10
+ * Use this service to load WebAssembly modules
11
+ */
12
+ export class WasmService {
13
+ constructor(universal, http, wasi) {
14
+ this.universal = universal;
15
+ this.http = http;
16
+ this.wasi = wasi.constructor;
17
+ }
18
+ async getModule(name) {
19
+ if (!this.universal.isBrowser || !name)
20
+ return null;
21
+ this.modules = this.modules || {};
22
+ this.modules[name] = this.modules[name] || this.http.get(`wasm/${name}.wasm`, {
23
+ responseType: "arraybuffer"
24
+ }).then(async (bytes) => {
25
+ const wasi = new this.wasi();
26
+ return await wasi.instantiate(bytes);
27
+ });
28
+ return this.modules[name];
29
+ }
30
+ getWorkerModule(name) {
31
+ if (!this.universal.isBrowser || !name)
32
+ return null;
33
+ this.workerModules = this.workerModules || {};
34
+ this.workerModules[name] = new WasmWorkerProxy(this.http.url(`wasm/${name}.wasm`), this.wasi);
35
+ return this.workerModules[name];
36
+ }
37
+ }
38
+ WasmService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WasmService, deps: [{ token: i1.UniversalService }, { token: i2.LocalHttpService }, { token: WASI_IMPLEMENTATION }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ WasmService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WasmService });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WasmService, decorators: [{
41
+ type: Injectable
42
+ }], ctorParameters: function () { return [{ type: i1.UniversalService }, { type: i2.LocalHttpService }, { type: undefined, decorators: [{
43
+ type: Inject,
44
+ args: [WASI_IMPLEMENTATION]
45
+ }] }]; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy93YXNtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUEyQixtQkFBbUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUd0RDs7R0FFRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBTXBCLFlBQXNCLFNBQTJCLEVBQzNCLElBQXNCLEVBQ0gsSUFBVztRQUY5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUV4QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFrQixDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFZLElBQVk7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSTtZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFO1lBQzFFLFlBQVksRUFBRSxhQUFhO1NBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxDQUFpQixJQUFZO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUk7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxDQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQ2xDLElBQUksQ0FBQyxJQUFJLENBQ1osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBRTtJQUNyQyxDQUFDOzt3R0FsQ1EsV0FBVyxrRkFRQSxtQkFBbUI7NEdBUjlCLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBU00sTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJV2FzaSwgSVdhc20sIElXYXNtQXN5bmMsIFdBU0lfSU1QTEVNRU5UQVRJT059IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtXYXNtV29ya2VyUHJveHl9IGZyb20gXCIuLi91dGlscy93YXNtLXdvcmtlci1wcm94eVwiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TG9jYWxIdHRwU2VydmljZX0gZnJvbSBcIi4vbG9jYWwtaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7V2FzaX0gZnJvbSBcIi4uL3V0aWxzL3dhc2lcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGxvYWQgV2ViQXNzZW1ibHkgbW9kdWxlc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgV2FzbVNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCB3YXNpOiBUeXBlPFdhc2k+XHJcbiAgICBwcm90ZWN0ZWQgbW9kdWxlczogeyBbdXJsOiBzdHJpbmddOiBQcm9taXNlPGFueT4gfTtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJNb2R1bGVzOiB7IFt1cmw6IHN0cmluZ106IGFueSB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgaHR0cDogTG9jYWxIdHRwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoV0FTSV9JTVBMRU1FTlRBVElPTikgd2FzaTogSVdhc2kpIHtcclxuICAgICAgICB0aGlzLndhc2kgPSB3YXNpLmNvbnN0cnVjdG9yIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNb2R1bGU8VCA9IElXYXNtPihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciB8fCAhbmFtZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gdGhpcy5tb2R1bGVzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMubW9kdWxlc1tuYW1lXSA9IHRoaXMubW9kdWxlc1tuYW1lXSB8fCB0aGlzLmh0dHAuZ2V0KGB3YXNtLyR7bmFtZX0ud2FzbWAsIHtcclxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCJcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChieXRlcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3YXNpID0gbmV3IHRoaXMud2FzaSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgd2FzaS5pbnN0YW50aWF0ZShieXRlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlc1tuYW1lXSBhcyBQcm9taXNlPGFueT47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V29ya2VyTW9kdWxlPFQgPSBJV2FzbUFzeW5jPihuYW1lOiBzdHJpbmcpOiBUIHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciB8fCAhbmFtZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy53b3JrZXJNb2R1bGVzID0gdGhpcy53b3JrZXJNb2R1bGVzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMud29ya2VyTW9kdWxlc1tuYW1lXSA9IG5ldyBXYXNtV29ya2VyUHJveHkoXHJcbiAgICAgICAgICAgIHRoaXMuaHR0cC51cmwoYHdhc20vJHtuYW1lfS53YXNtYCksXHJcbiAgICAgICAgICAgIHRoaXMud2FzaVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya2VyTW9kdWxlc1tuYW1lXSA7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -146,8 +146,8 @@ export class AuthGuard {
146
146
  });
147
147
  }
148
148
  }
149
- AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AuthGuard, deps: [{ token: Injector }, { token: StateService }, { token: AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
150
- AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AuthGuard });
149
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthGuard, deps: [{ token: Injector }, { token: StateService }, { token: AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
150
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthGuard });
151
151
  __decorate([
152
152
  FactoryDependencies(AUTH_SERVICE),
153
153
  __metadata("design:type", Function),
@@ -166,7 +166,7 @@ __decorate([
166
166
  __metadata("design:paramtypes", [Object, StateService, String]),
167
167
  __metadata("design:returntype", Function)
168
168
  ], AuthGuard, "guardAuthStateField", null);
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AuthGuard, decorators: [{
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthGuard, decorators: [{
170
170
  type: Injectable
171
171
  }], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
172
172
  type: Inject,
@@ -1,4 +1,4 @@
1
- import * as moment from "moment";
1
+ import moment from "moment";
2
2
  export class DateUtils {
3
3
  static isHoliday(date) {
4
4
  return moment(date).isoWeekday() > 5;
@@ -9,13 +9,14 @@ export class DateUtils {
9
9
  static add(date, amount, unit) {
10
10
  return moment(date).add(amount, unit).toDate();
11
11
  }
12
- static businessAdd(date, amount, unit) {
12
+ static businessAdd(date, amount, unit, freeDays = []) {
13
13
  const signal = amount < 0 ? -1 : 1;
14
+ const freeMoments = freeDays.map(d => moment(d));
14
15
  let remaining = Math.abs(amount);
15
16
  let day = date;
16
17
  while (remaining) {
17
18
  day = DateUtils.add(day, signal, unit);
18
- if (DateUtils.isBusinessDay(day)) {
19
+ if (DateUtils.isBusinessDay(day) && !freeMoments.some(m => m.isSame(day, "day"))) {
19
20
  remaining--;
20
21
  }
21
22
  }
@@ -25,4 +26,4 @@ export class DateUtils {
25
26
  return DateUtils.businessAdd(date, -amount, unit);
26
27
  }
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZGF0ZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxNQUFNLE9BQU8sU0FBUztJQUVsQixNQUFNLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVU7UUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVUsRUFBRSxNQUEwQixFQUFFLElBQXdCO1FBQ3ZFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBVSxFQUFFLE1BQWMsRUFBRSxJQUF3QjtRQUNuRSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsT0FBTyxTQUFTLEVBQUU7WUFDZCxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsU0FBUyxFQUFFLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQVUsRUFBRSxNQUFjLEVBQUUsSUFBd0I7UUFDeEUsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9uSW5wdXRBcmcxLCBEdXJhdGlvbklucHV0QXJnMn0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGlzSG9saWRheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc29XZWVrZGF5KCkgPiA1O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0J1c2luZXNzRGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzb1dlZWtkYXkoKSA8IDY7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZChkYXRlOiBEYXRlLCBhbW91bnQ/OiBEdXJhdGlvbklucHV0QXJnMSwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5hZGQoYW1vdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NBZGQoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMik6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IHNpZ25hbCA9IGFtb3VudCA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IE1hdGguYWJzKGFtb3VudCk7XHJcbiAgICAgICAgbGV0IGRheSA9IGRhdGU7XHJcbiAgICAgICAgd2hpbGUgKHJlbWFpbmluZykge1xyXG4gICAgICAgICAgICBkYXkgPSBEYXRlVXRpbHMuYWRkKGRheSwgc2lnbmFsLCB1bml0KTtcclxuICAgICAgICAgICAgaWYgKERhdGVVdGlscy5pc0J1c2luZXNzRGF5KGRheSkpIHtcclxuICAgICAgICAgICAgICAgIHJlbWFpbmluZy0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGJ1c2luZXNzU3VidHJhY3QoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMik6IERhdGUge1xyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbHMuYnVzaW5lc3NBZGQoZGF0ZSwgLWFtb3VudCwgdW5pdCk7XHJcbiAgICB9XHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZGF0ZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLFNBQVM7SUFFbEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFVO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFVO1FBQzNCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFVLEVBQUUsTUFBMEIsRUFBRSxJQUF3QjtRQUN2RSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVUsRUFBRSxNQUFjLEVBQUUsSUFBd0IsRUFBRSxXQUFtQixFQUFFO1FBQzFGLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsT0FBTyxTQUFTLEVBQUU7WUFDZCxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM5RSxTQUFTLEVBQUUsQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE1BQWMsRUFBRSxJQUF3QjtRQUN4RSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RHVyYXRpb25JbnB1dEFyZzEsIER1cmF0aW9uSW5wdXRBcmcyfSBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGlzSG9saWRheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc29XZWVrZGF5KCkgPiA1O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0J1c2luZXNzRGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzb1dlZWtkYXkoKSA8IDY7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZChkYXRlOiBEYXRlLCBhbW91bnQ/OiBEdXJhdGlvbklucHV0QXJnMSwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5hZGQoYW1vdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NBZGQoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMiwgZnJlZURheXM6IERhdGVbXSA9IFtdKTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3Qgc2lnbmFsID0gYW1vdW50IDwgMCA/IC0xIDogMTtcclxuICAgICAgICBjb25zdCBmcmVlTW9tZW50cyA9IGZyZWVEYXlzLm1hcChkID0+IG1vbWVudChkKSk7XHJcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IE1hdGguYWJzKGFtb3VudCk7XHJcbiAgICAgICAgbGV0IGRheSA9IGRhdGU7XHJcbiAgICAgICAgd2hpbGUgKHJlbWFpbmluZykge1xyXG4gICAgICAgICAgICBkYXkgPSBEYXRlVXRpbHMuYWRkKGRheSwgc2lnbmFsLCB1bml0KTtcclxuICAgICAgICAgICAgaWYgKERhdGVVdGlscy5pc0J1c2luZXNzRGF5KGRheSkgJiYgIWZyZWVNb21lbnRzLnNvbWUobSA9PiBtLmlzU2FtZShkYXksIFwiZGF5XCIpKSkge1xyXG4gICAgICAgICAgICAgICAgcmVtYWluaW5nLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NTdWJ0cmFjdChkYXRlOiBEYXRlLCBhbW91bnQ6IG51bWJlciwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIERhdGVVdGlscy5idXNpbmVzc0FkZChkYXRlLCAtYW1vdW50LCB1bml0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,45 @@
1
+ export class JSONfn {
2
+ static parse(text) {
3
+ return JSON.parse(text, JSONfn.reviver);
4
+ }
5
+ static stringify(obj) {
6
+ return JSON.stringify(obj, JSONfn.replacer);
7
+ }
8
+ static reviver(key, value) {
9
+ const iso8061 = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:.\d+)?(?:Z|[+-]\d\d:\d\d)$/;
10
+ if (typeof value !== "string")
11
+ return value;
12
+ if (value.length < 8) {
13
+ return value;
14
+ }
15
+ if (value.match(iso8061)) {
16
+ return new Date(value);
17
+ }
18
+ const prefix = value.substring(0, 8);
19
+ if (prefix === "function") {
20
+ return new Function(`return ${value}`)();
21
+ }
22
+ if (prefix === "_NuFrRa_") {
23
+ return new Function(`return ${value.slice(8)}`)();
24
+ }
25
+ if (prefix === "_PxEgEr_") {
26
+ return new Function(`return ${value.slice(8)}`)();
27
+ }
28
+ return value;
29
+ }
30
+ static replacer(key, value) {
31
+ if (value instanceof Function || typeof value === "function") {
32
+ const fnBody = value.toString();
33
+ if (fnBody.length < 8 || fnBody.substring(0, 8) !== "function") {
34
+ // this is ES6 Arrow Function
35
+ return "_NuFrRa_" + fnBody;
36
+ }
37
+ return fnBody;
38
+ }
39
+ if (value instanceof RegExp) {
40
+ return "_PxEgEr_" + value;
41
+ }
42
+ return value;
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmZuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9qc29uZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLE1BQU07SUFFZixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNsQyxNQUFNLE9BQU8sR0FBRyw4REFBOEQsQ0FBQztRQUMvRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7UUFDRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDdkIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUN2QixPQUFPLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNyRDtRQUNELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUN2QixPQUFPLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNyRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ25DLElBQUksS0FBSyxZQUFZLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDMUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUM1RCw2QkFBNkI7Z0JBQzdCLE9BQU8sVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUM5QjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFO1lBQ3pCLE9BQU8sVUFBVSxHQUFHLEtBQUssQ0FBQztTQUM3QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBKU09OZm4ge1xyXG5cclxuICAgIHN0YXRpYyBwYXJzZSh0ZXh0OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQsIEpTT05mbi5yZXZpdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3RyaW5naWZ5KG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBKU09OZm4ucmVwbGFjZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZXZpdmVyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICBjb25zdCBpc284MDYxID0gL15cXGR7NH0tXFxkXFxkLVxcZFxcZFRcXGRcXGQ6XFxkXFxkOlxcZFxcZCg/Oi5cXGQrKT8oPzpafFsrLV1cXGRcXGQ6XFxkXFxkKSQvO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoIDwgOCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZS5tYXRjaChpc284MDYxKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwcmVmaXggPSB2YWx1ZS5zdWJzdHJpbmcoMCwgOCk7XHJcbiAgICAgICAgaWYgKHByZWZpeCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb24oYHJldHVybiAke3ZhbHVlfWApKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcmVmaXggPT09IFwiX051RnJSYV9cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKGByZXR1cm4gJHt2YWx1ZS5zbGljZSg4KX1gKSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJlZml4ID09PSBcIl9QeEVnRXJfXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbihgcmV0dXJuICR7dmFsdWUuc2xpY2UoOCl9YCkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZXBsYWNlcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgZm5Cb2R5ID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKGZuQm9keS5sZW5ndGggPCA4IHx8IGZuQm9keS5zdWJzdHJpbmcoMCwgOCkgIT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBFUzYgQXJyb3cgRnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIHJldHVybiBcIl9OdUZyUmFfXCIgKyBmbkJvZHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZuQm9keTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIl9QeEVnRXJfXCIgKyB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  const defaultPredicate = () => true;
2
- const hasBlob = typeof Blob !== "undefined";
3
- const hasFile = typeof File !== "undefined";
2
+ const hasBlob = typeof Blob !== "undefined" && !!Blob;
3
+ const hasFile = typeof File !== "undefined" && !!File;
4
4
  export class ObjectUtils {
5
5
  static compare(a, b) {
6
6
  if ((a === null || b === null) || (typeof a != typeof b)) {
@@ -269,4 +269,4 @@ export class ObjectUtils {
269
269
  return copies.get(source);
270
270
  }
271
271
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxnQkFBZ0IsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLENBQUM7QUFFNUMsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFNLEVBQUUsQ0FBTTtRQUN6QixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUN2QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ25CLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsT0FBTyxDQUFDLENBQUM7YUFDWjtpQkFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0QsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxR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QUFDLENBQUM7Z0JBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzt3QkFBRSxPQUFPO29CQUN6RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekYsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpbHRlclByZWRpY2F0ZSA9ICh2YWx1ZTogYW55LCBrZXk/OiBhbnksIHRhcmdldD86IGFueSwgc291cmNlPzogYW55KSA9PiBib29sZWFuO1xyXG5leHBvcnQgdHlwZSBJdGVyYXRlQ2FsbGJhY2sgPSAodmFsdWU6IGFueSwga2V5PzogYW55KSA9PiB2b2lkO1xyXG5cclxuY29uc3QgZGVmYXVsdFByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlID0gKCkgPT4gdHJ1ZTtcclxuY29uc3QgaGFzQmxvYiA9IHR5cGVvZiBCbG9iICE9PSBcInVuZGVmaW5lZFwiO1xyXG5jb25zdCBoYXNGaWxlID0gdHlwZW9mIEZpbGUgIT09IFwidW5kZWZpbmVkXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjb21wYXJlKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkgfHwgKHR5cGVvZiBhICE9IHR5cGVvZiBiKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoYSkubG9jYWxlQ29tcGFyZShiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGEgPSBhLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIGIgPSBiLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYSA+IGIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGEgPCBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKG9iajogYW55KTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSAmJiAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihvYmopKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2gocCA9PiBwcm9wcy5hZGQocCkpO1xyXG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChwID0+IHByb3BzLmFkZChwKSk7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlcXVhbHMoYTogYW55LCBiOiBhbnksIHZpc2l0ZWQ6IFNldDxhbnk+ID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZpc2l0ZWQgPSB2aXNpdGVkIHx8IG5ldyBTZXQoKTtcclxuICAgICAgICBpZiAodmlzaXRlZC5oYXMoYSkgJiYgdmlzaXRlZC5oYXMoYikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgcmV0dXJuIHRydWU7IC8vIE5hTiA9PT0gTmFOXHJcbiAgICAgICAgY29uc3QgYXQgPSB0eXBlb2YgYSwgYnQgPSB0eXBlb2YgYjtcclxuICAgICAgICBsZXQgbGVuZ3RoOiBudW1iZXIsIGtleTogYW55LCBrZXlTZXQ6IGFueTtcclxuICAgICAgICBpZiAoYXQgPT0gYnQgJiYgYXQgPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB2aXNpdGVkLmFkZChhKTtcclxuICAgICAgICAgICAgdmlzaXRlZC5hZGQoYik7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICgobGVuZ3RoID0gYS5sZW5ndGgpID09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgPSAwOyBrZXkgPCBsZW5ndGg7IGtleSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5U2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhKGtleSBpbiBrZXlTZXQpICYmIHR5cGVvZiBiW2tleV0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXZhbHVhdGUoZXhwcjogc3RyaW5nLCBjb250ZXh0OiBhbnkgPSB7fSwgcmVzOiBhbnkgPSB7fSk6IGFueSB7XHJcbiAgICAgICAgZXhwciA9IE9iamVjdC5rZXlzKGNvbnRleHQpLnJlZHVjZSgocmVzLCBrZXkpID0+IGB2YXIgJHtrZXl9ID0gdGhpc1snJHtrZXl9J107XFxuJHtyZXN9YCwgZXhwcik7XHJcbiAgICAgICAgY29uc3QgbGluZXMgPSBleHByLnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RMaW5lID0gXCJyZXR1cm4gXCIgKyBsaW5lcy5wb3AoKS5yZXBsYWNlKFwicmV0dXJuIFwiLCBcIlwiKTtcclxuICAgICAgICBsaW5lcy5wdXNoKGxhc3RMaW5lKTtcclxuICAgICAgICBleHByID0gbGluZXMuam9pbihcIlxcblwiKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgRnVuY3Rpb24oZXhwcikuY2FsbChjb250ZXh0KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJlcy5leGNlcHRpb24gPSBlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHBhcnNlIGV4cHJlc3Npb246ICR7ZS5tZXNzYWdlfWAsIGV4cHIsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMucmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFvYmogfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXRlcmF0ZShvYmo6IGFueSwgY2I6IEl0ZXJhdGVDYWxsYmFjayk6IHZvaWQge1xyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5czogYW55W10gPSBBcnJheS5pc0FycmF5KG9iaikgPyBBcnJheS5mcm9tKG9iai5rZXlzKCkpIDogT2JqZWN0LmtleXMob2JqKTtcclxuICAgICAgICBrZXlzLmZvckVhY2goXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYihvYmpba2V5XSwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55LCB0cmVlRmFsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAga2V5ID0ga2V5IHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IGN1cktleSA9IFwiXCI7XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBjdXJLZXkgKz0ga2V5cy5zaGlmdCgpO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgJiYgT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9ialtjdXJLZXldKSAmJiAodHlwZW9mIG9ialtjdXJLZXldID09PSBcIm9iamVjdFwiIHx8ICFrZXlzLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9ialtjdXJLZXldO1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ID0gXCJcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgha2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT0gXCJ1bmRlZmluZWRcIiA/IGtleS5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7Y3VyS2V5fSRgKSwgYHske2N1cktleX19YCkgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICBvYmogPSB0cmVlRmFsbGJhY2sgPyBvYmogfHwgZGVmYXVsdFZhbHVlIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ICs9IFwiLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSB3aGlsZSAoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1hcFRvUGF0aCh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgcmV0dXJuIHNvdXJjZTtcclxuICAgICAgICBjb25zdCBrZXk6IGFueSA9IHBhdGguc2hpZnQoKTtcclxuICAgICAgICBpZiAoa2V5ID09IFwiKlwiKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldCA6IFtdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRbaW5kZXhdLCBpdGVtLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpID8gdGFyZ2V0IDoge307XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBPYmplY3RVdGlscy5tYXBUb1BhdGgodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh0YXJnZXQpID8gbnVsbCA6IHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNBcnJheSA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KTtcclxuICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpIHx8IGlzQXJyYXkgPyB0YXJnZXQgOiB7fTtcclxuICAgICAgICB0YXJnZXRba2V5XSA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRba2V5XSwgc291cmNlLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oa2V5KSB8fCBpc0FycmF5ID8gdGFyZ2V0IDogT2JqZWN0LnZhbHVlcyh0YXJnZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmaWx0ZXIob2JqOiBhbnksIHByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlKTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIHByZWRpY2F0ZSwgbmV3IE1hcCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29weTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIG51bGwsIG5ldyBNYXAoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzc2lnbjxUPih0YXJnZXQ6IFQsIHNvdXJjZTogYW55LCBwcmVkaWNhdGU/OiBGaWx0ZXJQcmVkaWNhdGUpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXQsIHNvdXJjZSwgcHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUeXBlKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJcXFxccyhbYS16QS1aXSspXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaChyZWdleClbMV0udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRUeXBlKHZhbHVlKSA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGwgIT09IHZhbHVlICYmICFpc05hTih2YWx1ZSkgJiYgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHZhbHVlLmdldERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzQmxvYih2YWx1ZTogYW55KTogdmFsdWUgaXMgQmxvYiB7XHJcbiAgICAgICAgcmV0dXJuIChoYXNCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHwgKGhhc0ZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PSB0eXBlb2YodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBudW0gPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKChudW0gLSBudW0pICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU2V0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXQ8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNJbnRlcmZhY2Uob2JqLCBpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IE9iamVjdFV0aWxzLmlzQXJyYXkob2JqKSB8fCAhT2JqZWN0VXRpbHMuaXNPYmplY3QoaW50ZXJGYWNlT2JqZWN0KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpbnRlckZhY2VPYmplY3Rba2V5XSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKFwiKlwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhZChvYmo6IGFueSwgd2lkdGg6IG51bWJlciwgY2hyOiBzdHJpbmcgPSBcIjBcIik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgPyBvYmoudG9TdHJpbmcoKSA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPj0gd2lkdGggPyBzdHIgOiBuZXcgQXJyYXkod2lkdGggLSBzdHIubGVuZ3RoICsgMSkuam9pbihjaHIpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNvcHlSZWN1cnNpdmUodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55LCBwcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSwgY29waWVzOiBNYXA8YW55LCBhbnk+KTogYW55IHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUgfHwgZGVmYXVsdFByZWRpY2F0ZTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNQcmltaXRpdmUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0RhdGUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Jsb2Ioc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XHJcbiAgICAgICAgaWYgKCFjb3BpZXMuaGFzKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpID8gQXJyYXkuZnJvbSh0YXJnZXQpIDogW107XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJlZGljYXRlKGl0ZW0sIGluZGV4LCB0YXJnZXQsIHNvdXJjZSkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IGluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaW5kZXhdID0gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXRbaW5kZXhdLCBpdGVtLCBwcmVkaWNhdGUsIGNvcGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoc291cmNlW2tleV0sIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgcHJlZGljYXRlLCBjb3BpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvcGllcy5nZXQoc291cmNlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxnQkFBZ0IsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRXRELE1BQU0sT0FBTyxXQUFXO0lBRXBCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDekIsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDdkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUNuQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7aUJBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDYjtZQUNELE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFB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QUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7d0JBQUUsT0FBTztvQkFDekQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pGLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaWx0ZXJQcmVkaWNhdGUgPSAodmFsdWU6IGFueSwga2V5PzogYW55LCB0YXJnZXQ/OiBhbnksIHNvdXJjZT86IGFueSkgPT4gYm9vbGVhbjtcclxuZXhwb3J0IHR5cGUgSXRlcmF0ZUNhbGxiYWNrID0gKHZhbHVlOiBhbnksIGtleT86IGFueSkgPT4gdm9pZDtcclxuXHJcbmNvbnN0IGRlZmF1bHRQcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSA9ICgpID0+IHRydWU7XHJcbmNvbnN0IGhhc0Jsb2IgPSB0eXBlb2YgQmxvYiAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUJsb2I7XHJcbmNvbnN0IGhhc0ZpbGUgPSB0eXBlb2YgRmlsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUZpbGU7XHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjb21wYXJlKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkgfHwgKHR5cGVvZiBhICE9IHR5cGVvZiBiKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoYSkubG9jYWxlQ29tcGFyZShiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGEgPSBhLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIGIgPSBiLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYSA+IGIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGEgPCBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKG9iajogYW55KTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSAmJiAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihvYmopKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2gocCA9PiBwcm9wcy5hZGQocCkpO1xyXG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChwID0+IHByb3BzLmFkZChwKSk7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlcXVhbHMoYTogYW55LCBiOiBhbnksIHZpc2l0ZWQ6IFNldDxhbnk+ID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZpc2l0ZWQgPSB2aXNpdGVkIHx8IG5ldyBTZXQoKTtcclxuICAgICAgICBpZiAodmlzaXRlZC5oYXMoYSkgJiYgdmlzaXRlZC5oYXMoYikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgcmV0dXJuIHRydWU7IC8vIE5hTiA9PT0gTmFOXHJcbiAgICAgICAgY29uc3QgYXQgPSB0eXBlb2YgYSwgYnQgPSB0eXBlb2YgYjtcclxuICAgICAgICBsZXQgbGVuZ3RoOiBudW1iZXIsIGtleTogYW55LCBrZXlTZXQ6IGFueTtcclxuICAgICAgICBpZiAoYXQgPT0gYnQgJiYgYXQgPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB2aXNpdGVkLmFkZChhKTtcclxuICAgICAgICAgICAgdmlzaXRlZC5hZGQoYik7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICgobGVuZ3RoID0gYS5sZW5ndGgpID09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgPSAwOyBrZXkgPCBsZW5ndGg7IGtleSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5U2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhKGtleSBpbiBrZXlTZXQpICYmIHR5cGVvZiBiW2tleV0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXZhbHVhdGUoZXhwcjogc3RyaW5nLCBjb250ZXh0OiBhbnkgPSB7fSwgcmVzOiBhbnkgPSB7fSk6IGFueSB7XHJcbiAgICAgICAgZXhwciA9IE9iamVjdC5rZXlzKGNvbnRleHQpLnJlZHVjZSgocmVzLCBrZXkpID0+IGB2YXIgJHtrZXl9ID0gdGhpc1snJHtrZXl9J107XFxuJHtyZXN9YCwgZXhwcik7XHJcbiAgICAgICAgY29uc3QgbGluZXMgPSBleHByLnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RMaW5lID0gXCJyZXR1cm4gXCIgKyBsaW5lcy5wb3AoKS5yZXBsYWNlKFwicmV0dXJuIFwiLCBcIlwiKTtcclxuICAgICAgICBsaW5lcy5wdXNoKGxhc3RMaW5lKTtcclxuICAgICAgICBleHByID0gbGluZXMuam9pbihcIlxcblwiKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgRnVuY3Rpb24oZXhwcikuY2FsbChjb250ZXh0KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJlcy5leGNlcHRpb24gPSBlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHBhcnNlIGV4cHJlc3Npb246ICR7ZS5tZXNzYWdlfWAsIGV4cHIsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMucmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFvYmogfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXRlcmF0ZShvYmo6IGFueSwgY2I6IEl0ZXJhdGVDYWxsYmFjayk6IHZvaWQge1xyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5czogYW55W10gPSBBcnJheS5pc0FycmF5KG9iaikgPyBBcnJheS5mcm9tKG9iai5rZXlzKCkpIDogT2JqZWN0LmtleXMob2JqKTtcclxuICAgICAgICBrZXlzLmZvckVhY2goXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYihvYmpba2V5XSwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55LCB0cmVlRmFsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAga2V5ID0ga2V5IHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IGN1cktleSA9IFwiXCI7XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBjdXJLZXkgKz0ga2V5cy5zaGlmdCgpO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgJiYgT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9ialtjdXJLZXldKSAmJiAodHlwZW9mIG9ialtjdXJLZXldID09PSBcIm9iamVjdFwiIHx8ICFrZXlzLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9ialtjdXJLZXldO1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ID0gXCJcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgha2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT0gXCJ1bmRlZmluZWRcIiA/IGtleS5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7Y3VyS2V5fSRgKSwgYHske2N1cktleX19YCkgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICBvYmogPSB0cmVlRmFsbGJhY2sgPyBvYmogfHwgZGVmYXVsdFZhbHVlIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ICs9IFwiLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSB3aGlsZSAoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1hcFRvUGF0aCh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgcmV0dXJuIHNvdXJjZTtcclxuICAgICAgICBjb25zdCBrZXk6IGFueSA9IHBhdGguc2hpZnQoKTtcclxuICAgICAgICBpZiAoa2V5ID09IFwiKlwiKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldCA6IFtdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRbaW5kZXhdLCBpdGVtLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpID8gdGFyZ2V0IDoge307XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBPYmplY3RVdGlscy5tYXBUb1BhdGgodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh0YXJnZXQpID8gbnVsbCA6IHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNBcnJheSA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KTtcclxuICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpIHx8IGlzQXJyYXkgPyB0YXJnZXQgOiB7fTtcclxuICAgICAgICB0YXJnZXRba2V5XSA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRba2V5XSwgc291cmNlLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oa2V5KSB8fCBpc0FycmF5ID8gdGFyZ2V0IDogT2JqZWN0LnZhbHVlcyh0YXJnZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmaWx0ZXIob2JqOiBhbnksIHByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlKTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIHByZWRpY2F0ZSwgbmV3IE1hcCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29weTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIG51bGwsIG5ldyBNYXAoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzc2lnbjxUPih0YXJnZXQ6IFQsIHNvdXJjZTogYW55LCBwcmVkaWNhdGU/OiBGaWx0ZXJQcmVkaWNhdGUpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXQsIHNvdXJjZSwgcHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUeXBlKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJcXFxccyhbYS16QS1aXSspXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaChyZWdleClbMV0udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRUeXBlKHZhbHVlKSA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGwgIT09IHZhbHVlICYmICFpc05hTih2YWx1ZSkgJiYgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHZhbHVlLmdldERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzQmxvYih2YWx1ZTogYW55KTogdmFsdWUgaXMgQmxvYiB7XHJcbiAgICAgICAgcmV0dXJuIChoYXNCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHwgKGhhc0ZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PSB0eXBlb2YodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBudW0gPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKChudW0gLSBudW0pICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU2V0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXQ8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNJbnRlcmZhY2Uob2JqLCBpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IE9iamVjdFV0aWxzLmlzQXJyYXkob2JqKSB8fCAhT2JqZWN0VXRpbHMuaXNPYmplY3QoaW50ZXJGYWNlT2JqZWN0KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpbnRlckZhY2VPYmplY3Rba2V5XSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKFwiKlwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhZChvYmo6IGFueSwgd2lkdGg6IG51bWJlciwgY2hyOiBzdHJpbmcgPSBcIjBcIik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgPyBvYmoudG9TdHJpbmcoKSA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPj0gd2lkdGggPyBzdHIgOiBuZXcgQXJyYXkod2lkdGggLSBzdHIubGVuZ3RoICsgMSkuam9pbihjaHIpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNvcHlSZWN1cnNpdmUodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55LCBwcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSwgY29waWVzOiBNYXA8YW55LCBhbnk+KTogYW55IHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUgfHwgZGVmYXVsdFByZWRpY2F0ZTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNQcmltaXRpdmUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0RhdGUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Jsb2Ioc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XHJcbiAgICAgICAgaWYgKCFjb3BpZXMuaGFzKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpID8gQXJyYXkuZnJvbSh0YXJnZXQpIDogW107XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJlZGljYXRlKGl0ZW0sIGluZGV4LCB0YXJnZXQsIHNvdXJjZSkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IGluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaW5kZXhdID0gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXRbaW5kZXhdLCBpdGVtLCBwcmVkaWNhdGUsIGNvcGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoc291cmNlW2tleV0sIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgcHJlZGljYXRlLCBjb3BpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvcGllcy5nZXQoc291cmNlKTtcclxuICAgIH1cclxufVxyXG4iXX0=