@smarterplan/ngx-smarterplan-core 1.4.16 → 1.4.18

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 (107) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  10. package/esm2022/lib/config.mjs +1 -1
  11. package/esm2022/lib/helpers.service.mjs +1 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  18. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  19. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  20. package/esm2022/lib/mattertagData.mjs +10 -1
  21. package/esm2022/lib/ngx-smarterplan-core.module.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  23. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  24. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  29. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  30. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  31. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  32. package/esm2022/lib/services/content.service.mjs +1 -1
  33. package/esm2022/lib/services/filter.service.mjs +11 -1
  34. package/esm2022/lib/services/intervention.service.mjs +1 -1
  35. package/esm2022/lib/services/locale.service.mjs +1 -1
  36. package/esm2022/lib/services/matterport-import.service.mjs +10 -3
  37. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-object3d.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +455 -9
  42. package/esm2022/lib/services/matterport-tag.service.mjs +99 -10
  43. package/esm2022/lib/services/matterport.service.mjs +95 -49
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +31 -4
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +14 -13
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +8 -7
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +62 -50
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +25 -2
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +27 -8
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +9 -5
  70. package/esm2022/lib/services/navigator.service.mjs +14 -1
  71. package/esm2022/lib/services/s3.service.mjs +1 -1
  72. package/esm2022/lib/services/search.service.mjs +1 -1
  73. package/esm2022/lib/services/support.service.mjs +1 -1
  74. package/esm2022/lib/services/tag.service.mjs +16 -16
  75. package/esm2022/lib/services/threejs-import.service.mjs +1 -1
  76. package/esm2022/lib/services/threejs.service.mjs +316 -35
  77. package/esm2022/lib/services/user.service.mjs +1 -1
  78. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  79. package/esm2022/lib/services/validators.service.mjs +1 -1
  80. package/esm2022/lib/services/viewer.service.mjs +147 -8
  81. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  82. package/esm2022/lib/services/zoneChange.service.mjs +10 -1
  83. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  84. package/esm2022/lib/types.service.mjs +1 -1
  85. package/esm2022/lib/validators/email.directive.mjs +1 -1
  86. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  87. package/esm2022/lib/validators/number.directive.mjs +1 -1
  88. package/esm2022/lib/validators/text.directive.mjs +1 -1
  89. package/esm2022/public-api.mjs +1 -1
  90. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +5150 -4022
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  92. package/lib/mattertagData.d.ts +4 -0
  93. package/lib/services/matterport-tag-copy.service.d.ts +128 -2
  94. package/lib/services/matterport-tag.service.d.ts +24 -1
  95. package/lib/services/matterport.service.d.ts +12 -3
  96. package/lib/services/models/base-object.service.d.ts +11 -1
  97. package/lib/services/models/equipment.service.d.ts +2 -1
  98. package/lib/services/models/feature.service.d.ts +2 -1
  99. package/lib/services/models/poi.service.d.ts +1 -0
  100. package/lib/services/models/space.service.d.ts +7 -0
  101. package/lib/services/models/ticket.service.d.ts +4 -1
  102. package/lib/services/threejs.service.d.ts +103 -5
  103. package/lib/services/viewer.service.d.ts +39 -1
  104. package/lib/services/zoneChange.service.d.ts +9 -0
  105. package/lib/types.service.d.ts +8 -0
  106. package/package.json +1 -1
  107. package/src/assets/vs-app.json +67 -67
@@ -11,8 +11,9 @@ import * as i3 from "./poi.service";
11
11
  import * as i4 from "./comment.service";
12
12
  import * as i5 from "../user.service";
13
13
  import * as i6 from "./navigation.service";
14
- import * as i7 from "./hashtag.service";
15
- import * as i8 from "../zoneChange.service";
14
+ import * as i7 from "./visit.service";
15
+ import * as i8 from "./hashtag.service";
16
+ import * as i9 from "../zoneChange.service";
16
17
  export class FeatureService extends BaseObjectService {
17
18
  navigatorService;
18
19
  filterService;
@@ -39,8 +40,8 @@ export class FeatureService extends BaseObjectService {
39
40
  currentHashtags = [];
40
41
  createObservable = new Subject();
41
42
  deleteObservable = new Subject();
42
- constructor(apiInjected, navigatorService, filterService, poiService, commentService, userService, navigationService, hashtagService, zoneChangeService) {
43
- super(poiService, navigationService);
43
+ constructor(apiInjected, navigatorService, filterService, poiService, commentService, userService, navigationService, visitService, hashtagService, zoneChangeService) {
44
+ super(poiService, navigationService, visitService);
44
45
  this.navigatorService = navigatorService;
45
46
  this.filterService = filterService;
46
47
  this.commentService = commentService;
@@ -393,7 +394,7 @@ export class FeatureService extends BaseObjectService {
393
394
  zone: this.currentFeatures.zone,
394
395
  }); // for lateral menu
395
396
  }
396
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureService, deps: [{ token: 'currentAPIService' }, { token: i1.NavigatorService }, { token: i2.FilterService }, { token: i3.PoiService }, { token: i4.CommentService }, { token: i5.BaseUserService }, { token: i6.NavigationService }, { token: i7.HashtagService }, { token: i8.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
397
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureService, deps: [{ token: 'currentAPIService' }, { token: i1.NavigatorService }, { token: i2.FilterService }, { token: i3.PoiService }, { token: i4.CommentService }, { token: i5.BaseUserService }, { token: i6.NavigationService }, { token: i7.VisitService }, { token: i8.HashtagService }, { token: i9.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
397
398
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureService, providedIn: "root" });
398
399
  }
399
400
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureService, decorators: [{
@@ -404,5 +405,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
404
405
  }], ctorParameters: () => [{ type: undefined, decorators: [{
405
406
  type: Inject,
406
407
  args: ['currentAPIService']
407
- }] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.PoiService }, { type: i4.CommentService }, { type: i5.BaseUserService }, { type: i6.NavigationService }, { type: i7.HashtagService }, { type: i8.ZoneChangeService }] });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQXlDckM7SUFDQTtJQUVBO0lBQ0E7SUFFQTtJQUNBO0lBL0NaLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixjQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixlQUFlLEdBQTJDO1FBQ3RELEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsV0FBVyxHQUErQixJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztJQUUvRSxlQUFlLEdBQWMsRUFBRSxDQUFDO0lBRWhDLFVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxZQUFZLENBQVM7SUFFckIsY0FBYyxDQUFTO0lBRXZCLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLG1CQUFtQixHQUFhLElBQUksQ0FBQztJQUVyQyxnQkFBZ0IsR0FBYSxJQUFJLENBQUM7SUFFbEMsbUJBQW1CLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFL0MsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUV2QyxnQkFBZ0IsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuRCxnQkFBZ0IsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuRCxZQUNpQyxXQUFnQixFQUNyQyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDcEMsVUFBc0IsRUFDZCxjQUE4QixFQUM5QixXQUE0QixFQUNwQyxpQkFBb0MsRUFDNUIsY0FBOEIsRUFDOUIsaUJBQW9DO1FBRTVDLEtBQUssQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQVQ3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFFNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFHNUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztNQUVFO0lBQ0YsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFnQjtRQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxrQkFBa0I7WUFDbEIsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBVTtRQUN2QixNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFZLENBQUM7UUFDckUsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBR0QsS0FBSyxDQUFDLFlBQVk7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUNoRSxJQUFJLENBQUMsY0FBYyxDQUN0QixDQUFDO1FBQ0YscUNBQXFDO1FBQ3JDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN4QyxJQUFJLHFCQUFxQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDL0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FDakQsQ0FBQztZQUNGLElBQUksYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FDakQsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNSLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3pCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDUCxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDckQsQ0FDUixDQUFDO1lBQ04sQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdEIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNQLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNyRCxDQUNKLENBQUM7WUFDTixDQUFDO1lBQ0QsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDOUIsQ0FBQztZQUNGLHdEQUF3RDtZQUN4RCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsZ0JBQWdCO29CQUNaLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUMxQyxnQkFBZ0IsRUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FDcEIsQ0FBYyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1lBRXpELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQzlCLENBQUM7WUFDRixxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1FBQ3ZFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1FBQzFFLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUNyQixPQUFlLEVBQ2YsZUFBd0IsS0FBSztRQUU3QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ25FLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1FBQ0YsSUFBSSxlQUFlLEdBQ2YsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUN4RCxRQUFRLEVBQ1IsT0FBTyxDQUNWLENBQUM7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQ3BDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQ3pDLENBQUM7UUFDTixDQUFDO1FBQ0QsS0FBSyxNQUFNLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsa0NBQWtDLENBQUMsT0FBZTtRQUNwRCxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2pFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1FBQ0YsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQ3RCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQ3pDLENBQUM7UUFDRixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUFlO1FBQzFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFjLEVBQUUsQ0FBQztRQUMxQixJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBRXBDLEdBQUcsQ0FBQztZQUNBLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNqRCxPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxDQUNaLENBQUM7WUFDRixJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQ0QsU0FBUyxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDO1FBQ3hDLENBQUMsUUFBUSxTQUFTLEVBQUU7UUFFcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWdCO1FBQzNCLE9BQU8sQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9ELENBQUM7SUFHRCxhQUFhLENBQUMsT0FBZ0I7UUFDMUIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMxQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FDNUIsQ0FBQztRQUNGLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDMUMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlGLDBDQUEwQztZQUMxQyxPQUFPLENBQUMsYUFBYSxHQUFHLDhCQUE4QixjQUFjLENBQUMsWUFBWSxRQUFRLENBQUM7WUFDMUYsT0FBTztRQUNYLENBQUM7UUFDRCxJQUNJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQ3RFLENBQUM7WUFDQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzVDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQzFDLENBQUM7WUFDRixPQUFPLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDaEQsQ0FBQztJQUVMLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3ZCLE9BQWdCLEVBQ2hCLE9BQXNCLEVBQ3RCLE9BQWU7UUFFZixNQUFNLFFBQVEsR0FBRztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDekMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzFELFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ3JDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7U0FDbkMsQ0FBQztRQUNULE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3hDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQzlCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWdCO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN4QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7YUFDbkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDL0csS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUMxQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQzthQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ04sSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVzthQUNwQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFnQjtRQUNyQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7YUFDdkMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7YUFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQ2pDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDO2FBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQy9CLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzdCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWdCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQzthQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVTthQUM5QixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN2QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7YUFDeEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUM7YUFDaEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTSxNQUFNLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDVCxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0JBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVU7YUFDL0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFHRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsK0JBQStCLENBQ2pDLE9BQWUsRUFDZixPQUFlLEVBQ2YsYUFBcUIsSUFBSTtRQUV6QixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQ3RCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FDL0MsQ0FBQztRQUNOLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLG1DQUFtQyxDQUNyQyxPQUFlO1FBRWYsSUFBSSxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6RSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLFVBQVUsQ0FBQyxPQUFnQjtRQUN2QixPQUFPLE9BQU8sQ0FBQyxvQkFBb0I7WUFDL0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQ3REO1lBQ0QsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWdCLEVBQUUsUUFBaUI7UUFDM0MsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLG9CQUFvQjtZQUMzQyxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQjtZQUM5QixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV0RSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ2Qsb0JBQW9CLEVBQUUsWUFBWTtTQUNyQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWdCO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztZQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1NBQ2xDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGNBQXVCO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDM0MsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssY0FBYyxDQUFDLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7d0dBdmZRLGNBQWMsa0JBd0NYLG1CQUFtQjs0R0F4Q3RCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBeUNRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNYXR0ZXJ0YWdEYXRhIH0gZnJvbSBcIi4uLy4uL21hdHRlcnRhZ0RhdGFcIjtcbmltcG9ydCB7IEZlYXR1cmUsIEhhc2h0YWcsIEZlYXR1cmVUeXBlLCBDb21tZW50VHlwZSwgUE9JLCBQb2lUeXBlLCBFdmVudCwgTGV2ZWxTdGF0dXMgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gXCIuLi9uYXZpZ2F0b3Iuc2VydmljZVwiO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tIFwiLi9iYXNlLW9iamVjdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gXCIuL2NvbW1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgSGFzaHRhZ1NlcnZpY2UgfSBmcm9tIFwiLi9oYXNodGFnLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vcG9pLnNlcnZpY2VcIjtcbmltcG9ydCB7IFpvbmVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xuICAgIEFQSTogYW55OyAvL0FXU1xuXG4gICAgZmVhdHVyZVVwZGF0ZWQ6IFN1YmplY3Q8e1xuICAgICAgICBzcGFjZTogRmVhdHVyZVtdO1xuICAgICAgICB6b25lOiBGZWF0dXJlW107XG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY3VycmVudEZlYXR1cmVzOiB7IHNwYWNlOiBGZWF0dXJlW107IHpvbmU6IEZlYXR1cmVbXTsgfSA9IHtcbiAgICAgICAgc3BhY2U6IFtdLFxuICAgICAgICB6b25lOiBbXSxcbiAgICB9O1xuXG4gICAgZmVhdHVyZVRhZ3M6IEJlaGF2aW9yU3ViamVjdDxGZWF0dXJlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGZWF0dXJlW10+KG51bGwpO1xuXG4gICAgZmVhdHVyZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBbXTtcblxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgem9uZUlERmlsdGVyOiBzdHJpbmc7XG5cbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xuXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgaXNVcGRhdGluZyA9IGZhbHNlO1xuXG4gICAgZmVhdHVyZURvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xuXG4gICAgZGVza0RvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xuXG4gICAgZGVza0Jvb2tpbmdzVXBkYXRlZDogU3ViamVjdDxFdmVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwdWJsaWMgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcblxuICAgIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgZGVsZXRlT2JzZXJ2YWJsZTogU3ViamVjdDxGZWF0dXJlPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcG9pU2VydmljZTogUG9pU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICAgICAgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGhhc2h0YWdTZXJ2aWNlOiBIYXNodGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5zdWJzY3JpYmUoKGxpc3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzID0gbGlzdDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIgJiYgIXRoaXMudXNlclNlcnZpY2UuaXNNdXNldW1Vc2VyKHRoaXMuY3VycmVudFNwYWNlSUQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZlYXR1cmVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kZWxldGVPYnNlcnZhYmxlLnN1YnNjcmliZSgoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNyZWF0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qXG4gICAgKiBDUlVEXG4gICAgKi9cbiAgICBhc3luYyBjcmVhdGVGZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgICAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUZlYXR1cmUoeyBpZDogZmVhdHVyZS5pZCB9KTtcbiAgICAgICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcbiAgICAgICAgICAgIGlmIChwb2kpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkZWxldGUgY29tbWVudHNcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBkZWxldGVkLmNvbW1lbnRzLml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlRmVhdHVyZShmZWF0dXJlKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uR2V0RmVhdHVyZShpZCkpIGFzIEZlYXR1cmU7XG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xuICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VzKGZlYXR1cmUpO1xuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudHMoZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuc2V0QXVkaW8oZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXRFbWJlZHMoZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuc2V0SWZyYW1lcyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmU7XG4gICAgfVxuXG5cbiAgICBhc3luYyBpbml0RmVhdHVyZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmVhdHVyZUxpc3QgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCk7XG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xuICAgICAgICBpZiAoZmVhdHVyZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmVhdHVyZUxpc3RdO1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgIT09IEZlYXR1cmVUeXBlLkRFU0ssXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS50eXBlID09PSBGZWF0dXJlVHlwZS5ERVNLLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZFBvaW50SW50ZXJlc3QgPSBmaWx0ZXJlZFBvaW50SW50ZXJlc3QuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZG9tYWluICYmIGRvbWFpbiA9PT0gZmVhdHVyZS5kb21haW4uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWREZXNrcyA9IGZpbHRlcmVkRGVza3MuZmlsdGVyKChmZWF0dXJlKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2tEb21haW5GaWx0ZXIuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5kb21haW4gJiYgZG9tYWluID09PSBmZWF0dXJlLmRvbWFpbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9IFsuLi5maWx0ZXJlZFBvaW50SW50ZXJlc3QsIC4uLmZpbHRlcmVkRGVza3NdO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXG4gICAgICAgICAgICAgICAgKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXG4gICAgICAgICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEZlYXR1cmVzID1cbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSA9IGZpbHRlcmVkRmVhdHVyZXMuc29ydChcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RmVhdHVyZXMpO1xuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEZlYXR1cmVzRm9yU3BhY2UoXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcbiAgICAgICAga2VlcEFyY2hpdmVkOiBib29sZWFuID0gZmFsc2UsXG4gICAgKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxuICAgICAgICApO1xuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvckN1cnJlbnRVc2VySW5TcGFjZShcbiAgICAgICAgICAgICAgICBmZWF0dXJlcyxcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxuICAgICAgICAgICAgKTtcbiAgICAgICAgaWYgKCFrZWVwQXJjaGl2ZWQpIHtcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZmVhdHVyZSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlc0ZvclVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzRm9yVXNlcjtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRGZWF0dXJlc0J5U3BhY2VXaXRob3V0RmlsdGVyaW5nKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXG4gICAgICAgICk7XG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxuICAgICAgICAgICAgKGZlYXR1cmUpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZmVhdHVyZSksXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgICAgICAgdGhpcy5zZXRDb3ZlckltYWdlKGZlYXR1cmUpO1xuICAgICAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmVhdHVyZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBFVkVSWSBmZWF0dXJlIG9mIGEgc3BhY2UsIGZvbGxvd2luZyBgbmV4dFRva2VuYCB1bnRpbCB0aGUgaW5kZXggaXNcbiAgICAgKiBleGhhdXN0ZWQsIHdpdGggbm8gdXNlci9hcmNoaXZlIGZpbHRlcmluZyBhdCBhbGwuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWxsRmVhdHVyZXNCeVNwYWNlUmF3KHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XG4gICAgICAgIGlmICghc3BhY2VJRCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbDogRmVhdHVyZVtdID0gW107XG4gICAgICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKFxuICAgICAgICAgICAgICAgIHNwYWNlSUQsXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAxMDAwLFxuICAgICAgICAgICAgICAgIG5leHRUb2tlbixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAocGFnZT8uaXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhbGwucHVzaCguLi5wYWdlLml0ZW1zLmZpbHRlcigoaXRlbTogRmVhdHVyZSB8IG51bGwpID0+ICEhaXRlbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG5cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9XG5cbiAgICBpc0Jvb2tpbmdQbGFjZShmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPSBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0s7XG4gICAgfVxuXG5cbiAgICBzZXRDb3ZlckltYWdlKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgY292ZXJJbWFnZSA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcbiAgICAgICAgICAgIChjb20pID0+IGNvbS5pc0NvdmVySW1hZ2UsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjb3ZlckltYWdlKSB7XG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBjb3ZlckltYWdlLmFubmV4ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKSkge1xuICAgICAgICAgICAgY29uc3QgeW91dHViZUNvbW1lbnQgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpO1xuICAgICAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGUgcHJldmlldyBpbWFnZSBvZiB5b3V0dWJlXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBgaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHt5b3V0dWJlQ29tbWVudC5leHRlcm5hbExpbmt9LzAuanBnYDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcbiAgICAgICAgICAgICAgICAoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gaW1hZ2VDb21tZW50LmFubmV4ZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYXN5bmMgdXBkYXRlRmVhdHVyZUxvY2F0aW9uKFxuICAgICAgICBmZWF0dXJlOiBGZWF0dXJlLFxuICAgICAgICB0YWdEYXRhOiBNYXR0ZXJ0YWdEYXRhLFxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxQT0k+IHtcbiAgICAgICAgY29uc3QgcG9pSW5wdXQgPSB7XG4gICAgICAgICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPyBQb2lUeXBlLkRFU0sgOiBQb2lUeXBlLkRBVEEsXG4gICAgICAgICAgICBlbGVtZW50SUQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxuICAgICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxuICAgICAgICB9IGFzIFBPSTtcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xuICAgICAgICByZXR1cm4gcG9pO1xuICAgIH1cblxuICAgIHNldEltYWdlcyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGltYWdlc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgICBjb25zdCBpbWFnZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBpbWFnZXNDb21tZW50cykge1xuICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IGltYWdlLmFubmV4ZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaW1hZ2Uuc2hvd25JblRhZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuaW1hZ2VzID0gaW1hZ2VzO1xuICAgIH1cblxuICAgIHNldFZpZGVvcyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IHZpZGVvc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVklERU8gfHwgY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgICBjb25zdCB2aWRlb3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB2aWRlbyBvZiB2aWRlb3NDb21tZW50cykge1xuICAgICAgICAgICAgdmlkZW9zLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IHZpZGVvLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUgPyAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJyArIHZpZGVvLmV4dGVybmFsTGluayA6IHZpZGVvLmFubmV4ZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdmlkZW8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHZpZGVvLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHR5cGU6IHZpZGVvLnR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmZWF0dXJlLnZpZGVvcyA9IHZpZGVvcztcbiAgICB9XG5cbiAgICBzZXREb2N1bWVudHMoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRE9DVU1FTlQpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgICBjb25zdCBkb2NzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9jdW1lbnRDb21tZW50cykge1xuICAgICAgICAgICAgZG9jcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2N1bWVudC5hbm5leGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkb2N1bWVudC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuZG9jdW1lbnRzID0gZG9jcztcbiAgICB9XG5cbiAgICBzZXRBdWRpbyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5BVURJTylcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICAgIGNvbnN0IGF1ZGlvcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGF1ZGlvIG9mIGF1ZGlvQ29tbWVudHMpIHtcbiAgICAgICAgICAgIGF1ZGlvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBhdWRpby5hbm5leGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGF1ZGlvLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdWRpby5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuYXVkaW9zID0gYXVkaW9zO1xuICAgIH1cblxuICAgIHNldEV4dGVybmFsTGlua3MoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBsaW5rc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVVJMKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3NDb21tZW50cykge1xuICAgICAgICAgICAgZXh0ZXJuYWxMaW5rcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBsaW5rLmV4dGVybmFsTGluayxcbiAgICAgICAgICAgICAgICB0aXRsZTogbGluay50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGluay5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGxpbmsuc2hvd25JblRhZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuZXh0ZXJuYWxMaW5rcyA9IGV4dGVybmFsTGlua3M7XG4gICAgfVxuXG4gICAgc2V0RW1iZWRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgZW1iZWRDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkVNQkVEKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgICAgY29uc3QgZW1iZWRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZW1iZWQgb2YgZW1iZWRDb21tZW50cykge1xuICAgICAgICAgICAgZW1iZWRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IGVtYmVkLmV4dGVybmFsTGluayxcbiAgICAgICAgICAgICAgICB0aXRsZTogZW1iZWQudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVtYmVkLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogZW1iZWQuc2hvd25JblRhZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuZW1iZWRzID0gZW1iZWRzO1xuICAgIH1cblxuICAgIHNldElmcmFtZXMoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBpZnJhbWVDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklGUkFNRSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICAgIGNvbnN0IGlmcmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpZnJhbWUgb2YgaWZyYW1lQ29tbWVudHMpIHtcbiAgICAgICAgICAgIGlmcmFtZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0aDogaWZyYW1lLmV4dGVybmFsTGluayxcbiAgICAgICAgICAgICAgICB0aXRsZTogaWZyYW1lLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpZnJhbWUuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpZnJhbWUuc2hvd25JblRhZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUuaWZyYW1lcyA9IGlmcmFtZXM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBnZXRGaXJzdEZlYXR1cmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gZmVhdHVyZXMuZmluZCgoZmVhdCkgPT4gZmVhdC5pbmRleCA9PT0gMSk7XG4gICAgICAgIHJldHVybiBmaXJzdDtcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVJY29uRm9yQWxsRmVhdHVyZXNJblNwYWNlKFxuICAgICAgICB0YWdJY29uOiBzdHJpbmcsXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcbiAgICAgICAgY2F0ZWdvcnlJRDogc3RyaW5nID0gbnVsbCxcbiAgICApOiBQcm9taXNlPHsgZmVhdHVyZXM6IEZlYXR1cmVbXTsgcG9pczogUE9JW107IH0+IHtcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICBpZiAoY2F0ZWdvcnlJRCkge1xuICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUuZG9tYWluSUQgPT09IGNhdGVnb3J5SUQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaXMgPSBhd2FpdCB0aGlzLnVwZGF0ZUljb25Gb3JBbGxPYmplY3RzKGZlYXR1cmVzLCB0YWdJY29uKTtcbiAgICAgICAgcmV0dXJuIHsgZmVhdHVyZXMsIHBvaXMgfTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRDcmVhdGVkSW5kaWNlc0ZvckZlYXR1cmVzSW5TcGFjZShcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xuICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pbmRleCk7XG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXQpID0+IGZlYXQuaW5kZXgpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldERlc2tzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5maWx0ZXIoKGZlYXQpID0+IGZlYXQuaXNCb29raW5nUGxhY2UpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIGZlYXR1cmUgKi9cbiAgICBpc0FyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIHNldEFyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUsIGFyY2hpdmVkOiBib29sZWFuKSB7XG4gICAgICAgIGxldCBhcmNoaXZlZExpc3QgPSBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgICAgICAgIDogW107XG4gICAgICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZDtcblxuICAgICAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xuXG4gICAgICAgIGlmIChhcmNoaXZlZCkge1xuICAgICAgICAgICAgYXJjaGl2ZWRMaXN0LnB1c2gobWlzc2lvbklEKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUZlYXR1cmUoe1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBhcmNoaXZlZEZvck1pc3Npb25JRDogYXJjaGl2ZWRMaXN0LFxuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvQ3JlYXRlKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UudW5zaGlmdChmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS51bnNoaWZ0KGZlYXR1cmUpO1xuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuZmluZChcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxuICAgICAgICApO1xuICAgICAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5pbmRleE9mKGZlYXR1cmUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB6b25lRmVhdHVyZSA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuZmluZChcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxuICAgICAgICApO1xuICAgICAgICBpZiAoem9uZUZlYXR1cmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5pbmRleE9mKHpvbmVGZWF0dXJlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgICB9XG59XG4iXX0=
408
+ }] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.PoiService }, { type: i4.CommentService }, { type: i5.BaseUserService }, { type: i6.NavigationService }, { type: i7.VisitService }, { type: i8.HashtagService }, { type: i9.ZoneChangeService }] });
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFXMUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUF5Q3JDO0lBQ0E7SUFFQTtJQUNBO0lBR0E7SUFDQTtJQWhEWixHQUFHLENBQU0sQ0FBQyxLQUFLO0lBRWYsY0FBYyxHQUdULElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkIsZUFBZSxHQUEyQztRQUN0RCxLQUFLLEVBQUUsRUFBRTtRQUNULElBQUksRUFBRSxFQUFFO0tBQ1gsQ0FBQztJQUVGLFdBQVcsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFL0UsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxVQUFVLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0MsWUFBWSxDQUFTO0lBRXJCLGNBQWMsQ0FBUztJQUV2QixRQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFM0MsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVuQixtQkFBbUIsR0FBYSxJQUFJLENBQUM7SUFFckMsZ0JBQWdCLEdBQWEsSUFBSSxDQUFDO0lBRWxDLG1CQUFtQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRS9DLGVBQWUsR0FBYyxFQUFFLENBQUM7SUFFdkMsZ0JBQWdCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkQsZ0JBQWdCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkQsWUFDaUMsV0FBZ0IsRUFDckMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQ3BDLFVBQXNCLEVBQ2QsY0FBOEIsRUFDOUIsV0FBNEIsRUFDcEMsaUJBQW9DLEVBQ3BDLFlBQTBCLEVBQ2xCLGNBQThCLEVBQzlCLGlCQUFvQztRQUU1QyxLQUFLLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBVjNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUc1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUc1QyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7WUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM5RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O01BRUU7SUFDRixLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELGtCQUFrQjtZQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQVksQ0FBQztRQUNyRSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFHRCxLQUFLLENBQUMsWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQ2hFLElBQUksQ0FBQyxjQUFjLENBQ3RCLENBQUM7UUFDRixxQ0FBcUM7UUFDckMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLElBQUkscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUMvQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSSxDQUNqRCxDQUFDO1lBQ0YsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUN2QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSSxDQUNqRCxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDM0IscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUNoRCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDekIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNQLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNyRCxDQUNSLENBQUM7WUFDTixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1AsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3JELENBQ0osQ0FBQztZQUNOLENBQUM7WUFDRCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzlDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUM5QixDQUFDO1lBQ0Ysd0RBQXdEO1lBQ3hELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixnQkFBZ0I7b0JBQ1osQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzFDLGdCQUFnQixFQUNoQixJQUFJLENBQUMsWUFBWSxDQUNwQixDQUFjLENBQUM7WUFDeEIsQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7WUFFekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUM3QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDOUIsQ0FBQztZQUNGLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7UUFDMUUsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQ3JCLE9BQWUsRUFDZixlQUF3QixLQUFLO1FBRTdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7UUFDRixJQUFJLGVBQWUsR0FDZixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsbUNBQW1DLENBQ3hELFFBQVEsRUFDUixPQUFPLENBQ1YsQ0FBQztRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FDekMsQ0FBQztRQUNOLENBQUM7UUFDRCxLQUFLLE1BQU0sT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFlO1FBQ3BELElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDakUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7UUFDRixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FDekMsQ0FBQztRQUNGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLHdCQUF3QixDQUFDLE9BQWU7UUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQWMsRUFBRSxDQUFDO1FBQzFCLElBQUksU0FBUyxHQUFrQixJQUFJLENBQUM7UUFFcEMsR0FBRyxDQUFDO1lBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ2pELE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLENBQ1osQ0FBQztZQUNGLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxTQUFTLEdBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDeEMsQ0FBQyxRQUFRLFNBQVMsRUFBRTtRQUVwQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZ0I7UUFDM0IsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0QsQ0FBQztJQUdELGFBQWEsQ0FBQyxPQUFnQjtRQUMxQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUM1QixDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMxQyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUYsMENBQTBDO1lBQzFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsOEJBQThCLGNBQWMsQ0FBQyxZQUFZLFFBQVEsQ0FBQztZQUMxRixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQ0ksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDdEUsQ0FBQztZQUNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDNUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FDMUMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNoRCxDQUFDO0lBRUwsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FDdkIsT0FBZ0IsRUFDaEIsT0FBc0IsRUFDdEIsT0FBZTtRQUVmLE1BQU0sUUFBUSxHQUFHO1lBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDMUQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDckMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtTQUNuQyxDQUFDO1FBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFnQjtRQUN0QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7YUFDeEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7YUFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDOUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3hDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNuRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUMvRyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ25CLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWdCO1FBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQzFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO2FBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDTixJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3JCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO2FBQ3BDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWdCO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQzthQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDakMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUM3QixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7YUFDdkMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDN0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7WUFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDN0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQzlCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN4QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQzthQUNoRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNULElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQy9CLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVTthQUMvQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUdELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFlO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQywrQkFBK0IsQ0FDakMsT0FBZSxFQUNmLE9BQWUsRUFDZixhQUFxQixJQUFJO1FBRXpCLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUMvQyxDQUFDO1FBQ04sQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsbUNBQW1DLENBQ3JDLE9BQWU7UUFFZixJQUFJLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pFLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLG9CQUFvQjtZQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FDdEQ7WUFDRCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZ0IsRUFBRSxRQUFpQjtRQUMzQyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsb0JBQW9CO1lBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CO1lBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXRFLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDZCxvQkFBb0IsRUFBRSxZQUFZO1NBQ3JDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBZ0I7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsY0FBdUI7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMzQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzlDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQ2xELENBQUM7UUFDRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtTQUNsQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0IsQ0FBQzt3R0F4ZlEsY0FBYyxrQkF3Q1gsbUJBQW1COzRHQXhDdEIsY0FBYyxjQUZYLE1BQU07OzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkF5Q1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTWF0dGVydGFnRGF0YSB9IGZyb20gXCIuLi8uLi9tYXR0ZXJ0YWdEYXRhXCI7XHJcbmltcG9ydCB7IEZlYXR1cmUsIEhhc2h0YWcsIEZlYXR1cmVUeXBlLCBDb21tZW50VHlwZSwgUE9JLCBQb2lUeXBlLCBFdmVudCwgTGV2ZWxTdGF0dXMgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2ZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tIFwiLi4vbmF2aWdhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlT2JqZWN0U2VydmljZSB9IGZyb20gXCIuL2Jhc2Utb2JqZWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9jb21tZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSGFzaHRhZ1NlcnZpY2UgfSBmcm9tIFwiLi9oYXNodGFnLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9uYXZpZ2F0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gXCIuL3BvaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFZpc2l0U2VydmljZSB9IGZyb20gXCIuL3Zpc2l0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgZmVhdHVyZVVwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgICAgIHNwYWNlOiBGZWF0dXJlW107XHJcbiAgICAgICAgem9uZTogRmVhdHVyZVtdO1xyXG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGN1cnJlbnRGZWF0dXJlczogeyBzcGFjZTogRmVhdHVyZVtdOyB6b25lOiBGZWF0dXJlW107IH0gPSB7XHJcbiAgICAgICAgc3BhY2U6IFtdLFxyXG4gICAgICAgIHpvbmU6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBmZWF0dXJlVGFnczogQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVbXT4obnVsbCk7XHJcblxyXG4gICAgZmVhdHVyZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBbXTtcclxuXHJcbiAgICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICAgIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBpc1VwZGF0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgZmVhdHVyZURvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tEb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcclxuXHJcbiAgICBkZXNrQm9va2luZ3NVcGRhdGVkOiBTdWJqZWN0PEV2ZW50W10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBwdWJsaWMgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcclxuXHJcbiAgICBjcmVhdGVPYnNlcnZhYmxlOiBTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBkZWxldGVPYnNlcnZhYmxlOiBTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgICAgICBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBoYXNodGFnU2VydmljZTogSGFzaHRhZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSwgdmlzaXRTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyICYmICF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiBDUlVEXHJcbiAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xyXG4gICAgICAgIGlmIChkZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcclxuICAgICAgICAgICAgaWYgKHBvaSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgZGVsZXRlZC5jb21tZW50cy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldEZlYXR1cmUoaWQpKSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEF1ZGlvKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldElmcmFtZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgaW5pdEZlYXR1cmVzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVMaXN0ID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xyXG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZlYXR1cmVMaXN0XTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNrRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmlsdGVyZWRQb2ludEludGVyZXN0LCAuLi5maWx0ZXJlZERlc2tzXTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0ZvclNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICgha2VlcEFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlc0ZvclVzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNCeVNwYWNlV2l0aG91dEZpbHRlcmluZyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgRVZFUlkgZmVhdHVyZSBvZiBhIHNwYWNlLCBmb2xsb3dpbmcgYG5leHRUb2tlbmAgdW50aWwgdGhlIGluZGV4IGlzXHJcbiAgICAgKiBleGhhdXN0ZWQsIHdpdGggbm8gdXNlci9hcmNoaXZlIGZpbHRlcmluZyBhdCBhbGwuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldEFsbEZlYXR1cmVzQnlTcGFjZVJhdyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFsbDogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2UoXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgMTAwMCxcclxuICAgICAgICAgICAgICAgIG5leHRUb2tlbixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2U/Lml0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBhbGwucHVzaCguLi5wYWdlLml0ZW1zLmZpbHRlcigoaXRlbTogRmVhdHVyZSB8IG51bGwpID0+ICEhaXRlbSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5leHRUb2tlbiA9IHBhZ2U/Lm5leHRUb2tlbiA/PyBudWxsO1xyXG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XHJcblxyXG4gICAgICAgIHJldHVybiBhbGw7XHJcbiAgICB9XHJcblxyXG4gICAgaXNCb29raW5nUGxhY2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPSBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNldENvdmVySW1hZ2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGNvdmVySW1hZ2UgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgIChjb20pID0+IGNvbS5pc0NvdmVySW1hZ2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY292ZXJJbWFnZSkge1xyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBjb3ZlckltYWdlLmFubmV4ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKSkge1xyXG4gICAgICAgICAgICBjb25zdCB5b3V0dWJlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZCgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSk7XHJcbiAgICAgICAgICAgIC8vIHdlIGNhbiB1c2UgdGhlIHByZXZpZXcgaW1hZ2Ugb2YgeW91dHViZVxyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBgaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHt5b3V0dWJlQ29tbWVudC5leHRlcm5hbExpbmt9LzAuanBnYDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcclxuICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gaW1hZ2VDb21tZW50LmFubmV4ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmVMb2NhdGlvbihcclxuICAgICAgICBmZWF0dXJlOiBGZWF0dXJlLFxyXG4gICAgICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGEsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxQT0k+IHtcclxuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPyBQb2lUeXBlLkRFU0sgOiBQb2lUeXBlLkRBVEEsXHJcbiAgICAgICAgICAgIGVsZW1lbnRJRDogZmVhdHVyZS5pZCxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcclxuICAgICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgIH0gYXMgUE9JO1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgICAgICByZXR1cm4gcG9pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEltYWdlcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogaW1hZ2UuYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpbWFnZS5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5pbWFnZXMgPSBpbWFnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VmlkZW9zKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCB2aWRlb3NDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVklERU8gfHwgY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCB2aWRlbyBvZiB2aWRlb3NDb21tZW50cykge1xyXG4gICAgICAgICAgICB2aWRlb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiB2aWRlby50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFID8gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLycgKyB2aWRlby5leHRlcm5hbExpbmsgOiB2aWRlby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdmlkZW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmlkZW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICB0eXBlOiB2aWRlby50eXBlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS52aWRlb3MgPSB2aWRlb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RG9jdW1lbnRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBkb2N1bWVudENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ET0NVTUVOVClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2NzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb2N1bWVudENvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGRvY3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2N1bWVudC5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZG9jdW1lbnQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmRvY3VtZW50cyA9IGRvY3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXVkaW8oZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkFVRElPKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgYXVkaW8gb2YgYXVkaW9Db21tZW50cykge1xyXG4gICAgICAgICAgICBhdWRpb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBhdWRpby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogYXVkaW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmF1ZGlvcyA9IGF1ZGlvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRFeHRlcm5hbExpbmtzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBsaW5rc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5VUkwpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVybmFsTGlua3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBsaW5rLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaW5rLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxpbmsuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGxpbmsuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZXh0ZXJuYWxMaW5rcyA9IGV4dGVybmFsTGlua3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RW1iZWRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBlbWJlZENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5FTUJFRClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBlbWJlZHMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtYmVkIG9mIGVtYmVkQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgZW1iZWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogZW1iZWQuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGVtYmVkLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVtYmVkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBlbWJlZC5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5lbWJlZHMgPSBlbWJlZHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SWZyYW1lcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklGUkFNRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBpZnJhbWVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpZnJhbWUgb2YgaWZyYW1lQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaWZyYW1lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGlmcmFtZS5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaWZyYW1lLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlmcmFtZS5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaWZyYW1lLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmlmcmFtZXMgPSBpZnJhbWVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyBnZXRGaXJzdEZlYXR1cmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBmaXJzdCA9IGZlYXR1cmVzLmZpbmQoKGZlYXQpID0+IGZlYXQuaW5kZXggPT09IDEpO1xyXG4gICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVJY29uRm9yQWxsRmVhdHVyZXNJblNwYWNlKFxyXG4gICAgICAgIHRhZ0ljb246IHN0cmluZyxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgY2F0ZWdvcnlJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICk6IFByb21pc2U8eyBmZWF0dXJlczogRmVhdHVyZVtdOyBwb2lzOiBQT0lbXTsgfT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAoY2F0ZWdvcnlJRCkge1xyXG4gICAgICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLmRvbWFpbklEID09PSBjYXRlZ29yeUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwb2lzID0gYXdhaXQgdGhpcy51cGRhdGVJY29uRm9yQWxsT2JqZWN0cyhmZWF0dXJlcywgdGFnSWNvbik7XHJcbiAgICAgICAgcmV0dXJuIHsgZmVhdHVyZXMsIHBvaXMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRDcmVhdGVkSW5kaWNlc0ZvckZlYXR1cmVzSW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPG51bWJlcltdPiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXREZXNrc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pc0Jvb2tpbmdQbGFjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgZmVhdHVyZSAqL1xyXG4gICAgaXNBcmNoaXZlZChmZWF0dXJlOiBGZWF0dXJlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQ7XHJcblxyXG4gICAgICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XHJcblxyXG4gICAgICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICAgICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlRmVhdHVyZSh7XHJcbiAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICBhcmNoaXZlZEZvck1pc3Npb25JRDogYXJjaGl2ZWRMaXN0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyB1cGRhdGVEdWVUb0NyZWF0ZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UudW5zaGlmdChmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnVuc2hpZnQoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9EZWxldGUoZGVsZXRlZEZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuZmluZChcclxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmluZGV4T2YoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHpvbmVGZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5maW5kKFxyXG4gICAgICAgICAgICAoX2ZlYXR1cmUpID0+IF9mZWF0dXJlLmlkID09PSBkZWxldGVkRmVhdHVyZS5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh6b25lRmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuaW5kZXhPZih6b25lRmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
64
64
  type: Inject,
65
65
  args: ['currentAPIService']
66
66
  }] }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaHRhZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvaGFzaHRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjLENBQVM7SUFFdkIsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxHQUFHLENBQU07SUFFVCxZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBRUgsa0VBQWtFO0lBQ2xFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBa0IsSUFBSTtRQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0FsRVEsY0FBYyxrQkFPSCxtQkFBbUI7NEdBUDlCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEhhc2h0YWcsIE5vZGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIEhhc2h0YWdTZXJ2aWNlIHtcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xuXG4gICAgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcblxuICAgIEFQSTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55KSB7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SGFzaHRhZyhoYXNodGFnSUQ6IHN0cmluZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEhhc2h0YWcoaGFzaHRhZ0lEKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFB1cmUgZGF0YSBhY2Nlc3Mg4oCUIE5PIHNpZGUgZWZmZWN0IG9uIGN1cnJlbnRIYXNodGFncyAvIGN1cnJlbnRTcGFjZUlELlxuICAgICAqXG4gICAgICogYGN1cnJlbnRIYXNodGFnc2AgaXMgc2hhcmVkIFVJIHN0YXRlIHJlYWQgYnkgSGFzaHRhZ0Zyb21JZFBpcGUgdG8gcmVuZGVyIGFcbiAgICAgKiBrZXl3b3JkJ3MgbmFtZS4gQmF0Y2ggd29yayAoc3BhY2UgZHVwbGljYXRpb24sIGV4cG9ydCwgYWRtaW4gdG9vbGluZykgdG91Y2hlc1xuICAgICAqIGhhc2h0YWdzIG9mIHNwYWNlcyB0aGUgb3BlcmF0b3IgaXMgbm90IGVkaXRpbmcsIGFuZCBtdXN0IG5vdCByZXNoYXBlIHdoYXQgdGhlXG4gICAgICogc2NyZWVucyBhcmUgZGlzcGxheWluZyDigJQgaGVuY2UgdGhpcyBzaWRlLWVmZmVjdC1mcmVlIHRyaW8uXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICovXG5cbiAgICAvKiogUmVhZHMgYSBzcGFjZSdzIGtleXdvcmRzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHNoYXJlZCBjYWNoZS4gKi9cbiAgICBhc3luYyBsaXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkhhc2h0YWdzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBhIGtleXdvcmQgaW4gYSBzcGFjZSB3aXRob3V0IGFkZGluZyBpdCB0byB0aGUgc2hhcmVkIGNhY2hlLiAqL1xuICAgIGFzeW5jIGNyZWF0ZUhhc2h0YWdGb3JTcGFjZShuYW1lOiBzdHJpbmcsIHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUhhc2h0YWcoeyBuYW1lLCBzcGFjZUlEIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWxldGVzIGEga2V5d29yZCB3aXRob3V0IHRvdWNoaW5nIHRoZSBzaGFyZWQgY2FjaGUuICovXG4gICAgYXN5bmMgZGVsZXRlSGFzaHRhZ0J5SWQoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVIYXNodGFnKHsgaWQ6IGhhc2h0YWdJRCB9KTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFVJLWZhY2luZyBvcGVyYXRpb25zIOKAlCBzYW1lIGFjdGlvbnMsIHBsdXMgbWFpbnRlbmFuY2Ugb2YgdGhlIHNoYXJlZCBjYWNoZS5cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKi9cblxuICAgIGFzeW5jIGNyZWF0ZUhhc2h0YWcoaGFzaHRhZzogSGFzaHRhZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICBjb25zdCBoYXNodGFnQ3JlYXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVIYXNodGFnKGhhc2h0YWcpO1xuICAgICAgICB0aGlzLmN1cnJlbnRIYXNodGFncy5wdXNoKGhhc2h0YWdDcmVhdGVkKTtcbiAgICAgICAgcmV0dXJuIGhhc2h0YWdDcmVhdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEhhc2h0YWdzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IFByb21pc2U8SGFzaHRhZ1tdPiB7XG4gICAgICAgIGlmICghc3BhY2VJRCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEhhc2h0YWdzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5IYXNodGFnc0J5U3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEhhc2h0YWdzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEKTtcbiAgICB9XG59Il19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaHRhZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvaGFzaHRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjLENBQVM7SUFFdkIsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxHQUFHLENBQU07SUFFVCxZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBRUgsa0VBQWtFO0lBQ2xFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBa0IsSUFBSTtRQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0FsRVEsY0FBYyxrQkFPSCxtQkFBbUI7NEdBUDlCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSGFzaHRhZywgTm9kZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEhhc2h0YWdTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcclxuXHJcbiAgICBBUEk6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEhhc2h0YWcoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEhhc2h0YWcoaGFzaHRhZ0lEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgKiBQdXJlIGRhdGEgYWNjZXNzIOKAlCBOTyBzaWRlIGVmZmVjdCBvbiBjdXJyZW50SGFzaHRhZ3MgLyBjdXJyZW50U3BhY2VJRC5cclxuICAgICAqXHJcbiAgICAgKiBgY3VycmVudEhhc2h0YWdzYCBpcyBzaGFyZWQgVUkgc3RhdGUgcmVhZCBieSBIYXNodGFnRnJvbUlkUGlwZSB0byByZW5kZXIgYVxyXG4gICAgICoga2V5d29yZCdzIG5hbWUuIEJhdGNoIHdvcmsgKHNwYWNlIGR1cGxpY2F0aW9uLCBleHBvcnQsIGFkbWluIHRvb2xpbmcpIHRvdWNoZXNcclxuICAgICAqIGhhc2h0YWdzIG9mIHNwYWNlcyB0aGUgb3BlcmF0b3IgaXMgbm90IGVkaXRpbmcsIGFuZCBtdXN0IG5vdCByZXNoYXBlIHdoYXQgdGhlXHJcbiAgICAgKiBzY3JlZW5zIGFyZSBkaXNwbGF5aW5nIOKAlCBoZW5jZSB0aGlzIHNpZGUtZWZmZWN0LWZyZWUgdHJpby5cclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICovXHJcblxyXG4gICAgLyoqIFJlYWRzIGEgc3BhY2UncyBrZXl3b3JkcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBzaGFyZWQgY2FjaGUuICovXHJcbiAgICBhc3luYyBsaXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWdbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uSGFzaHRhZ3NCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ3JlYXRlcyBhIGtleXdvcmQgaW4gYSBzcGFjZSB3aXRob3V0IGFkZGluZyBpdCB0byB0aGUgc2hhcmVkIGNhY2hlLiAqL1xyXG4gICAgYXN5bmMgY3JlYXRlSGFzaHRhZ0ZvclNwYWNlKG5hbWU6IHN0cmluZywgc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxIYXNodGFnPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVIYXNodGFnKHsgbmFtZSwgc3BhY2VJRCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRGVsZXRlcyBhIGtleXdvcmQgd2l0aG91dCB0b3VjaGluZyB0aGUgc2hhcmVkIGNhY2hlLiAqL1xyXG4gICAgYXN5bmMgZGVsZXRlSGFzaHRhZ0J5SWQoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUhhc2h0YWcoeyBpZDogaGFzaHRhZ0lEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAqIFVJLWZhY2luZyBvcGVyYXRpb25zIOKAlCBzYW1lIGFjdGlvbnMsIHBsdXMgbWFpbnRlbmFuY2Ugb2YgdGhlIHNoYXJlZCBjYWNoZS5cclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICovXHJcblxyXG4gICAgYXN5bmMgY3JlYXRlSGFzaHRhZyhoYXNodGFnOiBIYXNodGFnKTogUHJvbWlzZTxIYXNodGFnPiB7XHJcbiAgICAgICAgY29uc3QgaGFzaHRhZ0NyZWF0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlSGFzaHRhZyhoYXNodGFnKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIYXNodGFncy5wdXNoKGhhc2h0YWdDcmVhdGVkKTtcclxuICAgICAgICByZXR1cm4gaGFzaHRhZ0NyZWF0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogUHJvbWlzZTxIYXNodGFnW10+IHtcclxuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEhhc2h0YWdzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkhhc2h0YWdzQnlTcGFjZSh0aGlzLmN1cnJlbnRTcGFjZUlEKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRIYXNodGFncztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdEhhc2h0YWdzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
31
31
  type: Inject,
32
32
  args: ['currentAPIService']
33
33
  }] }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2xheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM1QixTQUFpQixFQUNqQixLQUFhO1FBRWIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsY0FBYyxFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDaEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3hELElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUU7U0FDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBekJRLFlBQVksa0JBR0QsbUJBQW1COzRHQUg5QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJTZXJ2aWNlIHtcbiAgICBBUEk6IGFueTsgLy9BV1NcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldExheWVyRm9yT3JnYW5pc2F0aW9uKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPExheWVyW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MYXllcnNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlTGF5ZXJGb3JPcmdhbmlzYXRpb24oXG4gICAgICAgIGxheWVyTmFtZTogc3RyaW5nLFxuICAgICAgICBvcmdJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TGF5ZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVMYXllcih7XG4gICAgICAgICAgICBuYW1lOiBsYXllck5hbWUudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBvcmdJRCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24obGF5ZXJOYW1lOiBzdHJpbmcsIG9yZ0lEOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MYXllcnNCeU9yZ2FuaXNhdGlvbihvcmdJRCwgbnVsbCwge1xuICAgICAgICAgICAgbmFtZTogeyBlcTogbGF5ZXJOYW1lLnRvVXBwZXJDYXNlKCkgfSxcbiAgICAgICAgfSkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XG4gICAgfVxufSJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2xheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM1QixTQUFpQixFQUNqQixLQUFhO1FBRWIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsY0FBYyxFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDaEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3hELElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUU7U0FDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBekJRLFlBQVksa0JBR0QsbUJBQW1COzRHQUg5QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5ZXJTZXJ2aWNlIHtcclxuICAgIEFQSTogYW55OyAvL0FXU1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TGF5ZXJGb3JPcmdhbmlzYXRpb24ob3JnSUQ6IHN0cmluZyk6IFByb21pc2U8TGF5ZXJbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGF5ZXJzQnlPcmdhbmlzYXRpb24ob3JnSUQpLnRoZW4oKGxpc3QpID0+IGxpc3QuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZUxheWVyRm9yT3JnYW5pc2F0aW9uKFxyXG4gICAgICAgIGxheWVyTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPExheWVyPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVMYXllcih7XHJcbiAgICAgICAgICAgIG5hbWU6IGxheWVyTmFtZS50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICBvcmdhbmlzYXRpb25JRDogb3JnSUQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24obGF5ZXJOYW1lOiBzdHJpbmcsIG9yZ0lEOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkxheWVyc0J5T3JnYW5pc2F0aW9uKG9yZ0lELCBudWxsLCB7XHJcbiAgICAgICAgICAgIG5hbWU6IHsgZXE6IGxheWVyTmFtZS50b1VwcGVyQ2FzZSgpIH0sXHJcbiAgICAgICAgfSkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -216,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
216
216
  type: Inject,
217
217
  args: ['currentAwsKinesisAnalyticsService']
218
218
  }] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.ZoneChangeService }, { type: i7.NavigationService }] });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFlLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUcvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyxrQkFBa0I7SUFzQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBM0NWLElBQUksR0FBRyxlQUFlLENBQUM7SUFFdkIsbUJBQW1CLEdBR2YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU1QixnQkFBZ0IsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFcEYsbUJBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixjQUFjLENBQVM7SUFFdkIsWUFBWSxDQUFTO0lBRXJCLFVBQVUsQ0FBUztJQUVuQixpQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFFekYsVUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsQ0FBTSxDQUFDLEtBQUs7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRW5CLFFBQVEsR0FBRyxJQUFJ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QUFDLEdBQUcsQ0FDZixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxXQUFXLEdBQ2YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTNQVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7NEdBcENsQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVtZW50U2VydmljZSB7XG4gIHBhdGggPSAnbWVhc3VyZW1lbnRzLyc7XG5cbiAgY3VycmVudE1lYXN1cmVtZW50czoge1xuICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XG4gIH0gPSB7IHNwYWNlOiBbXSwgem9uZTogW10gfTtcblxuICBtZWFzdXJlbWVudHNUYWdzOiBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihudWxsKTtcblxuICBtZWFzdXJlbWVudHNVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xuICB9PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcblxuICBkYXRlRmlsdGVyOiBEYXRlW107XG5cbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcblxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXG4gICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlOiBDb21tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XG4gICAgaWYgKCFpc011c2V1bVVzZXIpIHtcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudEZpbHRlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVSYW5nZTtcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IHRoaXMuZmlsdGVyU2VydmljZS5jdXJyZW50RGF0ZUZpbHRlcjtcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xuICAgIH1cblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcbiAgICAgIGlmIChmbG9vcikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcbiAgICAgICk7XG4gICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMsXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICAvLyBlbWl0IG9uIHRhZ3Mgc2hvdWxkIGJlIGFmdGVyIHNldHRpbmcgY3VycmVudC5zcGFjZSAhIVxuXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IGNvbW1lbnRzWm9uZSA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcbiAgICAgICAgICAgIG1lYXN1cmVtZW50cy5tYXAoKG1lYXN1cmUpID0+IG1lYXN1cmUuY29tbWVudCksXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxuICAgICAgICAgICk7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG1lYXN1cmVtZW50cy5tYXAoKG0pID0+IG0uY29tbWVudCkpO1xuXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGEuY29tbWVudC5jcmVhdGVkQXQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xuICAgIGNvbnN0IGRlbGV0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KFxuICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZFxuICAgICk7XG4gICAgaWYgKGRlbGV0ZWRDb21tZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKG1lYXN1cmVtZW50LnBvaS5pZCk7XG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xuICAgICAgY29uc3QgcGF0aCA9IGAke3RoaXMucGF0aCArIHByZWZpeH1tZXN1cmUuanBlZ2A7XG4gICAgICBhd2FpdCBkZWxldGVGcm9tUzMocGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBkZWxldGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU1lYXN1cmVtZW50Rm9yU3BhY2UoXG4gICAgY29tbWVudElucHV0OiBDb21tZW50LFxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcbiAgICBzY3JlZW5zaG90OiBhbnksXG4gICAgc3BhY2VJRDogc3RyaW5nXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcbiAgICBjb25zdCBsYXN0TWVhc3VyZSA9IGRhdGFNZWFzdXJlbWVudHMubWVhc3VyZTtcbiAgICBjb25zdCBzd2VlcElEID0gZGF0YU1lYXN1cmVtZW50cy5zd2VlcDtcbiAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcbiAgICBsZXQgY29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlQ29tbWVudChjb21tZW50SW5wdXQpO1xuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB4OiBsYXN0UG9pbnQueCxcbiAgICAgICAgeTogbGFzdFBvaW50LnksXG4gICAgICAgIHo6IGxhc3RQb2ludC56LFxuICAgICAgfSksXG4gICAgICB0eXBlOiBQb2lUeXBlLk1FQVNVUkUsXG4gICAgICBlbGVtZW50SUQ6IGNvbW1lbnQuaWQsXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogc3dlZXBJRCxcbiAgICB9IGFzIFBPSTtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XG4gICAgY29uc3Qgc2NyZWVuID0gYXdhaXQgZmV0Y2goc2NyZWVuc2hvdCk7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgJ21lc3VyZS5qcGVnJywgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XG4gICAgY29uc3QgdXJsID0gYXdhaXQgdXBsb2FkRmlsZVRvUzModGhpcy5wYXRoLCBmaWxlLCBjb21tZW50LmlkKTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcbiAgICAgICAgaWQ6IGNvbW1lbnQuaWQsXG4gICAgICAgIGFubmV4ZTogdXJsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1lYXN1cmVtZW50ID0ge1xuICAgICAgY29tbWVudCxcbiAgICAgIHBvaSxcbiAgICB9IGFzIE1lYXN1cmVtZW50O1xuXG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzXG4gICAgICAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmRcbiAgICAgICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ21lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIG1lYXN1cmVtZW50OiBtZWFzdXJlbWVudCxcbiAgICAgICAgICAgIC8vem9uZUlkOiBzcGFjZUlELFxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcbiAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgICdBV1NLaW5lc2lzJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBhIGRhdGUgZmlsdGVyIGlzIGN1cnJlbnRseSBhcHBsaWVkXG4gICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXIubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGVuZCBkYXRlIG9mIHRoZSBmaWx0ZXIgdG8gdGhlIGN1cnJlbnQgZGF0ZSB0byBlbnN1cmUgdGhlIG5ld2x5IGNyZWF0ZWQgbWVhc3VyZW1lbnQgaXMgaW5jbHVkZWRcbiAgICAgIGNvbnN0IG5ld0VuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29uc3QgbmV3RmlsdGVyID0gW3RoaXMuZGF0ZUZpbHRlclswXSwgbmV3RW5kRGF0ZV07XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobmV3RmlsdGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVhc3VyZW1lbnQ7XG4gIH1cblxuICBhc3luYyBnZXRNb2RlbDNERm9yTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQobWVhc3VyZW1lbnQuY29tbWVudC5pZCk7XG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25zID1cbiAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0Zvck1hdHRlcnBvcnRJREZvclNwYWNlKFxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcbiAgICAgICAgICBtZWFzdXJlbWVudC5jb21tZW50LnNwYWNlSURcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xuICAgICAgcmV0dXJuIHBvaU5hdmlnYXRpb24ubm9kZS5tb2RlbDNEO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNZWFzdXJlbWVudFtdPiB7XG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcbiAgICBjb21tZW50cyA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXG4gICAgICBzcGFjZUlELFxuICAgICAgY29tbWVudHNcbiAgICApO1xuICAgIGxldCBtZWFzdXJlbWVudHMgPSBbXTtcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNvbW1lbnRzLm1hcChhc3luYyAoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucmVhZENvbW1lbnRBc01lYXN1cmVtZW50KGNvbW1lbnQuaWQpO1xuICAgICAgICAgIG1lYXN1cmVtZW50cy5wdXNoKG1lYXN1cmVtZW50KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XG4gIH1cblxuICB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFlLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUcvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyxrQkFBa0I7SUFzQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBM0NWLElBQUksR0FBRyxlQUFlLENBQUM7SUFFdkIsbUJBQW1CLEdBR2YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU1QixnQkFBZ0IsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFcEYsbUJBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixjQUFjLENBQVM7SUFFdkIsWUFBWSxDQUFTO0lBRXJCLFVBQVUsQ0FBUztJQUVuQixpQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFFekYsVUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsQ0FBTSxDQUFDLEtBQUs7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRW5CLFFBQVEsR0FBRyxJQUFJ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QUFDLEdBQUcsQ0FDZixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxXQUFXLEdBQ2YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTNQVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7NEdBcENsQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRTZXJ2aWNlIHtcclxuICBwYXRoID0gJ21lYXN1cmVtZW50cy8nO1xyXG5cclxuICBjdXJyZW50TWVhc3VyZW1lbnRzOiB7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfSA9IHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9O1xyXG5cclxuICBtZWFzdXJlbWVudHNUYWdzOiBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihudWxsKTtcclxuXHJcbiAgbWVhc3VyZW1lbnRzVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgZGF0ZUZpbHRlcjogRGF0ZVtdO1xyXG5cclxuICBtZWFzdXJlbWVudEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBmYWxzZSBtZWFucyBubyBmaWx0ZXJpbmcsIGV2ZXJ5dGhpbmcgaXMgYWxsb3dlZFxyXG5cclxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICBpZiAoIWlzTXVzZXVtVXNlcikge1xyXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvaW5nIHRvIGluaXQgbWVhc3VyZW1lbnRzIGZyb20gem9uZVwiKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2Uuc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKChkYXRlUmFuZ2UpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XHJcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclNlcnZpY2UuY3VycmVudERhdGVGaWx0ZXI7XHJcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcclxuICAgICAgaWYgKGZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gZmxvb3I7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgICApO1xyXG4gICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRlRmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIpIHtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuc3BhY2UgPSBtZWFzdXJlbWVudHM7XHJcbiAgICAgICAgLy8gZW1pdCBvbiB0YWdzIHNob3VsZCBiZSBhZnRlciBzZXR0aW5nIGN1cnJlbnQuc3BhY2UgISFcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICBjb25zdCBjb21tZW50c1pvbmUgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50cy5tYXAoKG1lYXN1cmUpID0+IG1lYXN1cmUuY29tbWVudCksXHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cclxuICAgICAgICAgICAgY29tbWVudHNab25lLmluY2x1ZGVzKG1lYXN1cmUuY29tbWVudClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChtZWFzdXJlbWVudHMubWFwKChtKSA9PiBtLmNvbW1lbnQpKTtcclxuXHJcbiAgICAgICAgbWVhc3VyZW1lbnRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgbmV3IERhdGUoYi5jb21tZW50LmNyZWF0ZWRBdCkgLVxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGEuY29tbWVudC5jcmVhdGVkQXQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudE1lYXN1cmVtZW50cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gW107XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnpvbmUgPSBbXTtcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxDb21tZW50PiB7XHJcbiAgICBjb25zdCBkZWxldGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZGVsZXRlQ29tbWVudChcclxuICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZFxyXG4gICAgKTtcclxuICAgIGlmIChkZWxldGVkQ29tbWVudCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKG1lYXN1cmVtZW50LnBvaS5pZCk7XHJcbiAgICAgIGNvbnN0IHByZWZpeCA9IGAke21lYXN1cmVtZW50LmNvbW1lbnQuaWQuc2xpY2UoMCwgOCl9X2A7XHJcbiAgICAgIGNvbnN0IHBhdGggPSBgJHt0aGlzLnBhdGggKyBwcmVmaXh9bWVzdXJlLmpwZWdgO1xyXG4gICAgICBhd2FpdCBkZWxldGVGcm9tUzMocGF0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVsZXRlZENvbW1lbnQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVNZWFzdXJlbWVudEZvclNwYWNlKFxyXG4gICAgY29tbWVudElucHV0OiBDb21tZW50LFxyXG4gICAgZGF0YU1lYXN1cmVtZW50czogeyBtZWFzdXJlOiBhbnlbXTsgc3dlZXA6IHN0cmluZyB9LFxyXG4gICAgc2NyZWVuc2hvdDogYW55LFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxNZWFzdXJlbWVudD4ge1xyXG4gICAgY29uc3QgbGFzdE1lYXN1cmUgPSBkYXRhTWVhc3VyZW1lbnRzLm1lYXN1cmU7XHJcbiAgICBjb25zdCBzd2VlcElEID0gZGF0YU1lYXN1cmVtZW50cy5zd2VlcDtcclxuICAgIGNvbnN0IGxhc3RQb2ludCA9IGxhc3RNZWFzdXJlW2xhc3RNZWFzdXJlLmxlbmd0aCAtIDFdO1xyXG4gICAgbGV0IGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNyZWF0ZUNvbW1lbnQoY29tbWVudElucHV0KTtcclxuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICBjb29yZGluYXRlOiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgeDogbGFzdFBvaW50LngsXHJcbiAgICAgICAgeTogbGFzdFBvaW50LnksXHJcbiAgICAgICAgejogbGFzdFBvaW50LnosXHJcbiAgICAgIH0pLFxyXG4gICAgICB0eXBlOiBQb2lUeXBlLk1FQVNVUkUsXHJcbiAgICAgIGVsZW1lbnRJRDogY29tbWVudC5pZCxcclxuICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSUQsXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIGNvbnN0IHNjcmVlbiA9IGF3YWl0IGZldGNoKHNjcmVlbnNob3QpO1xyXG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XHJcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnbWVzdXJlLmpwZWcnLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHRoaXMucGF0aCwgZmlsZSwgY29tbWVudC5pZCk7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZUNvbW1lbnQoe1xyXG4gICAgICAgIGlkOiBjb21tZW50LmlkLFxyXG4gICAgICAgIGFubmV4ZTogdXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1lYXN1cmVtZW50ID0ge1xyXG4gICAgICBjb21tZW50LFxyXG4gICAgICBwb2ksXHJcbiAgICB9IGFzIE1lYXN1cmVtZW50O1xyXG5cclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljc1xyXG4gICAgICAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmRcclxuICAgICAgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnbWVhc3VyZW1lbnQnLFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudDogbWVhc3VyZW1lbnQsXHJcbiAgICAgICAgICAgIC8vem9uZUlkOiBzcGFjZUlELFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgYSBkYXRlIGZpbHRlciBpcyBjdXJyZW50bHkgYXBwbGllZFxyXG4gICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXIubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIGRhdGUgb2YgdGhlIGZpbHRlciB0byB0aGUgY3VycmVudCBkYXRlIHRvIGVuc3VyZSB0aGUgbmV3bHkgY3JlYXRlZCBtZWFzdXJlbWVudCBpcyBpbmNsdWRlZFxyXG4gICAgICBjb25zdCBuZXdFbmREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgbmV3RmlsdGVyID0gW3RoaXMuZGF0ZUZpbHRlclswXSwgbmV3RW5kRGF0ZV07XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChuZXdGaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xyXG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcclxuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgc3BhY2VJRCxcclxuICAgICAgY29tbWVudHNcclxuICAgICk7XHJcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XHJcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
223
223
  type: Inject,
224
224
  args: ['currentAPIService']
225
225
  }] }] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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QUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxPQUFPLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvUVEsY0FBYyxrQkFhWCxtQkFBbUI7NEdBYnRCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcbmltcG9ydCB7IE1pc3Npb24sIE9yZ2FuaXNhdGlvbiwgUHJvZmlsZSwgUHJvZmlsZVN0YXR1cywgUm9sZVN0YXR1cywgVmlzaXRUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIE1pc3Npb25TZXJ2aWNlIHtcbiAgICBjdXJyZW50TWlzc2lvbnNVcGRhdGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGxhc3RFeHBpcmVkTWlzc2lvbjogTWlzc2lvbjtcblxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcblxuICAgIGN1cnJlbnRVc2VySUQ6IHN0cmluZztcblxuICAgIEFQSTogYW55OyAvL0FXU1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8vIHByaXZhdGUgYWZmZWN0YXRpb25TZXJ2aWNlOiBBZmZlY3RhdGlvblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VySUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVVzZXIodXNlcklEKS50aGVuKChtaXNzaW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uKFxuICAgICAgICBvcmRlcmVkT3JnSUQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uKG9yZGVyZWRPcmdJRCkudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JnYW5pc2F0aW9uKG9yZ0lEKS50aGVuKFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU1pc3Npb24obWlzc2lvbik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWlzc2lvbiBjcmVhdGVkXCIsIHVwZE1pc3Npb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGUobWlzc2lvbjogYW55KTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlTWlzc2lvbihtaXNzaW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQodXBkTWlzc2lvbik7XG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xuICAgIH1cblxuICAgIGFzeW5jIGFzc2VydFJvbGVGb3JVc2VySW5PcmcoXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXG4gICAgICAgIG9yZzogT3JnYW5pc2F0aW9uLFxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRNaXNzaW9uc0Zyb21Vc2VySUQodXNlci5pZCkudGhlbigobWlzc2lvbnMpID0+IHtcbiAgICAgICAgICAgIGlmIChtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXMub3JnYW5pc2F0aW9uSUQgPT09IG9yZy5pZCAmJiBtaXMucm9sZSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcbiAgICAgICAgb3JkT3JnSUQ6IHN0cmluZyxcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb25CeVNwYWNlKG9yZE9yZ0lELCB7XG4gICAgICAgICAgICBlcTogc3BhY2VJRCxcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIC8vIGNvbnN0IGhhcmREZWxldGUgPSBhd2FpdCB0aGlzLmNhbkhhcmREZXRlbGVNaXNzaW9uKG1pc3Npb24uaWQpO1xuICAgICAgICAvLyBpZiAoaGFyZERlbGV0ZSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJTb2Z0IERlbGV0aW5nIG1pc3Npb25cIik7XG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XG4gICAgICAgICAgICBpZDogbWlzc2lvbklELFxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZChtaXNzaW9uVXBkKTtcbiAgICAgICAgcmV0dXJuIG1pc3Npb25VcGQ7XG4gICAgfVxuXG4gICAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XG4gICAgICAgIHJldHVybiBtaXMuaXRlbXMuZmlsdGVyKChtKSA9PiAhbS5kZWxldGVkQXQpO1xuICAgIH1cblxuICAgIC8vIGFzeW5jIGNhbkhhcmREZXRlbGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gICAgIGNvbnN0IGV2ZW50cyA9IChcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxuICAgIC8vICAgICApLml0ZW1zO1xuICAgIC8vICAgICBpZiAoZXZlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBjb25zdCBjb21tZW50cyA9IChcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXG4gICAgLy8gICAgICkuaXRlbXM7XG4gICAgLy8gICAgIGlmIChjb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgY29uc3QgYWZmZWN0YXRpb25zID1cbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXG4gICAgLy8gICAgICAgICAgICAgbWlzc2lvbklELFxuICAgIC8vICAgICAgICAgKTtcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XG4gICAgLy8gfVxuXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVNaXNzaW9uKHsgaWQ6IG1pc3Npb25JRCB9KTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmF0ZWRNaXNzaW9ucyhtaXNzaW9uczogTWlzc2lvbltdKTogTWlzc2lvbltdIHtcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkID0gW107XG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmF0ZWQgPVxuICAgICAgICAgICAgICAgIG1pc3Npb24uZ3JvdXBzICYmIG1pc3Npb24uZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xuICAgICAgICAgICAgICAgIGFjdGl2YXRlZC5wdXNoKG1pc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0ZvclpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZSh6b25lSUQpKS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oKG1pc3Npb25zKSA9PiBtaXNzaW9ucy5pdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyBnZXRNaXNzaW9uc0ZvclNwYWNlKCksIGJ1dCBmb2xsb3dzIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzXG4gICAgICogZXhoYXVzdGVkIGluc3RlYWQgb2YgcmV0dXJuaW5nIG9ubHkgdGhlIGZpcnN0IHBhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWxsTWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICBjb25zdCBhbGw6IE1pc3Npb25bXSA9IFtdO1xuICAgICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlELCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTAwMCwgbmV4dFRva2VuKTtcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFsbC5wdXNoKC4uLnBhZ2UuaXRlbXMuZmlsdGVyKChtaXM6IE1pc3Npb24gfCBudWxsKSA9PiAhIW1pcyAmJiAhbWlzLmRlbGV0ZWRBdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG5cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9XG5cbiAgICBhY3RpdmF0ZU1pc3Npb24obWlzOiBNaXNzaW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1pcyAmJlxuICAgICAgICAgICAgKCFtaXMuZ3JvdXBzIHx8ICFtaXMuZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cHMgPSBtaXMuZ3JvdXBzID8gbWlzLmdyb3VwcyA6IFtdO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goUHJvZmlsZVN0YXR1cy5BQ1RJVkUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoeyBpZDogbWlzLmlkLCBncm91cHMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5VGVtcGxhdGUodGVtcGxhdGVJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQpKS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0TWlzc2lvbihtaXNzaW9uSUQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlab25lQnlSb2xlKFxuICAgICAgICB6b25lSUQ6IHN0cmluZyxcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlab25lQnlSb2xlKFxuICAgICAgICAgICAgICAgIHpvbmVJRCxcbiAgICAgICAgICAgICAgICB7IGVxOiByb2xlIH0sXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB7IGRlbGV0ZWRBdDogeyBhdHRyaWJ1dGVFeGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICApXG4gICAgICAgICkuaXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQoY2hhbmdlZE1pc3Npb246IE1pc3Npb24pIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXJJRCA9PT0gY2hhbmdlZE1pc3Npb24udXNlcklEKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9uc1VwZGF0ZWQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcbiAgICAgICAgY3VycmVudFVzZXJJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TWlzc2lvbltdIHwgbnVsbD4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRVc2VySUQgPSBjdXJyZW50VXNlcklEO1xuICAgICAgICBsZXQgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRChjdXJyZW50VXNlcklEKTtcblxuICAgICAgICAvKiogRmlsdGVyIHRvIGtlZXAgb25seSBhdmFpbGFibGUgbWlzc2lvbnMgKi9cbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhc0V4cGlyZWQgPSBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLmVuZERhdGVUaW1lKTtcblxuICAgICAgICAgICAgLyoqIFVwZGF0ZSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiAqL1xuICAgICAgICAgICAgaWYgKGhhc0V4cGlyZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXhwaXJlZERhdGUgPSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvblxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uLmVuZERhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZWQgPSBuZXcgRGF0ZShtaXNzaW9uLmVuZERhdGVUaW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWxhc3RFeHBpcmVkRGF0ZSB8fCBkYXRlRXhwaXJlZCA+IGxhc3RFeHBpcmVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiA9IG1pc3Npb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFoYXNFeHBpcmVkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobWlzc2lvbnMuc29tZSgobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSkgJiYgbWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gd29ya2Zsb3cgZm9yIFZJU0lUT1JfTVVTRVVNXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgLyoqIEtlZXAgb25seSBzdGFydGVkIG1pc3Npb25zICovXG4gICAgICAgIGxldCBuZXh0TWlzc2lvbkRhdGUgPSBudWxsO1xuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRlZCA9IG1pc3Npb24uc3RhcnREYXRlVGltZVxuICAgICAgICAgICAgICAgID8gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5zdGFydERhdGVUaW1lKVxuICAgICAgICAgICAgICAgIDogdHJ1ZTtcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgbmV4dCBtaXNzaW9uIHRvIHN0YXJ0ICovXG4gICAgICAgICAgICBpZiAoIXN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW9uRGF0ZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0TWlzc2lvbkRhdGUgfHwgbWlzc2lvbkRhdGUgPCBuZXh0TWlzc2lvbkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0TWlzc2lvblRvU3RhcnQgPSBtaXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICBuZXh0TWlzc2lvbkRhdGUgPSBtaXNzaW9uRGF0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPiAwID8gbWlzc2lvbnMgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgdGhlIG1pc3Npb25zIHRoYXQgYXNzaXN0ZWQgdG8gbGl2ZSBvZiB0aGUgdmlzaXQgKGJ5IGNvbXBhcmluZyB0aGUgcmVhbFN0YXJ0VGltZSBvZiBWaXNpdFRlbXBsYXRlIGFuZCBjb25uZWN0ZWRBdCB0aW1lKVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBWaXNpdFRlbXBsYXRlIFxuICAgICAqIEBwYXJhbSBtaXNzaW9ucyBNaXNzaW9uW10gbWlzc2lvbnMgZm9yIHRoaXMgdmlzaXRcbiAgICAgKiBAcmV0dXJucyBNaXNzaW9uW10gZmlsdGVyZWQgbWlzc2lvbnNcbiAgICAgKi9cbiAgICBmaWx0ZXJNaXNzaW9uc0Fzc2l0ZWRUb0xpdmVGb3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVmlzaXRUZW1wbGF0ZSwgbWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XG4gICAgICAgIGNvbnN0IHZpc2l0U3RhcnRUaW1lc3RhbXAgPSB0ZW1wbGF0ZS5yZWFsU3RhcnRlZEF0O1xuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcbiAgICAgICAgICAgIGlmICghbWlzLmNvbm5lY3RlZFRvTGl2ZUF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1pcy5jb25uZWN0ZWRUb0xpdmVBdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXQgPSBtaXMuY29ubmVjdGVkVG9MaXZlQXRbbWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID0gRGF0ZVRpbWUuZnJvbUlTTyhsYXN0Q29ubmVjdGVkQXQpLnRvTWlsbGlzKCk7XG4gICAgICAgICAgICByZXR1cm4gbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID4gdmlzaXRTdGFydFRpbWVzdGFtcDtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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QUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxPQUFPLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvUVEsY0FBYyxrQkFhWCxtQkFBbUI7NEdBYnRCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlU3RhdHVzLCBSb2xlU3RhdHVzLCBWaXNpdFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWlzc2lvblNlcnZpY2Uge1xyXG4gICAgY3VycmVudE1pc3Npb25zVXBkYXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgbGFzdEV4cGlyZWRNaXNzaW9uOiBNaXNzaW9uO1xyXG5cclxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcclxuXHJcbiAgICBjdXJyZW50VXNlcklEOiBzdHJpbmc7XHJcblxyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBhZmZlY3RhdGlvblNlcnZpY2U6IEFmZmVjdGF0aW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlVc2VyKHVzZXJJRCkudGhlbigobWlzc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgb3JkZXJlZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24ob3JkZXJlZE9yZ0lEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmdhbmlzYXRpb24ob3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gY3JlYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZShtaXNzaW9uOiBhbnkpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZU1pc3Npb24obWlzc2lvbik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZCh1cGRNaXNzaW9uKTtcclxuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhc3NlcnRSb2xlRm9yVXNlckluT3JnKFxyXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXHJcbiAgICAgICAgb3JnOiBPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VyLmlkKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pcy5vcmdhbmlzYXRpb25JRCA9PT0gb3JnLmlkICYmIG1pcy5yb2xlID09PSByb2xlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcclxuICAgICAgICBvcmRPcmdJRDogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbkJ5U3BhY2Uob3JkT3JnSUQsIHtcclxuICAgICAgICAgICAgZXE6IHNwYWNlSUQsXHJcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgLy8gY29uc3QgaGFyZERlbGV0ZSA9IGF3YWl0IHRoaXMuY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gaWYgKGhhcmREZWxldGUpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU29mdCBEZWxldGluZyBtaXNzaW9uXCIpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgIGlkOiBtaXNzaW9uSUQsXHJcbiAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKG1pc3Npb25VcGQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uVXBkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpc3QoKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIG1pcy5pdGVtcy5maWx0ZXIoKG0pID0+ICFtLmRlbGV0ZWRBdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vICAgICBjb25zdCBldmVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxyXG4gICAgLy8gICAgICkuaXRlbXM7XHJcbiAgICAvLyAgICAgaWYgKGV2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgY29tbWVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IGFmZmVjdGF0aW9ucyA9XHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXHJcbiAgICAvLyAgICAgICAgICAgICBtaXNzaW9uSUQsXHJcbiAgICAvLyAgICAgICAgICk7XHJcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU1pc3Npb24oeyBpZDogbWlzc2lvbklEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2YXRlZE1pc3Npb25zKG1pc3Npb25zOiBNaXNzaW9uW10pOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZCA9IFtdO1xyXG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2YXRlZCA9XHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uLmdyb3VwcyAmJiBtaXNzaW9uLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSk7XHJcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkLnB1c2gobWlzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYWN0aXZhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmUoem9uZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlEKS50aGVuKChtaXNzaW9ucykgPT4gbWlzc2lvbnMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2FtZSBhcyBnZXRNaXNzaW9uc0ZvclNwYWNlKCksIGJ1dCBmb2xsb3dzIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzXHJcbiAgICAgKiBleGhhdXN0ZWQgaW5zdGVhZCBvZiByZXR1cm5pbmcgb25seSB0aGUgZmlyc3QgcGFnZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0QWxsTWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIGNvbnN0IGFsbDogTWlzc2lvbltdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5U3BhY2Uoc3BhY2VJRCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwMDAsIG5leHRUb2tlbik7XHJcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYWxsLnB1c2goLi4ucGFnZS5pdGVtcy5maWx0ZXIoKG1pczogTWlzc2lvbiB8IG51bGwpID0+ICEhbWlzICYmICFtaXMuZGVsZXRlZEF0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XHJcbiAgICAgICAgfSB3aGlsZSAobmV4dFRva2VuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgIH1cclxuXHJcbiAgICBhY3RpdmF0ZU1pc3Npb24obWlzOiBNaXNzaW9uKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBtaXMgJiZcclxuICAgICAgICAgICAgKCFtaXMuZ3JvdXBzIHx8ICFtaXMuZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgZ3JvdXBzID0gbWlzLmdyb3VwcyA/IG1pcy5ncm91cHMgOiBbXTtcclxuICAgICAgICAgICAgZ3JvdXBzLnB1c2goUHJvZmlsZVN0YXR1cy5BQ1RJVkUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSh7IGlkOiBtaXMuaWQsIGdyb3VwcyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQpKS5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+ICFtaXMuZGVsZXRlZEF0LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0TWlzc2lvbihtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlab25lQnlSb2xlKFxyXG4gICAgICAgIHpvbmVJRDogc3RyaW5nLFxyXG4gICAgICAgIHJvbGU6IFJvbGVTdGF0dXMsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZUJ5Um9sZShcclxuICAgICAgICAgICAgICAgIHpvbmVJRCxcclxuICAgICAgICAgICAgICAgIHsgZXE6IHJvbGUgfSxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICB7IGRlbGV0ZWRBdDogeyBhdHRyaWJ1dGVFeGlzdHM6IGZhbHNlIH0gfSxcclxuICAgICAgICAgICAgICAgIDIwMCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICkuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQoY2hhbmdlZE1pc3Npb246IE1pc3Npb24pIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VXNlcklEID09PSBjaGFuZ2VkTWlzc2lvbi51c2VySUQpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnNVcGRhdGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcclxuICAgICAgICBjdXJyZW50VXNlcklEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXSB8IG51bGw+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VySUQgPSBjdXJyZW50VXNlcklEO1xyXG4gICAgICAgIGxldCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKGN1cnJlbnRVc2VySUQpO1xyXG5cclxuICAgICAgICAvKiogRmlsdGVyIHRvIGtlZXAgb25seSBhdmFpbGFibGUgbWlzc2lvbnMgKi9cclxuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNFeHBpcmVkID0gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5lbmREYXRlVGltZSk7XHJcblxyXG4gICAgICAgICAgICAvKiogVXBkYXRlIHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uICovXHJcbiAgICAgICAgICAgIGlmIChoYXNFeHBpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXhwaXJlZERhdGUgPSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUodGhpcy5sYXN0RXhwaXJlZE1pc3Npb24uZW5kRGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZWQgPSBuZXcgRGF0ZShtaXNzaW9uLmVuZERhdGVUaW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghbGFzdEV4cGlyZWREYXRlIHx8IGRhdGVFeHBpcmVkID4gbGFzdEV4cGlyZWREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0RXhwaXJlZE1pc3Npb24gPSBtaXNzaW9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAhaGFzRXhwaXJlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKG1pc3Npb25zLnNvbWUoKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pICYmIG1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gd29ya2Zsb3cgZm9yIFZJU0lUT1JfTVVTRVVNXHJcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqIEtlZXAgb25seSBzdGFydGVkIG1pc3Npb25zICovXHJcbiAgICAgICAgbGV0IG5leHRNaXNzaW9uRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRlZCA9IG1pc3Npb24uc3RhcnREYXRlVGltZVxyXG4gICAgICAgICAgICAgICAgPyBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICA6IHRydWU7XHJcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgbmV4dCBtaXNzaW9uIHRvIHN0YXJ0ICovXHJcbiAgICAgICAgICAgIGlmICghc3RhcnRlZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzc2lvbkRhdGUgPSBuZXcgRGF0ZShtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0TWlzc2lvbkRhdGUgfHwgbWlzc2lvbkRhdGUgPCBuZXh0TWlzc2lvbkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRNaXNzaW9uVG9TdGFydCA9IG1pc3Npb247XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE1pc3Npb25EYXRlID0gbWlzc2lvbkRhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmxlbmd0aCA+IDAgPyBtaXNzaW9ucyA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIHRoZSBtaXNzaW9ucyB0aGF0IGFzc2lzdGVkIHRvIGxpdmUgb2YgdGhlIHZpc2l0IChieSBjb21wYXJpbmcgdGhlIHJlYWxTdGFydFRpbWUgb2YgVmlzaXRUZW1wbGF0ZSBhbmQgY29ubmVjdGVkQXQgdGltZSlcclxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBWaXNpdFRlbXBsYXRlIFxyXG4gICAgICogQHBhcmFtIG1pc3Npb25zIE1pc3Npb25bXSBtaXNzaW9ucyBmb3IgdGhpcyB2aXNpdFxyXG4gICAgICogQHJldHVybnMgTWlzc2lvbltdIGZpbHRlcmVkIG1pc3Npb25zXHJcbiAgICAgKi9cclxuICAgIGZpbHRlck1pc3Npb25zQXNzaXRlZFRvTGl2ZUZvclRlbXBsYXRlKHRlbXBsYXRlOiBWaXNpdFRlbXBsYXRlLCBtaXNzaW9uczogTWlzc2lvbltdKTogTWlzc2lvbltdIHtcclxuICAgICAgICBjb25zdCB2aXNpdFN0YXJ0VGltZXN0YW1wID0gdGVtcGxhdGUucmVhbFN0YXJ0ZWRBdDtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFtaXMuY29ubmVjdGVkVG9MaXZlQXQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdCA9IG1pcy5jb25uZWN0ZWRUb0xpdmVBdFttaXMuY29ubmVjdGVkVG9MaXZlQXQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdFRpbWVzdGFtcCA9IERhdGVUaW1lLmZyb21JU08obGFzdENvbm5lY3RlZEF0KS50b01pbGxpcygpO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID4gdmlzaXRTdGFydFRpbWVzdGFtcDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=