@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.49

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 (69) hide show
  1. package/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
  2. package/esm2020/lib/components/loader/loader.component.mjs +4 -4
  3. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
  4. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +7 -5
  5. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +16 -11
  6. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
  7. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
  8. package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
  9. package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
  10. package/esm2020/lib/helpers.service.mjs +2 -2
  11. package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
  12. package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
  13. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
  14. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
  15. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
  16. package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
  17. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
  18. package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
  19. package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
  20. package/esm2020/lib/services/base-tab.service.mjs +4 -4
  21. package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
  22. package/esm2020/lib/services/content.service.mjs +4 -4
  23. package/esm2020/lib/services/filter.service.mjs +4 -4
  24. package/esm2020/lib/services/intervention.service.mjs +4 -4
  25. package/esm2020/lib/services/locale.service.mjs +4 -4
  26. package/esm2020/lib/services/matterport-import.service.mjs +4 -4
  27. package/esm2020/lib/services/matterport.service.mjs +4 -4
  28. package/esm2020/lib/services/models/affectation.service.mjs +4 -4
  29. package/esm2020/lib/services/models/base-object.service.mjs +4 -4
  30. package/esm2020/lib/services/models/capture.service.mjs +4 -4
  31. package/esm2020/lib/services/models/comment.service.mjs +4 -4
  32. package/esm2020/lib/services/models/domain.service.mjs +4 -4
  33. package/esm2020/lib/services/models/equipment.service.mjs +4 -4
  34. package/esm2020/lib/services/models/event.service.mjs +4 -4
  35. package/esm2020/lib/services/models/feature.service.mjs +4 -4
  36. package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
  37. package/esm2020/lib/services/models/layer.service.mjs +4 -4
  38. package/esm2020/lib/services/models/measurement.service.mjs +4 -4
  39. package/esm2020/lib/services/models/mission.service.mjs +4 -4
  40. package/esm2020/lib/services/models/navigation.service.mjs +4 -4
  41. package/esm2020/lib/services/models/node.service.mjs +4 -4
  42. package/esm2020/lib/services/models/object3D.service.mjs +4 -4
  43. package/esm2020/lib/services/models/operation.service.mjs +4 -4
  44. package/esm2020/lib/services/models/organisation.service.mjs +4 -4
  45. package/esm2020/lib/services/models/plan.service.mjs +4 -4
  46. package/esm2020/lib/services/models/poi.service.mjs +4 -4
  47. package/esm2020/lib/services/models/profile.service.mjs +4 -4
  48. package/esm2020/lib/services/models/property.service.mjs +4 -4
  49. package/esm2020/lib/services/models/space.service.mjs +4 -4
  50. package/esm2020/lib/services/models/template.service.mjs +4 -4
  51. package/esm2020/lib/services/models/ticket.service.mjs +4 -4
  52. package/esm2020/lib/services/models/visit.service.mjs +4 -4
  53. package/esm2020/lib/services/models/zone.service.mjs +4 -4
  54. package/esm2020/lib/services/navigator.service.mjs +4 -4
  55. package/esm2020/lib/services/search.service.mjs +4 -4
  56. package/esm2020/lib/services/support.service.mjs +4 -4
  57. package/esm2020/lib/services/tag.service.mjs +4 -4
  58. package/esm2020/lib/services/user.service.mjs +4 -4
  59. package/esm2020/lib/services/validators.service.mjs +4 -4
  60. package/esm2020/lib/services/viewer.service.mjs +4 -4
  61. package/esm2020/lib/services/zoneChange.service.mjs +4 -4
  62. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +192 -186
  63. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  64. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +192 -186
  65. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  66. package/lib/components/menu-bar/menu-bar.component.d.ts +1 -0
  67. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +4 -1
  68. package/package.json +13 -13
  69. package/src/assets/vs-app.json +67 -0
@@ -18,12 +18,12 @@ export class UsernameFromIdPipe {
18
18
  }
19
19
  }
20
20
  UsernameFromIdPipe.cache = {};
21
- UsernameFromIdPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UsernameFromIdPipe, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Pipe });
22
- UsernameFromIdPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UsernameFromIdPipe, name: "usernameFromId" });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UsernameFromIdPipe, decorators: [{
21
+ UsernameFromIdPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UsernameFromIdPipe, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Pipe });
22
+ UsernameFromIdPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UsernameFromIdPipe, name: "usernameFromId" });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UsernameFromIdPipe, decorators: [{
24
24
  type: Pipe,
25
25
  args: [{
26
26
  name: "usernameFromId",
27
27
  }]
28
28
  }], ctorParameters: function () { return [{ type: i1.BaseUserService }]; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUtZnJvbS1pZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9waXBlcy91c2VybmFtZS1mcm9tLWlkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU1wRCxNQUFNLE9BQU8sa0JBQWtCO0lBRzNCLFlBQW9CLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtJQUFHLENBQUM7SUFFcEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFjO1FBQzFCLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNoRCxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxhQUFhO1FBQ2Isa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pELE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7O0FBZE0sd0JBQUssR0FBRyxFQUFFLENBQUM7K0dBRFQsa0JBQWtCOzZHQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFIOUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInVzZXJuYW1lRnJvbUlkXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VybmFtZUZyb21JZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHN0YXRpYyBjYWNoZSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSkge31cclxuXHJcbiAgICBhc3luYyB0cmFuc2Zvcm0odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChVc2VybmFtZUZyb21JZFBpcGUuY2FjaGVbdXNlcklkXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKFVzZXJuYW1lRnJvbUlkUGlwZS5jYWNoZVt1c2VySWRdKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJGcm9tVXNlcklEKHVzZXJJZCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIFVzZXJuYW1lRnJvbUlkUGlwZS5jYWNoZVt1c2VySWRdID0gYCR7dXNlci5kaXNwbGF5TmFtZX1gO1xyXG4gICAgICAgIHJldHVybiBVc2VybmFtZUZyb21JZFBpcGUuY2FjaGVbdXNlcklkXTtcclxuICAgIH1cclxufVxyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUtZnJvbS1pZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9waXBlcy91c2VybmFtZS1mcm9tLWlkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU1wRCxNQUFNLE9BQU8sa0JBQWtCO0lBRzNCLFlBQW9CLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtJQUFHLENBQUM7SUFFcEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFjO1FBQzFCLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNoRCxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxhQUFhO1FBQ2Isa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pELE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7O0FBZE0sd0JBQUssR0FBRyxFQUFFLENBQUM7Z0hBRFQsa0JBQWtCOzhHQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFIOUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInVzZXJuYW1lRnJvbUlkXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VybmFtZUZyb21JZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHN0YXRpYyBjYWNoZSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSkge31cclxuXHJcbiAgICBhc3luYyB0cmFuc2Zvcm0odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChVc2VybmFtZUZyb21JZFBpcGUuY2FjaGVbdXNlcklkXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKFVzZXJuYW1lRnJvbUlkUGlwZS5jYWNoZVt1c2VySWRdKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJGcm9tVXNlcklEKHVzZXJJZCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIFVzZXJuYW1lRnJvbUlkUGlwZS5jYWNoZVt1c2VySWRdID0gYCR7dXNlci5kaXNwbGF5TmFtZX1gO1xyXG4gICAgICAgIHJldHVybiBVc2VybmFtZUZyb21JZFBpcGUuY2FjaGVbdXNlcklkXTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -61,12 +61,12 @@ export class AmplifyCacheService {
61
61
  return Cache.getAllKeys();
62
62
  }
63
63
  }
64
- AmplifyCacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AmplifyCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
65
- AmplifyCacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AmplifyCacheService, providedIn: "root" });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AmplifyCacheService, decorators: [{
64
+ AmplifyCacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AmplifyCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
65
+ AmplifyCacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AmplifyCacheService, providedIn: "root" });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AmplifyCacheService, decorators: [{
67
67
  type: Injectable,
68
68
  args: [{
69
69
  providedIn: "root",
70
70
  }]
71
71
  }], ctorParameters: function () { return []; } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFcEMsTUFBTSxDQUFOLElBQVksU0FFWDtBQUZELFdBQVksU0FBUztJQUNqQixzREFBeUMsQ0FBQTtBQUM3QyxDQUFDLEVBRlcsU0FBUyxLQUFULFNBQVMsUUFFcEI7QUFJRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCO1FBQ0ksTUFBTSxNQUFNLEdBQUc7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVc7U0FDcEMsQ0FBQztRQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIscUJBQXFCO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQ04sR0FBVyxFQUNYLEtBQVUsRUFDVixVQUFrQixJQUFJLEVBQ3RCLFdBQW1CLENBQUM7UUFFcEIsTUFBTSxPQUFPLEdBQUc7WUFDWixRQUFRO1lBQ1IsT0FBTztTQUNWLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsR0FBVztRQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDTixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDTixPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDOztnSEEvRFEsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2FjaGUgfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuXHJcbmV4cG9ydCBlbnVtIENhY2hlS2V5cyB7XHJcbiAgICBJTlNUUlVDVElPTlNfU0hPV04gPSBcImluc3RydWN0aW9uc19zaG93blwiLFxyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW1wbGlmeUNhY2hlU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgICAgICAgIGl0ZW1NYXhTaXplOiAzMDAwLCAvLyAzMDAwIGJ5dGVzXHJcbiAgICAgICAgICAgIGRlZmF1bHRUVEw6IDM2MDAwMDAwLCAvLyBvbmUgaG91clxyXG4gICAgICAgIH07XHJcbiAgICAgICAgQ2FjaGUuY29uZmlndXJlKGNvbmZpZyk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxLZXlzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQdXRzIGl0ZW0gaW4gY2FjaGUgdW5kZXIgYSBrZXlcclxuICAgICAqIEBwYXJhbSBrZXkgOiBzdHJpbmcuIEtleSBmb3IgbG9va3VwLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIDogSWVtIHRvIHB1dCAobnVtYmVyLCBzdHJpbmcsIGJvb2xlYW4sIGFycmF5IG9yIG9iamVjdClcclxuICAgICAqIEBwYXJhbSBleHBpcmVzIDogbnVtYmVyLiBUaW1lIGluIGZ1dHVyZSBpbiBtaWxsaXNlY29uZHMgRGF0ZS5nZXRUaW1lKClcclxuICAgICAqIEBwYXJhbSBwcmlvcml0eSA6IG51bWJlciBmcm9tIDAgdG8gNS4gdGhlIGNhY2hlZCBpdGVtIHdpdGggdGhlIGhpZ2hlciBudW1iZXIgd2lsbCBiZSBleHBpcmVkIGZpcnN0LlxyXG4gICAgICovXHJcbiAgICBwdXRJbkNhY2hlKFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIHZhbHVlOiBhbnksXHJcbiAgICAgICAgZXhwaXJlczogbnVtYmVyID0gbnVsbCxcclxuICAgICAgICBwcmlvcml0eTogbnVtYmVyID0gNSxcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHByaW9yaXR5LFxyXG4gICAgICAgICAgICBleHBpcmVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFleHBpcmVzKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLmV4cGlyZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIENhY2hlLnNldEl0ZW0oa2V5LCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYW4gaXRlbSBmcm9tIHRoZSBjYWNoZS4gSXQgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgaXRlbSBkb2VzbuKAmXQgZXhpc3Qgb3IgaXQgaGFzIGV4cGlyZWQuXHJcbiAgICAgKiBAcGFyYW0ga2V5IHN0cmluZy4gTG9va3VwIGtleS5cclxuICAgICAqIEByZXR1cm5zIGFueSBvciBudWxsIGlmIG5vdGhpbmcgZm91bmQuXHJcbiAgICAgKi9cclxuICAgIGdldEZyb21DYWNoZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIENhY2hlLmdldEl0ZW0oa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgaXRlbSBmcm9tIGNhY2hlLlxyXG4gICAgICogQHBhcmFtIGtleSBzdHJpbmcuIEtleSB0byByZW1vdmUuXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUZyb21DYWNoZShrZXk6IHN0cmluZykge1xyXG4gICAgICAgIENhY2hlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgY2FjaGUuXHJcbiAgICAgKi9cclxuICAgIGNsZWFyQ2FjaGUoKSB7XHJcbiAgICAgICAgQ2FjaGUuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWxsIG9mIHRoZSBrZXlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUuXHJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdbXVxyXG4gICAgICovXHJcbiAgICBnZXRBbGxLZXlzKCk6IHN0cmluZ1tdIHwgUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHJldHVybiBDYWNoZS5nZXRBbGxLZXlzKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFcEMsTUFBTSxDQUFOLElBQVksU0FFWDtBQUZELFdBQVksU0FBUztJQUNqQixzREFBeUMsQ0FBQTtBQUM3QyxDQUFDLEVBRlcsU0FBUyxLQUFULFNBQVMsUUFFcEI7QUFJRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCO1FBQ0ksTUFBTSxNQUFNLEdBQUc7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVc7U0FDcEMsQ0FBQztRQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIscUJBQXFCO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQ04sR0FBVyxFQUNYLEtBQVUsRUFDVixVQUFrQixJQUFJLEVBQ3RCLFdBQW1CLENBQUM7UUFFcEIsTUFBTSxPQUFPLEdBQUc7WUFDWixRQUFRO1lBQ1IsT0FBTztTQUNWLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsR0FBVztRQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDTixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDTixPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDOztpSEEvRFEsbUJBQW1CO3FIQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs0RkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2FjaGUgfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuXHJcbmV4cG9ydCBlbnVtIENhY2hlS2V5cyB7XHJcbiAgICBJTlNUUlVDVElPTlNfU0hPV04gPSBcImluc3RydWN0aW9uc19zaG93blwiLFxyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW1wbGlmeUNhY2hlU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgICAgICAgIGl0ZW1NYXhTaXplOiAzMDAwLCAvLyAzMDAwIGJ5dGVzXHJcbiAgICAgICAgICAgIGRlZmF1bHRUVEw6IDM2MDAwMDAwLCAvLyBvbmUgaG91clxyXG4gICAgICAgIH07XHJcbiAgICAgICAgQ2FjaGUuY29uZmlndXJlKGNvbmZpZyk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxLZXlzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQdXRzIGl0ZW0gaW4gY2FjaGUgdW5kZXIgYSBrZXlcclxuICAgICAqIEBwYXJhbSBrZXkgOiBzdHJpbmcuIEtleSBmb3IgbG9va3VwLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIDogSWVtIHRvIHB1dCAobnVtYmVyLCBzdHJpbmcsIGJvb2xlYW4sIGFycmF5IG9yIG9iamVjdClcclxuICAgICAqIEBwYXJhbSBleHBpcmVzIDogbnVtYmVyLiBUaW1lIGluIGZ1dHVyZSBpbiBtaWxsaXNlY29uZHMgRGF0ZS5nZXRUaW1lKClcclxuICAgICAqIEBwYXJhbSBwcmlvcml0eSA6IG51bWJlciBmcm9tIDAgdG8gNS4gdGhlIGNhY2hlZCBpdGVtIHdpdGggdGhlIGhpZ2hlciBudW1iZXIgd2lsbCBiZSBleHBpcmVkIGZpcnN0LlxyXG4gICAgICovXHJcbiAgICBwdXRJbkNhY2hlKFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIHZhbHVlOiBhbnksXHJcbiAgICAgICAgZXhwaXJlczogbnVtYmVyID0gbnVsbCxcclxuICAgICAgICBwcmlvcml0eTogbnVtYmVyID0gNSxcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHByaW9yaXR5LFxyXG4gICAgICAgICAgICBleHBpcmVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFleHBpcmVzKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLmV4cGlyZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIENhY2hlLnNldEl0ZW0oa2V5LCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYW4gaXRlbSBmcm9tIHRoZSBjYWNoZS4gSXQgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgaXRlbSBkb2VzbuKAmXQgZXhpc3Qgb3IgaXQgaGFzIGV4cGlyZWQuXHJcbiAgICAgKiBAcGFyYW0ga2V5IHN0cmluZy4gTG9va3VwIGtleS5cclxuICAgICAqIEByZXR1cm5zIGFueSBvciBudWxsIGlmIG5vdGhpbmcgZm91bmQuXHJcbiAgICAgKi9cclxuICAgIGdldEZyb21DYWNoZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIENhY2hlLmdldEl0ZW0oa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgaXRlbSBmcm9tIGNhY2hlLlxyXG4gICAgICogQHBhcmFtIGtleSBzdHJpbmcuIEtleSB0byByZW1vdmUuXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUZyb21DYWNoZShrZXk6IHN0cmluZykge1xyXG4gICAgICAgIENhY2hlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgY2FjaGUuXHJcbiAgICAgKi9cclxuICAgIGNsZWFyQ2FjaGUoKSB7XHJcbiAgICAgICAgQ2FjaGUuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWxsIG9mIHRoZSBrZXlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUuXHJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdbXVxyXG4gICAgICovXHJcbiAgICBnZXRBbGxLZXlzKCk6IHN0cmluZ1tdIHwgUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHJldHVybiBDYWNoZS5nZXRBbGxLZXlzKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -13,12 +13,12 @@ export class BaseLateralTabService {
13
13
  return this.activeTab;
14
14
  }
15
15
  }
16
- BaseLateralTabService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseLateralTabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
- BaseLateralTabService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseLateralTabService, providedIn: "root" });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseLateralTabService, decorators: [{
16
+ BaseLateralTabService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseLateralTabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ BaseLateralTabService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseLateralTabService, providedIn: "root" });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseLateralTabService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: "root",
22
22
  }]
23
23
  }], ctorParameters: function () { return []; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvYmFzZS10YWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBSzlCO1FBSkEsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0QixjQUFTLEdBQUcsSUFBSSxDQUFDO0lBRUQsQ0FBQztJQUVqQixlQUFlLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNULDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQzs7a0hBZFEscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VMYXRlcmFsVGFiU2VydmljZSB7XHJcbiAgICBhY3RpdmVUYWIgPSBcInRpY2tldHNcIjtcclxuXHJcbiAgICBmaXJzdExvYWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgc3RvcmVUYWJIaXN0b3J5KHRhYjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFiSGlzdG9yeSgpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCAnZ2V0VGFiSGlzdG9yeScgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICB9XHJcbn1cclxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvYmFzZS10YWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBSzlCO1FBSkEsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0QixjQUFTLEdBQUcsSUFBSSxDQUFDO0lBRUQsQ0FBQztJQUVqQixlQUFlLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNULDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQzs7bUhBZFEscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VMYXRlcmFsVGFiU2VydmljZSB7XHJcbiAgICBhY3RpdmVUYWIgPSBcInRpY2tldHNcIjtcclxuXHJcbiAgICBmaXJzdExvYWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgc3RvcmVUYWJIaXN0b3J5KHRhYjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFiSGlzdG9yeSgpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCAnZ2V0VGFiSGlzdG9yeScgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWI7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -7,12 +7,12 @@ export class BaseVisibilityService {
7
7
  this.isChangePositionVisible = new Subject();
8
8
  }
9
9
  }
10
- BaseVisibilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
- BaseVisibilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseVisibilityService, providedIn: 'root' });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: BaseVisibilityService, decorators: [{
10
+ BaseVisibilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ BaseVisibilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseVisibilityService, providedIn: 'root' });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseVisibilityService, decorators: [{
13
13
  type: Injectable,
14
14
  args: [{
15
15
  providedIn: 'root',
16
16
  }]
17
17
  }], ctorParameters: function () { return []; } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvYmFzZVZpc2liaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEM7UUFKQSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFdkMsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVsQyxDQUFDOztrSEFMTCxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VWaXNpYmlsaXR5U2VydmljZSB7XHJcbiAgZGV0YWlsU2hvd2luZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvYmFzZVZpc2liaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEM7UUFKQSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFdkMsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVsQyxDQUFDOzttSEFMTCxxQkFBcUI7dUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VWaXNpYmlsaXR5U2VydmljZSB7XHJcbiAgZGV0YWlsU2hvd2luZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcbiJdfQ==
@@ -124,12 +124,12 @@ export class ContentService {
124
124
  }
125
125
  }
126
126
  }
127
- ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
128
- ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, providedIn: "root" });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContentService, decorators: [{
127
+ ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContentService, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.CommentService }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContentService, providedIn: "root" });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContentService, decorators: [{
130
130
  type: Injectable,
131
131
  args: [{
132
132
  providedIn: "root",
133
133
  }]
134
134
  }], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.CommentService }]; } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7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QUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7MkdBakpRLGNBQWM7K0dBQWQsY0FBYyxjQUZYLE1BQU07MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1lZGlhQ29udGVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9mZWF0dXJlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xyXG4gICAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xyXG5cclxuICAgIGNsb3NlTW9kYWwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIG5leHRTbGlkZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XHJcblxyXG4gICAgcHJlc2VudFZpZGVvTW9kYWwodmlkZW86IE1lZGlhQ29udGVudCwgdmlkZW9Db21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcclxuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnQoYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvTWVkaWFDb250ZW50ID0ge1xyXG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICB0aXRsZTogYXVkaW9Db21tZW50LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW9Db21tZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGF1ZGlvQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5hdWRpbyA9IGF1ZGlvTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcmVzZW50SW1hZ2VDYXJvdXNlbE1vZGFsKGZlYXR1cmVJRDogc3RyaW5nLCBjYXJvdXNlbENvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsIFxyXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLCBzZWxlY3RlZEltYWdlSW5kZXg9JzAnKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXHJcbiAgICAgICAgICAgIGNhcm91c2VsQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9IHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRTbGlkZS5uZXh0KHNsaWRlLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudFBkZk1vZGFsKHVybDogc3RyaW5nLCBwZGZDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHBkZkNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UudXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudE11c2V1bUltYWdlQ2Fyb3VzZWxNb2RhbChcclxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxyXG4gICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZyxcclxuICAgICAgICBmcm9tVGFnID0gdHJ1ZSxcclxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcclxuICAgICAgICBpbWFnZXM6IGFueVtdID0gbnVsbCxcclxuICAgICAgICBjb21tZW50SW1hZ2VJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNhcm91c2VsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmltYWdlcyA9IGltYWdlcztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmNvbW1lbnRJRCA9IGNvbW1lbnRJbWFnZUlEO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAoc2xpZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0b29nbGVBdWRpb0VsZW1lbnQodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEF1ZGlvIHx8IHRoaXMuY3VycmVudEF1ZGlvLnNyYyAhPT0gdXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBdWRpby5kdXJhdGlvbiA+IDAgJiYgIXRoaXMuY3VycmVudEF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RnVsbHNjcmVlbkNhcm91c2VsRm9yRmVhdHVyZShmZWF0dXJlSUQ6IHN0cmluZywgZnJvbVRhZyA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGZyb21UYWcgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXRDbG9zZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzKFwiZm9yY2VkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5uYXZpZ2F0ZVRvU2xpZGUoc2xpZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRL0IsTUFBTSxPQUFPLGNBQWM7SUFTdkIsWUFBbUIsWUFBc0IsRUFBVSxNQUFjLEVBQVUsY0FBOEI7UUFBdEYsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnpHLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBRTBFLENBQUM7SUFFN0csaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxjQUFtQixFQUFFLGdCQUF3QjtRQUNoRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN6RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7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QUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7NEdBakpRLGNBQWM7Z0hBQWQsY0FBYyxjQUZYLE1BQU07NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1lZGlhQ29udGVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9mZWF0dXJlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xyXG4gICAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gICAgY3VycmVudEF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50O1xyXG5cclxuICAgIGNsb3NlTW9kYWwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIG5leHRTbGlkZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UpIHt9XHJcblxyXG4gICAgcHJlc2VudFZpZGVvTW9kYWwodmlkZW86IE1lZGlhQ29udGVudCwgdmlkZW9Db21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odmlkZW9Db21wb25lbnQsIHtcclxuICAgICAgICAgICAgbW9kYWxEaWFsb2dDbGFzczogbW9kYWxEaWFsb2dDbGFzcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnZpZGVvID0gdmlkZW87XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcmVzZW50QXVkaW9Nb2RhbChhdWRpb0NvbW1lbnRJRDogc3RyaW5nLCBhdWRpb0NvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnQoYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvTWVkaWFDb250ZW50ID0ge1xyXG4gICAgICAgICAgICBwYXRoOiBhdWRpb0NvbW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICB0aXRsZTogYXVkaW9Db21tZW50LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW9Db21tZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIH0gYXMgTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGF1ZGlvQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5hdWRpbyA9IGF1ZGlvTWVkaWFDb250ZW50O1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTsgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcmVzZW50SW1hZ2VDYXJvdXNlbE1vZGFsKGZlYXR1cmVJRDogc3RyaW5nLCBjYXJvdXNlbENvbXBvbmVudDogYW55LCBtb2RhbERpYWxvZ0NsYXNzOiBzdHJpbmcsIFxyXG4gICAgICAgIGZyb21UYWcgPSB0cnVlLCBzZWxlY3RlZEltYWdlSW5kZXg9JzAnKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXHJcbiAgICAgICAgICAgIGNhcm91c2VsQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mZWF0dXJlSUQgPSBmZWF0dXJlSUQ7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9IHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmRpc21pc3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0Q2xvc2VNb2RhbCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2Uuc2xpZGVDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHNsaWRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRTbGlkZS5uZXh0KHNsaWRlLmN1cnJlbnQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudFBkZk1vZGFsKHVybDogc3RyaW5nLCBwZGZDb21wb25lbnQ6IGFueSwgbW9kYWxEaWFsb2dDbGFzczogc3RyaW5nLCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHBkZkNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBtb2RhbERpYWxvZ0NsYXNzOiBtb2RhbERpYWxvZ0NsYXNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuY29tcG9uZW50SW5zdGFuY2UudXJsID0gdXJsO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlc2VudE11c2V1bUltYWdlQ2Fyb3VzZWxNb2RhbChcclxuICAgICAgICBjYXJvdXNlbENvbXBvbmVudDogYW55LFxyXG4gICAgICAgIG1vZGFsRGlhbG9nQ2xhc3M6IHN0cmluZyxcclxuICAgICAgICBmcm9tVGFnID0gdHJ1ZSxcclxuICAgICAgICBzZWxlY3RlZEltYWdlSW5kZXggPSBcIjBcIixcclxuICAgICAgICBpbWFnZXM6IGFueVtdID0gbnVsbCxcclxuICAgICAgICBjb21tZW50SW1hZ2VJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNhcm91c2VsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIG1vZGFsRGlhbG9nQ2xhc3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5mcm9tVGFnID0gZnJvbVRhZztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkSW1hZ2VJbmRleCA9XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2VJbmRleDtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmltYWdlcyA9IGltYWdlcztcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNvbXBvbmVudEluc3RhbmNlLmNvbW1lbnRJRCA9IGNvbW1lbnRJbWFnZUlEO1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UuZGlzbWlzc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlTW9kYWwoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1vZGFsUmVmZXJlbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZU1vZGFsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5zbGlkZUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAoc2xpZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dFNsaWRlLm5leHQoc2xpZGUuY3VycmVudCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0b29nbGVBdWRpb0VsZW1lbnQodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEF1ZGlvIHx8IHRoaXMuY3VycmVudEF1ZGlvLnNyYyAhPT0gdXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvID0gbmV3IEF1ZGlvKHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBdWRpby5kdXJhdGlvbiA+IDAgJiYgIXRoaXMuY3VycmVudEF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAvLyBpdCBpcyBwbGF5aW5nLCB3ZSBzdG9wIGl0XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXVkaW8ucGxheSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RnVsbHNjcmVlbkNhcm91c2VsRm9yRmVhdHVyZShmZWF0dXJlSUQ6IHN0cmluZywgZnJvbVRhZyA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtgL2Z1bGxzY3JlZW4vJHtmZWF0dXJlSUR9YF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGZyb21UYWcgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXRDbG9zZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlQ2xvc2VDdXJyZW50TW9kYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5kaXNtaXNzKFwiZm9yY2VkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtb3ZlVG9TbGlkZShzbGlkZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZmVyZW5jZS5jb21wb25lbnRJbnN0YW5jZS5uYXZpZ2F0ZVRvU2xpZGUoc2xpZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -588,12 +588,12 @@ export class FilterService {
588
588
  return finalFeatures;
589
589
  }
590
590
  }
591
- FilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FilterService, deps: [{ token: i1.BaseUserService }, { token: i2.ZoneService }, { token: i3.PoiService }], target: i0.ɵɵFactoryTarget.Injectable });
592
- FilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FilterService, providedIn: "root" });
593
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FilterService, decorators: [{
591
+ FilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FilterService, deps: [{ token: i1.BaseUserService }, { token: i2.ZoneService }, { token: i3.PoiService }], target: i0.ɵɵFactoryTarget.Injectable });
592
+ FilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FilterService, providedIn: "root" });
593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FilterService, decorators: [{
594
594
  type: Injectable,
595
595
  args: [{
596
596
  providedIn: "root",
597
597
  }]
598
598
  }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i2.ZoneService }, { type: i3.PoiService }]; } });
599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMsaUNBQWlDO0FBQ2pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSSxPQUFPLEVBT0wsT0FBTyxFQUNQLGFBQWEsRUFDYixVQUFVLEVBT1gsTUFBTSxrQkFBa0IsQ0FBQztBQVkxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFSekMsSUFBSyxVQU9KO0FBUEQsV0FBSyxVQUFVO0lBQ1gsK0JBQWlCLENBQUE7SUFDakIsNkJBQWUsQ0FBQTtJQUNmLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBS0QsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDWSxXQUE0QixFQUM1QixXQUF3QixFQUN4QixVQUFzQjtRQUZ0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVAxQixxQkFBZ0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVF2RCxDQUFDO0lBRUoscUJBQXFCLENBQUMsZUFBeUIsRUFBRSxNQUFjO1FBQzNELE9BQU8sZUFBZSxDQUFDLE1B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Q1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZ2V0TGV2ZWxzQmVsb3csIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zLCBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zLCBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQgfSBmcm9tIFwiLi4vaGVscGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgWm9uZSxcclxuICBFcXVpcG1lbnQsXHJcbiAgTGV2ZWxTdGF0dXMsXHJcbiAgTWVhc3VyZW1lbnQsXHJcbiAgTWlzc2lvbixcclxuICBPcmdhbmlzYXRpb24sXHJcbiAgUG9pVHlwZSxcclxuICBQcm9maWxlRW50aXR5LFxyXG4gIFJvbGVTdGF0dXMsXHJcbiAgU3BhY2UsXHJcbiAgVGlja2V0LFxyXG4gIERiT2JqZWN0VHlwZSxcclxuICBGZWF0dXJlLFxyXG4gIENvbW1lbnQsXHJcbiAgVmlzaXRUZW1wbGF0ZSwgT2JqZWN0M0RcclxufSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3BvaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3pvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi91c2VyLnNlcnZpY2VcIjtcclxuZW51bSBGaWx0ZXJUeXBlIHtcclxuICAgIERPTUFJTiA9IFwiRE9NQUlOXCIsXHJcbiAgICBMRVZFTCA9IFwiTEVWRUxcIixcclxuICAgIFJPTEUgPSBcIlJPTEVcIixcclxuICAgIFpPTkUgPSBcIlpPTkVcIixcclxuICAgIFNQQUNFID0gXCJTUEFDRVwiLFxyXG4gICAgSEFTSFRBRyA9IFwiSEFTSFRBR1wiLFxyXG59XHJcbmltcG9ydCBsZXZlbnNodGVpbiBmcm9tICdqcy1sZXZlbnNodGVpbic7XHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHVwZGF0ZURhdGVGaWx0ZXI6IFN1YmplY3Q8RGF0ZVtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgcHVibGljIGN1cnJlbnREYXRlRmlsdGVyOiBEYXRlW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzQnlEb21haW4odGlja2V0c1RvRmlsdGVyOiBUaWNrZXRbXSwgZG9tYWluOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGlja2V0c1RvRmlsdGVyLmZpbHRlcigodGljKSA9PiB0aWMuZG9tYWluSUQgPT09IGRvbWFpbik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0J5TGV2ZWwob2JqZWN0c1RvRmlsdGVyOiBhbnlbXSwgbGV2ZWw6IExldmVsU3RhdHVzKTogYW55W10ge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVMZXZlbHMgPSBnZXRMZXZlbHNCZWxvdyhsZXZlbCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBvYmplY3RzVG9GaWx0ZXIuZmlsdGVyKCh0aWMpID0+XHJcbiAgICAgICAgICAgIHZpc2libGVMZXZlbHMuaW5jbHVkZXModGljLmxldmVsKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzRm9yTWlzc2lvbihcclxuICAgICAgICB0aWNrZXRzVG9GaWx0ZXI6IFRpY2tldFtdLFxyXG4gICAgICAgIG1pc3Npb246IE1pc3Npb24sXHJcbiAgICApOiBUaWNrZXRbXSB7XHJcbiAgICAgICAgY29uc3QgbWFuYWdlclJvbGVzOiBSb2xlU3RhdHVzW10gPSBbXHJcbiAgICAgICAgICAgIFJvbGVTdGF0dXMuTUFOQUdFUixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5PV05FUixcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICghbWFuYWdlclJvbGVzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSkpIHtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTRVJWSUNFIGNhbiBzZWUgdGlja2V0cyB0byB3aGljaCBoZSBpcyBhc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdGlja2V0c0Fzc2lnbmVkID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGlja2V0c1RvRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQuYXNzaWduZWVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIHQuYXNzaWduZWVzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNzaWdubWVudC5taXNzaW9uSUQgPT09IG1pc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzQXNzaWduZWQucHVzaCh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWNrZXRzQXNzaWduZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gT0NDVVBBTlQgYW5kIFZJU0lUT1IgY2FuIHNlZSBvbmx5IHRpY2tldHMgdGhhdCB0aGV5IGNyZWF0ZWRcclxuICAgICAgICAgICAgcmV0dXJuIHRpY2tldHNUb0ZpbHRlci5maWx0ZXIoKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpY2tldC5vd25lck1pc3Npb25JRCA9PT0gbWlzc2lvbi5pZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aWNrZXRzVG9GaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyc0ZvclJvbGUocm9sZTogUm9sZVN0YXR1cyk6IEZpbHRlclR5cGVbXSB7XHJcbiAgICAgICAgc3dpdGNoIChyb2xlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5BRE1JTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5NQU5BR0VSOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLlpPTkUsIEZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuT1dORVI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5TRVJWSUNFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5MRVZFTCxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkRPTUFJTixcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlJPTEUsIC8vIHRoYXQgaXMgdGhlIG1vc3Qgc2V2ZXJlIGZpbHRlclxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLk9DQ1VQQU5UOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ET01BSU4sXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ST0xFLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuTEVWRUwsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5IQVNIVEFHLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLlZJU0lUT1I6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuWk9ORSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkxFVkVMLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuRE9NQUlOLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuUk9MRSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkhBU0hUQUcsXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTCwgRmlsdGVyVHlwZS5IQVNIVEFHXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIG9iamVjdHM6IE9iamVjdDNEW10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxPYmplY3QzRFtdPiB7XHJcbiAgICAgICAgY29uc3QgZmluYWxPYmplY3QzRHM6IE9iamVjdDNEW10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IE9iamVjdDNEW10gPSBvYmplY3RzO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZC5pbmNsdWRlcyhvYmopICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyhvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0M0RzLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsT2JqZWN0M0RzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlclRpY2tldHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgdGlja2V0czogVGlja2V0W10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsVGlja2V0czogVGlja2V0W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgcm9sZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgbGV0IGxldmVsRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0uZG9tYWlucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbnMgPSBbLi4uZG9tYWlucywgLi4ubS5kb21haW5zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsRG9tYWluc0ZpbHRlcmVkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBkb21haW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RG9tRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyVGlja2V0c0J5RG9tYWluKHRpY2tldHMsIGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9tYWluc0ZpbHRlcmVkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbERvbWFpbnNGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50RG9tRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkID0gYWxsRG9tYWluc0ZpbHRlcmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlJPTEUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGVNaXNzaW9uID0gY3VycmVudFNwYWNlTWlzc2lvbnMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiBtLnJvbGUgPT09IGhpZ2hlc3RSb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQgPSB0aGlzLmZpbHRlclRpY2tldHNGb3JNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RSb2xlTWlzc2lvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8ga2VlcCBvbmx5IHRpY2tldHMgcHJlc2VudCBpbiBhbGwgZmlsdGVyZWQgYXJyYXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkb21GaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyb2xlRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobGV2ZWxGaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh6b25lRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWMgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXModGljKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFRpY2tldHMucHVzaCh0aWMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhmaW5hbFRpY2tldHMpO1xyXG4gICAgICAgIHJldHVybiBmaW5hbFRpY2tldHM7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKFxyXG4gICAgICAgIG5leHQ/OiAodmFsdWU6IGFueSkgPT4gdm9pZCxcclxuICAgICAgICBlcnJvcj86IChlcnJvcjogYW55KSA9PiB2b2lkLFxyXG4gICAgICAgIGNvbXBsZXRlPzogKCkgPT4gdm9pZCxcclxuICAgICk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgY29uc3QgcyA9IHRoaXMudXBkYXRlRGF0ZUZpbHRlci5zdWJzY3JpYmUobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH1cclxuXHJcbiAgICBkYXRlRmlsdGVyVXBkYXRlZChkYXRlUmFuZ2U6IERhdGVbXSB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZUZpbHRlci5uZXh0KGRhdGVSYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0ZvckRhdGVSYW5nZShvYmplY3RzOiBhbnlbXSwgZGF0ZVJhbmdlOiBEYXRlW10pOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHMuZmlsdGVyKChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG9iamVjdC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWVhc3VyZW1lbnRzOiBNZWFzdXJlbWVudFtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogTWVhc3VyZW1lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG1lYXN1cmUuY29tbWVudC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICBvYmplY3RzOiBhbnlbXSwgLy8gVE9ETzogcmVtb3ZlIGFueSBoZXJlLi5cclxuICAgICAgICB6b25lSUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgem9uZTogWm9uZSA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3RzID0gW107XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIG9iamVjdHMubWFwKGFzeW5jIChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmIHpvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucG9pU2VydmljZS5wb2lJc1ZpcnR1YWwocG9pKSAmJiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJGTE9PUlwiICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaW5jbHVkZSBpbiBGbG9vciB6b25lIG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBvaVNlcnZpY2UucG9pSXNWaXJ0dWFsKHBvaSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmICF6b25lICYmIHpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0Zvck9iamVjdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcy5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHpvbmVfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVfLmlkID09PSB6b25lSUQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lXy5wYXJlbnRJRCA9PT0gem9uZUlELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZE9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRXF1aXBtZW50c0J5RG9tYWluTGlzdChcclxuICAgICAgICBlcXVpcG1lbnRzOiBFcXVpcG1lbnRbXSxcclxuICAgICAgICBkb21haW5JRExpc3Q6IHN0cmluZ1tdLFxyXG4gICAgKTogRXF1aXBtZW50W10ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQnlEb21haW4gPSBlcXVpcG1lbnRzLmZpbHRlcigoZXF1aXApID0+XHJcbiAgICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKGVxdWlwLmRvbWFpbklEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZEJ5UGFyZW50RG9tYWluID0gZXF1aXBtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlcXVpcCkgPT5cclxuICAgICAgICAgICAgICAgIGVxdWlwLmRvbWFpbiAmJlxyXG4gICAgICAgICAgICAgICAgZXF1aXAuZG9tYWluLnBhcmVudElEICYmXHJcbiAgICAgICAgICAgICAgICBkb21haW5JRExpc3QuaW5jbHVkZXMoZXF1aXAuZG9tYWluLnBhcmVudElEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5UGFyZW50RG9tYWluXTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGZpbHRlcmVkKTtcclxuICAgIH1cclxuXHJcblxyXG4gIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQhXHJcbiAgLy8gZmlsdGVyT2JqZWN0czNEQnlEb21haW5MaXN0KFxyXG4gIC8vICAgb2JqZWN0czNEOiBPYmplY3QzRFtdLFxyXG4gIC8vICAgZG9tYWluSURMaXN0OiBzdHJpbmdbXSxcclxuICAvLyApOiBPYmplY3QzRFtdIHtcclxuICAvLyAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gIC8vICAgY29uc3QgZmlsdGVyZWRCeURvbWFpbiA9IG9iamVjdHMzRC5maWx0ZXIoKGVxdWlwKSA9PlxyXG4gIC8vICAgICBkb21haW5JRExpc3QuaW5jbHVkZXMoZXF1aXAuZG9tYWluSUQpLFxyXG4gIC8vICAgKTtcclxuICAvLyAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQnlQYXJlbnREb21haW4gPSBvYmplY3RzM0QuZmlsdGVyKFxyXG4gIC8vICAgICAob2JqKSA9PlxyXG4gIC8vICAgICAgIG9iai5kb21haW4gJiZcclxuICAvLyAgICAgICBvYmouZG9tYWluLnBhcmVudElEICYmXHJcbiAgLy8gICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKG9iai5kb21haW4ucGFyZW50SUQpLFxyXG4gIC8vICAgKTtcclxuICAvLyAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5UGFyZW50RG9tYWluXTtcclxuICAvLyAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoZmlsdGVyZWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oZXF1aXBzOiBFcXVpcG1lbnRbXSwgdGVybTogc3RyaW5nKTogRXF1aXBtZW50W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciBkb21haW5zXHJcbiAgICAgICAgbGV0IGJ5RG9tYWluID0gZXF1aXBzLmZpbHRlcigoZXEpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVxLmRvbWFpbiAmJiBlcS5kb21haW4ubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZERvbWFpbiA9IGVxLmRvbWFpbi5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXYgPSBsZXZlbnNodGVpbihub3JtYWxpemVkRG9tYWluLCB0ZXJtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsZXYgPD0gMiB8fCBub3JtYWxpemVkRG9tYWluLmluY2x1ZGVzKHRlcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBieVBhcmVudERvbWFpbiA9IGVxdWlwcy5maWx0ZXIoKGVxKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcS5kb21haW4gJiYgZXEuZG9tYWluLnBhcmVudElEKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkUGFyZW50ID0gZXEuZG9tYWluLnBhcmVudC5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXYgPSBsZXZlbnNodGVpbihub3JtYWxpemVkUGFyZW50LCB0ZXJtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsZXYgPD0gMiB8fCBub3JtYWxpemVkUGFyZW50LmluY2x1ZGVzKHRlcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBieURvbWFpbiA9IFsuLi5ieURvbWFpbiwgLi4uYnlQYXJlbnREb21haW5dO1xyXG4gICAgICAgIC8vIGZpbHRlciBuYW1lXHJcbiAgICAgICAgbGV0IGJ5TmFtZSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGVybS5zcGxpdChcIiBcIikuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubGVuZ3RoID4gMik7XHJcbiAgICAgICAgZm9yIChjb25zdCBlcSBvZiBlcXVpcHMpIHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBlcS5uYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiIFwiKVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodG9rZW4pID0+IHRva2VuLmxlbmd0aCA+IDIpO1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGVybXMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgd29yZCBvZiB3b3Jkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbnNodGVpbih0b2tlbiwgd29yZCkgPD0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZC5sZW5ndGggPT09IHRlcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgYnlOYW1lLnB1c2goZXEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBieU5hbWVTaW1wbGUgPSBlcXVpcHMuZmlsdGVyKChlcSkgPT5cclxuICAgICAgICAgICAgZXEubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnlOYW1lID0gWy4uLmJ5TmFtZSwgLi4uYnlOYW1lU2ltcGxlXTtcclxuICAgICAgICAvLyBieSBzZXJpYWwgbnVtYmVyXHJcbiAgICAgICAgY29uc3QgYnlTZXJpYWxOdW1iZXIgPSBlcXVpcHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXEpID0+IGVxLnNlcmlhbE51bWJlciAmJiBlcS5zZXJpYWxOdW1iZXIudG9Mb3dlckNhc2UoKSA9PT0gdGVybSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5ieURvbWFpbiwgLi4uYnlOYW1lLCAuLi5ieVNlcmlhbE51bWJlcl07XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclRpY2tldHNGb3JUZXJtKHRpY2tldHM6IFRpY2tldFtdLCB0ZXJtOiBzdHJpbmcpOiBUaWNrZXRbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHRlcm0gaW4gdGl0bGUgYW5kIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IHRoaXMuZmlsdGVyT2JqZWN0c0ZvclRlcm0odGlja2V0cywgdGVybSk7XHJcbiAgICAgICAgLy8gYnkgZXF1aXBtZW50XHJcbiAgICAgICAgY29uc3QgYnlFcXVpcG1lbnQgPSB0aWNrZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgKHRpY2tldCkgPT5cclxuICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKHRpY2tldC5lcXVpcG1lbnRzLCB0ZXJtKS5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKFsuLi5ieVRpdGxlLCAuLi5ieUVxdWlwbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckxvY2F0aW9uc0ZvclRlcm0obG9jYXRpb25zOiBTcGFjZVtdLCB0ZXJtOiBzdHJpbmcpOiBTcGFjZVtdIHtcclxuICAgICAgICAvLyBieSBuYW1lXHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gbG9jYXRpb25zLmZpbHRlcigobG9jKSA9PlxyXG4gICAgICAgICAgICBsb2MubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYnkgYWRkcmVzc1xyXG4gICAgICAgIGNvbnN0IGJ5QWRkcmVzcyA9IGxvY2F0aW9ucy5maWx0ZXIoKGxvYykgPT5cclxuICAgICAgICAgICAgbG9jLmFkZHJlc3Nlcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlOYW1lLCAuLi5ieUFkZHJlc3NdKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcclxuICAgICAgICBvcmdzOiBPcmdhbmlzYXRpb25bXSxcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICApOiBPcmdhbmlzYXRpb25bXSB7XHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gb3Jncy5maWx0ZXIoKG9yZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYnlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclVzZXJzRm9yVGVybSh1c2VyczogUHJvZmlsZUVudGl0eVtdLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBieU5hbWUgPSB1c2Vycy5maWx0ZXIoKHVzZXIpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSB1c2VyLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IHVzZXIuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBieU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRmVhdHVyZXNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsRmVhdHVyZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgaGFzaHRhZ0ZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0TGVsZWwgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuSEFTSFRBRykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsRmVhdHVyZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRmVhdHVyZXNGb3JUZXJtKGZlYXR1cmVzOiBGZWF0dXJlW10sIHRlcm06IHN0cmluZyk6IEZlYXR1cmVbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHRlcm0gaW4gdGl0bGVcclxuICAgICAgICBjb25zdCBieVRpdGxlID0gdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlcywgdGVybSk7XHJcbiAgICAgICAgLy8gYnkgY29tbWVudHNcclxuICAgICAgICBjb25zdCBieUNvbW1lbnQgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLCB0ZXJtKS5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgMCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5VGl0bGUsIC4uLmJ5Q29tbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmplY3RzIEFycmF5IG9mIENvbW1lbnRzLCBUaWNrZXRzLCBGZWF0dXJlcy4gT2JsaWdhdG9yeSBwcm9wb3J0aWVzOiB0aXRsZSwgZGVzY3JpcHRpb25cclxuICAgICAqIEBwYXJhbSB0ZXJtIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXJPYmplY3RzRm9yVGVybShvYmplY3RzOiBhbnlbXSwgdGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciB0ZXJtIGluIHRpdGxlXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IG9iamVjdHMuZmlsdGVyKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gZmVhdHVyZS50aXRsZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHdvcmRzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMiAmJiBsZXZlbnNodGVpbih3b3JkLCB0ZXJtKSA8PSAxLFxyXG4gICAgICAgICAgICAgICAgKSB8fCBmZWF0dXJlLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0ZXJtIHByZXNlbnQgaW4gZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieURlc2NyaXB0aW9uID0gb2JqZWN0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlUaXRsZSwgLi4uYnlEZXNjcmlwdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlck1pc3Npb25CeVN0YXJ0VGltZURhdGVGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWlzc2lvbnM6IGFueVtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlVGltZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGVUaW1lID49IGRhdGVSYW5nZVswXSAmJiBzdGFydERhdGVUaW1lIDw9IGRhdGVSYW5nZVsxXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zOiBNaXNzaW9uW10sXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZFpvbmVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBtaXNzaW9uIG9mIGN1cnJlbnRTcGFjZU1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uLnpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFpvbmVzLnB1c2gobWlzc2lvbi56b25lSUQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhbGxvd2VkWm9uZXMubGVuZ3RoID09PSBjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGFsbFpvbmVGaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIGFsbG93ZWRab25lcy5tYXAoYXN5bmMgKHpvbmVJRCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBhbGxab25lRmlsdGVyZWQgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoYWxsWm9uZUZpbHRlcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRXF1aXBtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgZXF1aXBzOiBFcXVpcG1lbnRbXSxcclxuICAgICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgICAgICBjb25zdCBmaW5hbEVxdWlwczogRXF1aXBtZW50W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGNvbnN0IHJvbGVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbGV2ZWxGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobS5kb21haW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWlucyA9IFsuLi5kb21haW5zLCAuLi5tLmRvbWFpbnNdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsRG9tYWluc0ZpbHRlcmVkID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RG9tRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KGVxdWlwcywgZG9tYWlucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbERvbWFpbnNGaWx0ZXJlZCA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbERvbWFpbnNGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnREb21GaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQgPSBhbGxEb21haW5zRmlsdGVyZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuUk9MRSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBoaWdoZXN0Um9sZU1pc3Npb24gPSBjdXJyZW50U3BhY2VNaXNzaW9ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgKG0pID0+IG0ucm9sZSA9PT0gaGlnaGVzdFJvbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETywgZXF1aXBtZW50IGRvZXMgbm90IGhhdmUgbGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuWk9ORSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWMgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXModGljKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEVxdWlwcy5wdXNoKHRpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEVxdWlwcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGNvbW1lbnRzOiBDb21tZW50W10sXHJcbiAgICApOiBQcm9taXNlPENvbW1lbnRbXT4ge1xyXG4gICAgICAgIGxldCBmaW5hbE1lYXN1cmVtZW50czogQ29tbWVudFtdID0gW107XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogQ29tbWVudFtdID0gY29tbWVudHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNGb3JSb2xlKGhpZ2hlc3RSb2xlKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZmluYWxNZWFzdXJlbWVudHMgPSB6b25lRmlsdGVyZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsTWVhc3VyZW1lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGlzT2JqZWN0QWxsb3dlZEZvclVzZXJJblNwYWNlKFxyXG4gICAgICAgIG9iamVjdDogT2JqZWN0LFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNGb3JSb2xlKG1pc3Npb24ucm9sZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwgJiZcclxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIFwibGV2ZWxcIilcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICBbb2JqZWN0XSxcclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLmxldmVsLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZXZlbEZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgW21pc3Npb25dLFxyXG4gICAgICAgICAgICAgICAgICAgIFtvYmplY3RdLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmICh6b25lRmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclRlbXBsYXRlc0ZvclRlcm0obWlzc2lvbnM6IE1pc3Npb25bXSwgdGVybTogc3RyaW5nKTogTWlzc2lvbltdIHtcclxuICAgICAgICAvLyB0ZXJtIHByZXNlbnQgaW4gZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieURlc2NyaXB0aW9uID0gbWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PlxyXG4gICAgICAgICAgICAgICAgbWlzLmRlc2NyaXB0aW9uICYmIG1pcy5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYnkgdXNlciBsYXN0TmFtZSB3aGljaCBpcyB0aGUgbmFtZSBvZiB0aGUgdmlzaXQ6XHJcbiAgICAgICAgLy8gbWV0YWRhdGE6IFwie1xcXCJmaXJzdE5hbWVcXFwiOlxcXCJcXFwiLFxcXCJsYXN0TmFtZVxcXCI6XFxcIlZpc2l0ZSBkdSA1IEp1aWxsZXRcXFwifVwiXHJcbiAgICAgICAgY29uc3QgdXNlclByb2ZpbGVzID0gbWlzc2lvbnMubWFwKChtaXMpID0+IG5ldyBQcm9maWxlRW50aXR5KG1pcy51c2VyKSk7XHJcbiAgICAgICAgY29uc3QgYnlVc2VyTGFzdG5hbWUgPSB0aGlzLmZpbHRlclVzZXJzRm9yVGVybSh1c2VyUHJvZmlsZXMsIHRlcm0pO1xyXG4gICAgICAgIGNvbnN0IHVzZXJJZHMgPSBuZXcgU2V0KGJ5VXNlckxhc3RuYW1lLm1hcCgodXNlcikgPT4gdXNlci5pZCkpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zQnlVc2VyID0gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+XHJcbiAgICAgICAgICAgIHVzZXJJZHMuaGFzKG1pcy51c2VySUQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlEZXNjcmlwdGlvbiwgLi4ubWlzc2lvbnNCeVVzZXJdKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yU3dlZXAoXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sXHJcbiAgICAgICAgb2JqZWN0VHlwZTogUG9pVHlwZSxcclxuICAgICAgICBzd2VlcDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgY29uc3QgcG9pcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaXNCeU1hdHRlcnBvcnRTd2VlcEJ5VHlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwSURzID0gbmV3IFNldChwb2lzLm1hcCgocG9pKSA9PiBwb2kuZWxlbWVudElEKSk7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IG9iamVjdHMuZmlsdGVyKChvYmplY3QpID0+IGVxdWlwSURzLmhhcyhvYmplY3QuaWQpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnM6IE1pc3Npb25bXSxcclxuICAgICAgICBmZWF0dXJlczogRmVhdHVyZVtdLFxyXG4gICAgKTogRmVhdHVyZVtdIHtcclxuICAgICAgICBjb25zdCBbY3VycmVudE1pc3Npb25dID0gY3VycmVudFNwYWNlTWlzc2lvbnM7XHJcbiAgICAgICAgLy8gZmlsdGVyIGJ5IGxvY2FsZVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZExvY2FsZSA9IFsuLi5mZWF0dXJlc107XHJcbiAgICAgICAgaWYgKGN1cnJlbnRNaXNzaW9uLmxvY2FsZSkge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZExvY2FsZSA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmUubG9jYWxlICYmIGZlYXR1cmUubG9jYWxlID09PSBjdXJyZW50TWlzc2lvbi5sb2NhbGUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZpbHRlciBieSBoYXNodGFnc1xyXG4gICAgICAgIGlmIChjdXJyZW50TWlzc2lvbi5oYXNodGFncyAmJiBjdXJyZW50TWlzc2lvbi5oYXNodGFncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQnlIYXNodGFncyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmlsdGVyZWRMb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmVhdHVyZS5oYXNodGFncyB8fCBmZWF0dXJlLmhhc2h0YWdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZlYXR1cmUgd2l0aG91dCBoYXNodGFnIGlzIGF2YWlsYWJsZSBmb3IgZXZlcnlib2R5XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRCeUhhc2h0YWdzLnB1c2goZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaXNzaW9uLmhhc2h0YWdzLmV2ZXJ5KChoYXNodGFnKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmhhc2h0YWdzLmluY2x1ZGVzKGhhc2h0YWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQnlIYXNodGFncy5wdXNoKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEJ5SGFzaHRhZ3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZExvY2FsZTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJGZWF0dXJlc0Zvck1pc3Npb25XaXRob3V0Wm9uZShcclxuICAgICAgICBmZWF0dXJlczogRmVhdHVyZVtdLFxyXG4gICAgICAgIG1pc3Npb246IE1pc3Npb24sXHJcbiAgICApOiBGZWF0dXJlW10ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsRmVhdHVyZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgaGFzaHRhZ0ZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUobWlzc2lvbi5yb2xlKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5sZXZlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkhBU0hUQUcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhZ0ZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRmVhdHVyZXNCeUhhc2h0YWdzQW5kTG9jYWxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaXNzaW9uXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEZlYXR1cmVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
599
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMsaUNBQWlDO0FBQ2pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSSxPQUFPLEVBT0wsT0FBTyxFQUNQLGFBQWEsRUFDYixVQUFVLEVBT1gsTUFBTSxrQkFBa0IsQ0FBQztBQVkxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFSekMsSUFBSyxVQU9KO0FBUEQsV0FBSyxVQUFVO0lBQ1gsK0JBQWlCLENBQUE7SUFDakIsNkJBQWUsQ0FBQTtJQUNmLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBS0QsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDWSxXQUE0QixFQUM1QixXQUF3QixFQUN4QixVQUFzQjtRQUZ0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVAxQixxQkFBZ0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVF2RCxDQUFDO0lBRUoscUJBQXFCLENBQUMsZUFBeUIsRUFBRSxNQUFjO1FBQzNELE9BQU8sZUFBZSxDQUFDLE1B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Q1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZ2V0TGV2ZWxzQmVsb3csIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zLCBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zLCBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQgfSBmcm9tIFwiLi4vaGVscGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgWm9uZSxcclxuICBFcXVpcG1lbnQsXHJcbiAgTGV2ZWxTdGF0dXMsXHJcbiAgTWVhc3VyZW1lbnQsXHJcbiAgTWlzc2lvbixcclxuICBPcmdhbmlzYXRpb24sXHJcbiAgUG9pVHlwZSxcclxuICBQcm9maWxlRW50aXR5LFxyXG4gIFJvbGVTdGF0dXMsXHJcbiAgU3BhY2UsXHJcbiAgVGlja2V0LFxyXG4gIERiT2JqZWN0VHlwZSxcclxuICBGZWF0dXJlLFxyXG4gIENvbW1lbnQsXHJcbiAgVmlzaXRUZW1wbGF0ZSwgT2JqZWN0M0RcclxufSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3BvaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3pvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi91c2VyLnNlcnZpY2VcIjtcclxuZW51bSBGaWx0ZXJUeXBlIHtcclxuICAgIERPTUFJTiA9IFwiRE9NQUlOXCIsXHJcbiAgICBMRVZFTCA9IFwiTEVWRUxcIixcclxuICAgIFJPTEUgPSBcIlJPTEVcIixcclxuICAgIFpPTkUgPSBcIlpPTkVcIixcclxuICAgIFNQQUNFID0gXCJTUEFDRVwiLFxyXG4gICAgSEFTSFRBRyA9IFwiSEFTSFRBR1wiLFxyXG59XHJcbmltcG9ydCBsZXZlbnNodGVpbiBmcm9tICdqcy1sZXZlbnNodGVpbic7XHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHVwZGF0ZURhdGVGaWx0ZXI6IFN1YmplY3Q8RGF0ZVtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgcHVibGljIGN1cnJlbnREYXRlRmlsdGVyOiBEYXRlW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzQnlEb21haW4odGlja2V0c1RvRmlsdGVyOiBUaWNrZXRbXSwgZG9tYWluOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGlja2V0c1RvRmlsdGVyLmZpbHRlcigodGljKSA9PiB0aWMuZG9tYWluSUQgPT09IGRvbWFpbik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0J5TGV2ZWwob2JqZWN0c1RvRmlsdGVyOiBhbnlbXSwgbGV2ZWw6IExldmVsU3RhdHVzKTogYW55W10ge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVMZXZlbHMgPSBnZXRMZXZlbHNCZWxvdyhsZXZlbCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBvYmplY3RzVG9GaWx0ZXIuZmlsdGVyKCh0aWMpID0+XHJcbiAgICAgICAgICAgIHZpc2libGVMZXZlbHMuaW5jbHVkZXModGljLmxldmVsKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzRm9yTWlzc2lvbihcclxuICAgICAgICB0aWNrZXRzVG9GaWx0ZXI6IFRpY2tldFtdLFxyXG4gICAgICAgIG1pc3Npb246IE1pc3Npb24sXHJcbiAgICApOiBUaWNrZXRbXSB7XHJcbiAgICAgICAgY29uc3QgbWFuYWdlclJvbGVzOiBSb2xlU3RhdHVzW10gPSBbXHJcbiAgICAgICAgICAgIFJvbGVTdGF0dXMuTUFOQUdFUixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5PV05FUixcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICghbWFuYWdlclJvbGVzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSkpIHtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTRVJWSUNFIGNhbiBzZWUgdGlja2V0cyB0byB3aGljaCBoZSBpcyBhc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdGlja2V0c0Fzc2lnbmVkID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGlja2V0c1RvRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQuYXNzaWduZWVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIHQuYXNzaWduZWVzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNzaWdubWVudC5taXNzaW9uSUQgPT09IG1pc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzQXNzaWduZWQucHVzaCh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWNrZXRzQXNzaWduZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gT0NDVVBBTlQgYW5kIFZJU0lUT1IgY2FuIHNlZSBvbmx5IHRpY2tldHMgdGhhdCB0aGV5IGNyZWF0ZWRcclxuICAgICAgICAgICAgcmV0dXJuIHRpY2tldHNUb0ZpbHRlci5maWx0ZXIoKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpY2tldC5vd25lck1pc3Npb25JRCA9PT0gbWlzc2lvbi5pZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aWNrZXRzVG9GaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyc0ZvclJvbGUocm9sZTogUm9sZVN0YXR1cyk6IEZpbHRlclR5cGVbXSB7XHJcbiAgICAgICAgc3dpdGNoIChyb2xlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5BRE1JTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5NQU5BR0VSOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLlpPTkUsIEZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuT1dORVI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5TRVJWSUNFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5MRVZFTCxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkRPTUFJTixcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlJPTEUsIC8vIHRoYXQgaXMgdGhlIG1vc3Qgc2V2ZXJlIGZpbHRlclxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLk9DQ1VQQU5UOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ET01BSU4sXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ST0xFLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuTEVWRUwsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5IQVNIVEFHLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLlZJU0lUT1I6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuWk9ORSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkxFVkVMLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuRE9NQUlOLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuUk9MRSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkhBU0hUQUcsXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTCwgRmlsdGVyVHlwZS5IQVNIVEFHXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIG9iamVjdHM6IE9iamVjdDNEW10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxPYmplY3QzRFtdPiB7XHJcbiAgICAgICAgY29uc3QgZmluYWxPYmplY3QzRHM6IE9iamVjdDNEW10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IE9iamVjdDNEW10gPSBvYmplY3RzO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZC5pbmNsdWRlcyhvYmopICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyhvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0M0RzLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsT2JqZWN0M0RzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlclRpY2tldHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgdGlja2V0czogVGlja2V0W10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsVGlja2V0czogVGlja2V0W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgcm9sZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgbGV0IGxldmVsRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0uZG9tYWlucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbnMgPSBbLi4uZG9tYWlucywgLi4ubS5kb21haW5zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsRG9tYWluc0ZpbHRlcmVkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBkb21haW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RG9tRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyVGlja2V0c0J5RG9tYWluKHRpY2tldHMsIGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9tYWluc0ZpbHRlcmVkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbERvbWFpbnNGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50RG9tRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkID0gYWxsRG9tYWluc0ZpbHRlcmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlJPTEUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGVNaXNzaW9uID0gY3VycmVudFNwYWNlTWlzc2lvbnMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiBtLnJvbGUgPT09IGhpZ2hlc3RSb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQgPSB0aGlzLmZpbHRlclRpY2tldHNGb3JNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RSb2xlTWlzc2lvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8ga2VlcCBvbmx5IHRpY2tldHMgcHJlc2VudCBpbiBhbGwgZmlsdGVyZWQgYXJyYXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkb21GaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyb2xlRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobGV2ZWxGaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh6b25lRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWMgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXModGljKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFRpY2tldHMucHVzaCh0aWMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhmaW5hbFRpY2tldHMpO1xyXG4gICAgICAgIHJldHVybiBmaW5hbFRpY2tldHM7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKFxyXG4gICAgICAgIG5leHQ/OiAodmFsdWU6IGFueSkgPT4gdm9pZCxcclxuICAgICAgICBlcnJvcj86IChlcnJvcjogYW55KSA9PiB2b2lkLFxyXG4gICAgICAgIGNvbXBsZXRlPzogKCkgPT4gdm9pZCxcclxuICAgICk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgY29uc3QgcyA9IHRoaXMudXBkYXRlRGF0ZUZpbHRlci5zdWJzY3JpYmUobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH1cclxuXHJcbiAgICBkYXRlRmlsdGVyVXBkYXRlZChkYXRlUmFuZ2U6IERhdGVbXSB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZUZpbHRlci5uZXh0KGRhdGVSYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0ZvckRhdGVSYW5nZShvYmplY3RzOiBhbnlbXSwgZGF0ZVJhbmdlOiBEYXRlW10pOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHMuZmlsdGVyKChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG9iamVjdC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWVhc3VyZW1lbnRzOiBNZWFzdXJlbWVudFtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogTWVhc3VyZW1lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG1lYXN1cmUuY29tbWVudC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICBvYmplY3RzOiBhbnlbXSwgLy8gVE9ETzogcmVtb3ZlIGFueSBoZXJlLi5cclxuICAgICAgICB6b25lSUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgem9uZTogWm9uZSA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3RzID0gW107XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIG9iamVjdHMubWFwKGFzeW5jIChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmIHpvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucG9pU2VydmljZS5wb2lJc1ZpcnR1YWwocG9pKSAmJiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJGTE9PUlwiICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaW5jbHVkZSBpbiBGbG9vciB6b25lIG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBvaVNlcnZpY2UucG9pSXNWaXJ0dWFsKHBvaSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmICF6b25lICYmIHpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0Zvck9iamVjdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcy5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHpvbmVfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVfLmlkID09PSB6b25lSUQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lXy5wYXJlbnRJRCA9PT0gem9uZUlELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZE9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRXF1aXBtZW50c0J5RG9tYWluTGlzdChcclxuICAgICAgICBlcXVpcG1lbnRzOiBFcXVpcG1lbnRbXSxcclxuICAgICAgICBkb21haW5JRExpc3Q6IHN0cmluZ1tdLFxyXG4gICAgKTogRXF1aXBtZW50W10ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQnlEb21haW4gPSBlcXVpcG1lbnRzLmZpbHRlcigoZXF1aXApID0+XHJcbiAgICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKGVxdWlwLmRvbWFpbklEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZEJ5UGFyZW50RG9tYWluID0gZXF1aXBtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlcXVpcCkgPT5cclxuICAgICAgICAgICAgICAgIGVxdWlwLmRvbWFpbiAmJlxyXG4gICAgICAgICAgICAgICAgZXF1aXAuZG9tYWluLnBhcmVudElEICYmXHJcbiAgICAgICAgICAgICAgICBkb21haW5JRExpc3QuaW5jbHVkZXMoZXF1aXAuZG9tYWluLnBhcmVudElEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5UGFyZW50RG9tYWluXTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGZpbHRlcmVkKTtcclxuICAgIH1cclxuXHJcblxyXG4gIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQhXHJcbiAgLy8gZmlsdGVyT2JqZWN0czNEQnlEb21haW5MaXN0KFxyXG4gIC8vICAgb2JqZWN0czNEOiBPYmplY3QzRFtdLFxyXG4gIC8vICAgZG9tYWluSURMaXN0OiBzdHJpbmdbXSxcclxuICAvLyApOiBPYmplY3QzRFtdIHtcclxuICAvLyAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gIC8vICAgY29uc3QgZmlsdGVyZWRCeURvbWFpbiA9IG9iamVjdHMzRC5maWx0ZXIoKGVxdWlwKSA9PlxyXG4gIC8vICAgICBkb21haW5JRExpc3QuaW5jbHVkZXMoZXF1aXAuZG9tYWluSUQpLFxyXG4gIC8vICAgKTtcclxuICAvLyAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQnlQYXJlbnREb21haW4gPSBvYmplY3RzM0QuZmlsdGVyKFxyXG4gIC8vICAgICAob2JqKSA9PlxyXG4gIC8vICAgICAgIG9iai5kb21haW4gJiZcclxuICAvLyAgICAgICBvYmouZG9tYWluLnBhcmVudElEICYmXHJcbiAgLy8gICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKG9iai5kb21haW4ucGFyZW50SUQpLFxyXG4gIC8vICAgKTtcclxuICAvLyAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5UGFyZW50RG9tYWluXTtcclxuICAvLyAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoZmlsdGVyZWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oZXF1aXBzOiBFcXVpcG1lbnRbXSwgdGVybTogc3RyaW5nKTogRXF1aXBtZW50W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciBkb21haW5zXHJcbiAgICAgICAgbGV0IGJ5RG9tYWluID0gZXF1aXBzLmZpbHRlcigoZXEpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVxLmRvbWFpbiAmJiBlcS5kb21haW4ubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZERvbWFpbiA9IGVxLmRvbWFpbi5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXYgPSBsZXZlbnNodGVpbihub3JtYWxpemVkRG9tYWluLCB0ZXJtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsZXYgPD0gMiB8fCBub3JtYWxpemVkRG9tYWluLmluY2x1ZGVzKHRlcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBieVBhcmVudERvbWFpbiA9IGVxdWlwcy5maWx0ZXIoKGVxKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcS5kb21haW4gJiYgZXEuZG9tYWluLnBhcmVudElEKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkUGFyZW50ID0gZXEuZG9tYWluLnBhcmVudC5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXYgPSBsZXZlbnNodGVpbihub3JtYWxpemVkUGFyZW50LCB0ZXJtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsZXYgPD0gMiB8fCBub3JtYWxpemVkUGFyZW50LmluY2x1ZGVzKHRlcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBieURvbWFpbiA9IFsuLi5ieURvbWFpbiwgLi4uYnlQYXJlbnREb21haW5dO1xyXG4gICAgICAgIC8vIGZpbHRlciBuYW1lXHJcbiAgICAgICAgbGV0IGJ5TmFtZSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGVybS5zcGxpdChcIiBcIikuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubGVuZ3RoID4gMik7XHJcbiAgICAgICAgZm9yIChjb25zdCBlcSBvZiBlcXVpcHMpIHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBlcS5uYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiIFwiKVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodG9rZW4pID0+IHRva2VuLmxlbmd0aCA+IDIpO1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGVybXMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgd29yZCBvZiB3b3Jkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbnNodGVpbih0b2tlbiwgd29yZCkgPD0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZC5sZW5ndGggPT09IHRlcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgYnlOYW1lLnB1c2goZXEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBieU5hbWVTaW1wbGUgPSBlcXVpcHMuZmlsdGVyKChlcSkgPT5cclxuICAgICAgICAgICAgZXEubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnlOYW1lID0gWy4uLmJ5TmFtZSwgLi4uYnlOYW1lU2ltcGxlXTtcclxuICAgICAgICAvLyBieSBzZXJpYWwgbnVtYmVyXHJcbiAgICAgICAgY29uc3QgYnlTZXJpYWxOdW1iZXIgPSBlcXVpcHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXEpID0+IGVxLnNlcmlhbE51bWJlciAmJiBlcS5zZXJpYWxOdW1iZXIudG9Mb3dlckNhc2UoKSA9PT0gdGVybSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5ieURvbWFpbiwgLi4uYnlOYW1lLCAuLi5ieVNlcmlhbE51bWJlcl07XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclRpY2tldHNGb3JUZXJtKHRpY2tldHM6IFRpY2tldFtdLCB0ZXJtOiBzdHJpbmcpOiBUaWNrZXRbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHRlcm0gaW4gdGl0bGUgYW5kIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IHRoaXMuZmlsdGVyT2JqZWN0c0ZvclRlcm0odGlja2V0cywgdGVybSk7XHJcbiAgICAgICAgLy8gYnkgZXF1aXBtZW50XHJcbiAgICAgICAgY29uc3QgYnlFcXVpcG1lbnQgPSB0aWNrZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgKHRpY2tldCkgPT5cclxuICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKHRpY2tldC5lcXVpcG1lbnRzLCB0ZXJtKS5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKFsuLi5ieVRpdGxlLCAuLi5ieUVxdWlwbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckxvY2F0aW9uc0ZvclRlcm0obG9jYXRpb25zOiBTcGFjZVtdLCB0ZXJtOiBzdHJpbmcpOiBTcGFjZVtdIHtcclxuICAgICAgICAvLyBieSBuYW1lXHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gbG9jYXRpb25zLmZpbHRlcigobG9jKSA9PlxyXG4gICAgICAgICAgICBsb2MubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYnkgYWRkcmVzc1xyXG4gICAgICAgIGNvbnN0IGJ5QWRkcmVzcyA9IGxvY2F0aW9ucy5maWx0ZXIoKGxvYykgPT5cclxuICAgICAgICAgICAgbG9jLmFkZHJlc3Nlcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlOYW1lLCAuLi5ieUFkZHJlc3NdKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcclxuICAgICAgICBvcmdzOiBPcmdhbmlzYXRpb25bXSxcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICApOiBPcmdhbmlzYXRpb25bXSB7XHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gb3Jncy5maWx0ZXIoKG9yZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYnlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclVzZXJzRm9yVGVybSh1c2VyczogUHJvZmlsZUVudGl0eVtdLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBieU5hbWUgPSB1c2Vycy5maWx0ZXIoKHVzZXIpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSB1c2VyLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IHVzZXIuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBieU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRmVhdHVyZXNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsRmVhdHVyZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgaGFzaHRhZ0ZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0TGVsZWwgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuSEFTSFRBRykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsRmVhdHVyZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRmVhdHVyZXNGb3JUZXJtKGZlYXR1cmVzOiBGZWF0dXJlW10sIHRlcm06IHN0cmluZyk6IEZlYXR1cmVbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHRlcm0gaW4gdGl0bGVcclxuICAgICAgICBjb25zdCBieVRpdGxlID0gdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlcywgdGVybSk7XHJcbiAgICAgICAgLy8gYnkgY29tbWVudHNcclxuICAgICAgICBjb25zdCBieUNvbW1lbnQgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLCB0ZXJtKS5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgMCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5VGl0bGUsIC4uLmJ5Q29tbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmplY3RzIEFycmF5IG9mIENvbW1lbnRzLCBUaWNrZXRzLCBGZWF0dXJlcy4gT2JsaWdhdG9yeSBwcm9wb3J0aWVzOiB0aXRsZSwgZGVzY3JpcHRpb25cclxuICAgICAqIEBwYXJhbSB0ZXJtIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXJPYmplY3RzRm9yVGVybShvYmplY3RzOiBhbnlbXSwgdGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciB0ZXJtIGluIHRpdGxlXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IG9iamVjdHMuZmlsdGVyKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gZmVhdHVyZS50aXRsZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHdvcmRzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMiAmJiBsZXZlbnNodGVpbih3b3JkLCB0ZXJtKSA8PSAxLFxyXG4gICAgICAgICAgICAgICAgKSB8fCBmZWF0dXJlLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0ZXJtIHByZXNlbnQgaW4gZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieURlc2NyaXB0aW9uID0gb2JqZWN0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlUaXRsZSwgLi4uYnlEZXNjcmlwdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlck1pc3Npb25CeVN0YXJ0VGltZURhdGVGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWlzc2lvbnM6IGFueVtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlVGltZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGVUaW1lID49IGRhdGVSYW5nZVswXSAmJiBzdGFydERhdGVUaW1lIDw9IGRhdGVSYW5nZVsxXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zOiBNaXNzaW9uW10sXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZFpvbmVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBtaXNzaW9uIG9mIGN1cnJlbnRTcGFjZU1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uLnpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFpvbmVzLnB1c2gobWlzc2lvbi56b25lSUQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhbGxvd2VkWm9uZXMubGVuZ3RoID09PSBjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGFsbFpvbmVGaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIGFsbG93ZWRab25lcy5tYXAoYXN5bmMgKHpvbmVJRCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBhbGxab25lRmlsdGVyZWQgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoYWxsWm9uZUZpbHRlcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRXF1aXBtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgZXF1aXBzOiBFcXVpcG1lbnRbXSxcclxuICAgICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgICAgICBjb25zdCBmaW5hbEVxdWlwczogRXF1aXBtZW50W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGNvbnN0IHJvbGVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbGV2ZWxGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobS5kb21haW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWlucyA9IFsuLi5kb21haW5zLCAuLi5tLmRvbWFpbnNdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsRG9tYWluc0ZpbHRlcmVkID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RG9tRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KGVxdWlwcywgZG9tYWlucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbERvbWFpbnNGaWx0ZXJlZCA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbERvbWFpbnNGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnREb21GaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQgPSBhbGxEb21haW5zRmlsdGVyZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuUk9MRSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBoaWdoZXN0Um9sZU1pc3Npb24gPSBjdXJyZW50U3BhY2VNaXNzaW9ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgKG0pID0+IG0ucm9sZSA9PT0gaGlnaGVzdFJvbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETywgZXF1aXBtZW50IGRvZXMgbm90IGhhdmUgbGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuWk9ORSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWMgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXModGljKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEVxdWlwcy5wdXNoKHRpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEVxdWlwcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGNvbW1lbnRzOiBDb21tZW50W10sXHJcbiAgICApOiBQcm9taXNlPENvbW1lbnRbXT4ge1xyXG4gICAgICAgIGxldCBmaW5hbE1lYXN1cmVtZW50czogQ29tbWVudFtdID0gW107XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogQ29tbWVudFtdID0gY29tbWVudHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNGb3JSb2xlKGhpZ2hlc3RSb2xlKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZmluYWxNZWFzdXJlbWVudHMgPSB6b25lRmlsdGVyZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsTWVhc3VyZW1lbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGlzT2JqZWN0QWxsb3dlZEZvclVzZXJJblNwYWNlKFxyXG4gICAgICAgIG9iamVjdDogT2JqZWN0LFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNGb3JSb2xlKG1pc3Npb24ucm9sZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwgJiZcclxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIFwibGV2ZWxcIilcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICBbb2JqZWN0XSxcclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLmxldmVsLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZXZlbEZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgW21pc3Npb25dLFxyXG4gICAgICAgICAgICAgICAgICAgIFtvYmplY3RdLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmICh6b25lRmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclRlbXBsYXRlc0ZvclRlcm0obWlzc2lvbnM6IE1pc3Npb25bXSwgdGVybTogc3RyaW5nKTogTWlzc2lvbltdIHtcclxuICAgICAgICAvLyB0ZXJtIHByZXNlbnQgaW4gZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieURlc2NyaXB0aW9uID0gbWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PlxyXG4gICAgICAgICAgICAgICAgbWlzLmRlc2NyaXB0aW9uICYmIG1pcy5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYnkgdXNlciBsYXN0TmFtZSB3aGljaCBpcyB0aGUgbmFtZSBvZiB0aGUgdmlzaXQ6XHJcbiAgICAgICAgLy8gbWV0YWRhdGE6IFwie1xcXCJmaXJzdE5hbWVcXFwiOlxcXCJcXFwiLFxcXCJsYXN0TmFtZVxcXCI6XFxcIlZpc2l0ZSBkdSA1IEp1aWxsZXRcXFwifVwiXHJcbiAgICAgICAgY29uc3QgdXNlclByb2ZpbGVzID0gbWlzc2lvbnMubWFwKChtaXMpID0+IG5ldyBQcm9maWxlRW50aXR5KG1pcy51c2VyKSk7XHJcbiAgICAgICAgY29uc3QgYnlVc2VyTGFzdG5hbWUgPSB0aGlzLmZpbHRlclVzZXJzRm9yVGVybSh1c2VyUHJvZmlsZXMsIHRlcm0pO1xyXG4gICAgICAgIGNvbnN0IHVzZXJJZHMgPSBuZXcgU2V0KGJ5VXNlckxhc3RuYW1lLm1hcCgodXNlcikgPT4gdXNlci5pZCkpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zQnlVc2VyID0gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+XHJcbiAgICAgICAgICAgIHVzZXJJZHMuaGFzKG1pcy51c2VySUQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlEZXNjcmlwdGlvbiwgLi4ubWlzc2lvbnNCeVVzZXJdKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yU3dlZXAoXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sXHJcbiAgICAgICAgb2JqZWN0VHlwZTogUG9pVHlwZSxcclxuICAgICAgICBzd2VlcDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgY29uc3QgcG9pcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaXNCeU1hdHRlcnBvcnRTd2VlcEJ5VHlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwSURzID0gbmV3IFNldChwb2lzLm1hcCgocG9pKSA9PiBwb2kuZWxlbWVudElEKSk7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IG9iamVjdHMuZmlsdGVyKChvYmplY3QpID0+IGVxdWlwSURzLmhhcyhvYmplY3QuaWQpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnM6IE1pc3Npb25bXSxcclxuICAgICAgICBmZWF0dXJlczogRmVhdHVyZVtdLFxyXG4gICAgKTogRmVhdHVyZVtdIHtcclxuICAgICAgICBjb25zdCBbY3VycmVudE1pc3Npb25dID0gY3VycmVudFNwYWNlTWlzc2lvbnM7XHJcbiAgICAgICAgLy8gZmlsdGVyIGJ5IGxvY2FsZVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZExvY2FsZSA9IFsuLi5mZWF0dXJlc107XHJcbiAgICAgICAgaWYgKGN1cnJlbnRNaXNzaW9uLmxvY2FsZSkge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZExvY2FsZSA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmUubG9jYWxlICYmIGZlYXR1cmUubG9jYWxlID09PSBjdXJyZW50TWlzc2lvbi5sb2NhbGUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZpbHRlciBieSBoYXNodGFnc1xyXG4gICAgICAgIGlmIChjdXJyZW50TWlzc2lvbi5oYXNodGFncyAmJiBjdXJyZW50TWlzc2lvbi5oYXNodGFncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQnlIYXNodGFncyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmlsdGVyZWRMb2NhbGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmVhdHVyZS5oYXNodGFncyB8fCBmZWF0dXJlLmhhc2h0YWdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZlYXR1cmUgd2l0aG91dCBoYXNodGFnIGlzIGF2YWlsYWJsZSBmb3IgZXZlcnlib2R5XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRCeUhhc2h0YWdzLnB1c2goZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaXNzaW9uLmhhc2h0YWdzLmV2ZXJ5KChoYXNodGFnKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmhhc2h0YWdzLmluY2x1ZGVzKGhhc2h0YWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQnlIYXNodGFncy5wdXNoKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEJ5SGFzaHRhZ3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZExvY2FsZTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJGZWF0dXJlc0Zvck1pc3Npb25XaXRob3V0Wm9uZShcclxuICAgICAgICBmZWF0dXJlczogRmVhdHVyZVtdLFxyXG4gICAgICAgIG1pc3Npb246IE1pc3Npb24sXHJcbiAgICApOiBGZWF0dXJlW10ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsRmVhdHVyZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgaGFzaHRhZ0ZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUobWlzc2lvbi5yb2xlKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5sZXZlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkhBU0hUQUcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhZ0ZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRmVhdHVyZXNCeUhhc2h0YWdzQW5kTG9jYWxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaXNzaW9uXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEZlYXR1cmVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==