@ks89/angular-modal-gallery 11.1.1 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CONTRIBUTING.md +17 -18
  3. package/LICENSE +1 -1
  4. package/README.md +10 -6
  5. package/esm2022/lib/components/accessible.component.mjs +7 -8
  6. package/esm2022/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +8 -9
  7. package/esm2022/lib/components/carousel/carousel.component.mjs +9 -10
  8. package/esm2022/lib/components/components.mjs +2 -2
  9. package/esm2022/lib/components/current-image/current-image.component.mjs +9 -10
  10. package/esm2022/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +7 -8
  11. package/esm2022/lib/components/dots/dots.component.mjs +7 -8
  12. package/esm2022/lib/components/modal-gallery/attach-to-overlay.service.mjs +6 -7
  13. package/esm2022/lib/components/modal-gallery/modal-gallery-ref.mjs +2 -2
  14. package/esm2022/lib/components/modal-gallery/modal-gallery.component.mjs +7 -8
  15. package/esm2022/lib/components/modal-gallery/modal-gallery.service.mjs +6 -7
  16. package/esm2022/lib/components/modal-gallery/modal-gallery.tokens.mjs +2 -2
  17. package/esm2022/lib/components/plain-gallery/plain-gallery.component.mjs +8 -9
  18. package/esm2022/lib/components/previews/previews.component.mjs +8 -9
  19. package/esm2022/lib/components/upper-buttons/upper-buttons.component.mjs +7 -8
  20. package/esm2022/lib/directives/a-tag-bg-image.directive.mjs +7 -8
  21. package/esm2022/lib/directives/click-outside.directive.mjs +6 -7
  22. package/esm2022/lib/directives/description.directive.mjs +7 -8
  23. package/esm2022/lib/directives/direction.directive.mjs +7 -8
  24. package/esm2022/lib/directives/directives.mjs +2 -2
  25. package/esm2022/lib/directives/fallback-image.directive.mjs +7 -8
  26. package/esm2022/lib/directives/keyboard-navigation.directive.mjs +6 -7
  27. package/esm2022/lib/directives/margin.directive.mjs +7 -8
  28. package/esm2022/lib/directives/max-size.directive.mjs +7 -8
  29. package/esm2022/lib/directives/size.directive.mjs +7 -8
  30. package/esm2022/lib/directives/swipe.directive.mjs +6 -7
  31. package/esm2022/lib/directives/wrap.directive.mjs +7 -8
  32. package/esm2022/lib/modal-gallery.module.mjs +7 -8
  33. package/esm2022/lib/model/accessibility.interface.mjs +2 -2
  34. package/esm2022/lib/model/action.enum.mjs +2 -2
  35. package/esm2022/lib/model/buttons-config.interface.mjs +2 -2
  36. package/esm2022/lib/model/carousel-config.interface.mjs +2 -2
  37. package/esm2022/lib/model/carousel-image-config.interface.mjs +2 -2
  38. package/esm2022/lib/model/carousel-preview-config.interface.mjs +2 -2
  39. package/esm2022/lib/model/current-image-config.interface.mjs +2 -2
  40. package/esm2022/lib/model/description.interface.mjs +2 -2
  41. package/esm2022/lib/model/dots-config.interface.mjs +2 -2
  42. package/esm2022/lib/model/image-internal.class.mjs +2 -2
  43. package/esm2022/lib/model/image.class.mjs +2 -2
  44. package/esm2022/lib/model/keyboard-config.interface.mjs +2 -2
  45. package/esm2022/lib/model/keyboard.enum.mjs +2 -2
  46. package/esm2022/lib/model/lib-config.interface.mjs +2 -2
  47. package/esm2022/lib/model/loading-config.interface.mjs +2 -2
  48. package/esm2022/lib/model/max-size.interface.mjs +2 -2
  49. package/esm2022/lib/model/modal-gallery-config.interface.mjs +2 -2
  50. package/esm2022/lib/model/plain-gallery-config.interface.mjs +2 -2
  51. package/esm2022/lib/model/play-config.interface.mjs +2 -2
  52. package/esm2022/lib/model/preview-config.interface.mjs +2 -2
  53. package/esm2022/lib/model/size.interface.mjs +2 -2
  54. package/esm2022/lib/model/slide-config.interface.mjs +2 -2
  55. package/esm2022/lib/services/config.service.mjs +7 -8
  56. package/esm2022/lib/services/id-validator.service.mjs +6 -7
  57. package/esm2022/lib/utils/image.util.mjs +2 -2
  58. package/esm2022/lib/utils/user-input.util.mjs +2 -2
  59. package/esm2022/public-api.mjs +2 -2
  60. package/fesm2022/ks89-angular-modal-gallery.mjs +145 -145
  61. package/fesm2022/ks89-angular-modal-gallery.mjs.map +1 -1
  62. package/lib/model/action.enum.d.ts +2 -2
  63. package/package.json +9 -9
@@ -16,7 +16,7 @@ import * as i6 from "../dots/dots.component";
16
16
  import * as i7 from "../previews/previews.component";
17
17
  import * as i8 from "../current-image/current-image.component";
18
18
  import * as i9 from "../../directives/click-outside.directive";
19
- class ModalGalleryComponent {
19
+ export class ModalGalleryComponent {
20
20
  /**
21
21
  * HostListener to catch browser's back button and destroy the gallery.
22
22
  * This prevents weired behaviour about scrolling.
@@ -471,20 +471,19 @@ class ModalGalleryComponent {
471
471
  break;
472
472
  }
473
473
  }
474
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModalGalleryComponent, deps: [{ token: DIALOG_DATA }, { token: i1.ModalGalleryService }, { token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i2.IdValidatorService }, { token: i3.ConfigService }, { token: i4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ModalGalleryComponent, selector: "ks-modal-gallery", host: { listeners: { "window:popstate": "onPopState()", "document:keydown.code.control.keyS": "onSaveListener($event)", "document:keydown.code.meta.keyS": "onSaveListener($event)" } }, viewQueries: [{ propertyName: "currentImageComponent", first: true, predicate: CurrentImageComponent, descendants: true, static: true }], ngImport: i0, template: "<div id=\"modal-gallery-wrapper\"\n [attr.aria-label]=\"accessibilityConfig.modalGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig.modalGalleryContentTitle\"\n ksClickOutside [clickOutsideEnable]=\"enableCloseOutside\"\n (clickOutside)=\"onClickOutside($event)\">\n\n <div id=\"flex-min-height-ie-fix\">\n <div id=\"modal-gallery-container\">\n\n <ks-upper-buttons [id]=\"id\"\n [currentImage]=\"currentImage\"\n (delete)=\"onDelete($event)\"\n (navigate)=\"onNavigate($event)\"\n (download)=\"onDownload($event)\"\n (closeButton)=\"onCloseGalleryButton($event)\"\n (fullscreen)=\"onFullScreen($event)\"\n (customEmit)=\"onCustomEmit($event)\"></ks-upper-buttons>\n\n <ks-current-image [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [isOpen]=\"true\"\n (loadImage)=\"onImageLoad($event)\"\n (changeImage)=\"onChangeCurrentImage($event)\"\n (closeGallery)=\"onCloseGallery($event)\"></ks-current-image>\n\n <div>\n <ks-dots [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [dotsConfig]=\"dotsConfig\"\n (clickDot)=\"onClickDot($event)\"></ks-dots>\n\n <ks-previews [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [customTemplate]=\"customPreviewsTemplate\"\n (clickPreview)=\"onClickPreview($event)\"></ks-previews>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#flex-min-height-ie-fix{display:flex;flex-direction:column;justify-content:center}#modal-gallery-container{display:flex;flex-direction:column;justify-content:space-between;min-width:100vw;min-height:100vh}\n"], dependencies: [{ kind: "component", type: i5.UpperButtonsComponent, selector: "ks-upper-buttons", inputs: ["id", "currentImage"], outputs: ["refresh", "delete", "navigate", "download", "closeButton", "fullscreen", "customEmit"] }, { kind: "component", type: i6.DotsComponent, selector: "ks-dots", inputs: ["id", "currentImage", "images", "dotsConfig"], outputs: ["clickDot"] }, { kind: "component", type: i7.PreviewsComponent, selector: "ks-previews", inputs: ["id", "currentImage", "images", "customTemplate"], outputs: ["clickPreview"] }, { kind: "component", type: i8.CurrentImageComponent, selector: "ks-current-image", inputs: ["id", "currentImage", "images", "isOpen"], outputs: ["loadImage", "changeImage", "closeGallery"] }, { kind: "directive", type: i9.ClickOutsideDirective, selector: "[ksClickOutside]", inputs: ["clickOutsideEnable"], outputs: ["clickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
474
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModalGalleryComponent, deps: [{ token: DIALOG_DATA }, { token: i1.ModalGalleryService }, { token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i2.IdValidatorService }, { token: i3.ConfigService }, { token: i4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
475
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ModalGalleryComponent, selector: "ks-modal-gallery", host: { listeners: { "window:popstate": "onPopState()", "document:keydown.code.control.keyS": "onSaveListener($event)", "document:keydown.code.meta.keyS": "onSaveListener($event)" } }, viewQueries: [{ propertyName: "currentImageComponent", first: true, predicate: CurrentImageComponent, descendants: true, static: true }], ngImport: i0, template: "<div id=\"modal-gallery-wrapper\"\n [attr.aria-label]=\"accessibilityConfig.modalGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig.modalGalleryContentTitle\"\n ksClickOutside [clickOutsideEnable]=\"enableCloseOutside\"\n (clickOutside)=\"onClickOutside($event)\">\n\n <div id=\"flex-min-height-ie-fix\">\n <div id=\"modal-gallery-container\">\n\n <ks-upper-buttons [id]=\"id\"\n [currentImage]=\"currentImage\"\n (delete)=\"onDelete($event)\"\n (navigate)=\"onNavigate($event)\"\n (download)=\"onDownload($event)\"\n (closeButton)=\"onCloseGalleryButton($event)\"\n (fullscreen)=\"onFullScreen($event)\"\n (customEmit)=\"onCustomEmit($event)\"></ks-upper-buttons>\n\n <ks-current-image [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [isOpen]=\"true\"\n (loadImage)=\"onImageLoad($event)\"\n (changeImage)=\"onChangeCurrentImage($event)\"\n (closeGallery)=\"onCloseGallery($event)\"></ks-current-image>\n\n <div>\n <ks-dots [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [dotsConfig]=\"dotsConfig\"\n (clickDot)=\"onClickDot($event)\"></ks-dots>\n\n <ks-previews [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [customTemplate]=\"customPreviewsTemplate\"\n (clickPreview)=\"onClickPreview($event)\"></ks-previews>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#flex-min-height-ie-fix{display:flex;flex-direction:column;justify-content:center}#modal-gallery-container{display:flex;flex-direction:column;justify-content:space-between;min-width:100vw;min-height:100vh}\n"], dependencies: [{ kind: "component", type: i5.UpperButtonsComponent, selector: "ks-upper-buttons", inputs: ["id", "currentImage"], outputs: ["refresh", "delete", "navigate", "download", "closeButton", "fullscreen", "customEmit"] }, { kind: "component", type: i6.DotsComponent, selector: "ks-dots", inputs: ["id", "currentImage", "images", "dotsConfig"], outputs: ["clickDot"] }, { kind: "component", type: i7.PreviewsComponent, selector: "ks-previews", inputs: ["id", "currentImage", "images", "customTemplate"], outputs: ["clickPreview"] }, { kind: "component", type: i8.CurrentImageComponent, selector: "ks-current-image", inputs: ["id", "currentImage", "images", "isOpen"], outputs: ["loadImage", "changeImage", "closeGallery"] }, { kind: "directive", type: i9.ClickOutsideDirective, selector: "[ksClickOutside]", inputs: ["clickOutsideEnable"], outputs: ["clickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
476
476
  }
477
- export { ModalGalleryComponent };
478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModalGalleryComponent, decorators: [{
477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModalGalleryComponent, decorators: [{
479
478
  type: Component,
480
479
  args: [{ selector: 'ks-modal-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"modal-gallery-wrapper\"\n [attr.aria-label]=\"accessibilityConfig.modalGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig.modalGalleryContentTitle\"\n ksClickOutside [clickOutsideEnable]=\"enableCloseOutside\"\n (clickOutside)=\"onClickOutside($event)\">\n\n <div id=\"flex-min-height-ie-fix\">\n <div id=\"modal-gallery-container\">\n\n <ks-upper-buttons [id]=\"id\"\n [currentImage]=\"currentImage\"\n (delete)=\"onDelete($event)\"\n (navigate)=\"onNavigate($event)\"\n (download)=\"onDownload($event)\"\n (closeButton)=\"onCloseGalleryButton($event)\"\n (fullscreen)=\"onFullScreen($event)\"\n (customEmit)=\"onCustomEmit($event)\"></ks-upper-buttons>\n\n <ks-current-image [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [isOpen]=\"true\"\n (loadImage)=\"onImageLoad($event)\"\n (changeImage)=\"onChangeCurrentImage($event)\"\n (closeGallery)=\"onCloseGallery($event)\"></ks-current-image>\n\n <div>\n <ks-dots [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [dotsConfig]=\"dotsConfig\"\n (clickDot)=\"onClickDot($event)\"></ks-dots>\n\n <ks-previews [id]=\"id\"\n [images]=\"images\"\n [currentImage]=\"currentImage\"\n [customTemplate]=\"customPreviewsTemplate\"\n (clickPreview)=\"onClickPreview($event)\"></ks-previews>\n </div>\n </div>\n </div>\n</div>\n", styles: ["#flex-min-height-ie-fix{display:flex;flex-direction:column;justify-content:center}#modal-gallery-container{display:flex;flex-direction:column;justify-content:space-between;min-width:100vw;min-height:100vh}\n"] }]
481
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
480
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
482
481
  type: Inject,
483
482
  args: [DIALOG_DATA]
484
483
  }] }, { type: i1.ModalGalleryService }, { type: Object, decorators: [{
485
484
  type: Inject,
486
485
  args: [PLATFORM_ID]
487
- }] }, { type: i0.ChangeDetectorRef }, { type: i2.IdValidatorService }, { type: i3.ConfigService }, { type: i4.DomSanitizer }]; }, propDecorators: { currentImageComponent: [{
486
+ }] }, { type: i0.ChangeDetectorRef }, { type: i2.IdValidatorService }, { type: i3.ConfigService }, { type: i4.DomSanitizer }], propDecorators: { currentImageComponent: [{
488
487
  type: ViewChild,
489
488
  args: [CurrentImageComponent, { static: true }]
490
489
  }], onPopState: [{
@@ -497,4 +496,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
497
496
  type: HostListener,
498
497
  args: ['document:keydown.code.meta.keyS', ['$event']]
499
498
  }] } });
500
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1nYWxsZXJ5L21vZGFsLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFxQixTQUFTLEVBQ3JELFlBQVksRUFBRSxNQUFNLEVBQXFCLFdBQVcsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUNqRixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUtwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFTLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFLE9BQU8sRUFBNEMsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBa0IsTUFBTSwwQ0FBMEMsQ0FBQztBQU9qRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFNM0UsTUFNYSxxQkFBcUI7SUF3RWhDOzs7O09BSUc7SUFFSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFHSCxjQUFjLENBQUMsS0FBb0I7UUFDakMsS0FBSyxDQUFDLGNB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cUI7c0JBQXhFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQTBFbEQsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFXL0IsY0FBYztzQkFGYixZQUFZO3VCQUFDLG9DQUFvQyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDN0QsWUFBWTt1QkFBQyxpQ0FBaUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LFxuICBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFBMQVRGT1JNX0lELCBTZWN1cml0eUNvbnRleHQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERJQUxPR19EQVRBIH0gZnJvbSAnLi9tb2RhbC1nYWxsZXJ5LnRva2Vucyc7XG5pbXBvcnQgeyBJbWFnZSwgSW1hZ2VNb2RhbEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UuY2xhc3MnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IERvdHNDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9kb3RzLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQnV0dG9uQ29uZmlnLCBCdXR0b25FdmVudCwgQnV0dG9uc0NvbmZpZywgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2J1dHRvbnMtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnRlcm5hbExpYkltYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UtaW50ZXJuYWwuY2xhc3MnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ3VycmVudEltYWdlQ29tcG9uZW50LCBJbWFnZUxvYWRFdmVudCB9IGZyb20gJy4uL2N1cnJlbnQtaW1hZ2UvY3VycmVudC1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWRWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWQtdmFsaWRhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5Ym9hcmRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9rZXlib2FyZC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFByZXZpZXdDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9wcmV2aWV3LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2xpZGVDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9zbGlkZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9hY2Nlc3NpYmlsaXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGFpbkdhbGxlcnlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9wbGFpbi1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS1NfREVGQVVMVF9BQ0NFU1NJQklMSVRZX0NPTkZJRyB9IGZyb20gJy4uL2FjY2Vzc2liaWxpdHktZGVmYXVsdCc7XG5pbXBvcnQgeyBDdXJyZW50SW1hZ2VDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9jdXJyZW50LWltYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9kYWxHYWxsZXJ5U2VydmljZSB9IGZyb20gJy4vbW9kYWwtZ2FsbGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vZGFsR2FsbGVyeUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL21vZGFsLWdhbGxlcnktY29uZmlnLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tzLW1vZGFsLWdhbGxlcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtZ2FsbGVyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLWdhbGxlcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxHYWxsZXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBDdXJyZW50SW1hZ2VDb21wb25lbnQgdG8gaW52b2tlIG1ldGhvZHMgb24gaXQuXG4gICAqL1xuICBAVmlld0NoaWxkKEN1cnJlbnRJbWFnZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgY3VycmVudEltYWdlQ29tcG9uZW50OiBDdXJyZW50SW1hZ2VDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZCAoPj0wKSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGlzIGxpYnJhcnkuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGFyZSB1c2luZ1xuICAgKiB0aGUgc2VydmljZSB0byBjYWxsIG1vZGFsIGdhbGxlcnkgd2l0aG91dCBvcGVuIGl0IG1hbnVhbGx5LlxuICAgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBCdXR0b25zQ29uZmlnYCB0byBzaG93L2hpZGUgYnV0dG9ucy5cbiAgICovXG4gIGJ1dHRvbnNDb25maWc6IEJ1dHRvbnNDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBCb29sZWFuIHRvIGVuYWJsZSBtb2RhbC1nYWxsZXJ5IGNsb3NlIGJlaGF2aW91ciB3aGVuIGNsaWNraW5nXG4gICAqIG9uIHRoZSBzZW1pLXRyYW5zcGFyZW50IGJhY2tncm91bmQuIEVuYWJsZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGVuYWJsZUNsb3NlT3V0c2lkZSA9IHRydWU7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgRG90c0NvbmZpZ2AgdG8gaW5pdCBEb3RzQ29tcG9uZW50J3MgZmVhdHVyZXMuXG4gICAqIEZvciBpbnN0YW5jZSwgaXQgY29udGFpbnMgYSBwYXJhbSB0byBzaG93L2hpZGUgZG90cy5cbiAgICovXG4gIGRvdHNDb25maWc6IERvdHNDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgUHJldmlld0NvbmZpZ2AgdG8gaW5pdCBQcmV2aWV3c0NvbXBvbmVudCdzIGZlYXR1cmVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIGl0IGNvbnRhaW5zIGEgcGFyYW0gdG8gc2hvdy9oaWRlIHByZXZpZXdzLlxuICAgKi9cbiAgcHJldmlld0NvbmZpZzogUHJldmlld0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBTbGlkZUNvbmZpZ2AgdG8gaW5pdCBzaWRlIHByZXZpZXdzIGFuZCBgaW5maW5pdGUgc2xpZGluZ2AuXG4gICAqL1xuICBzbGlkZUNvbmZpZzogU2xpZGVDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgQWNjZXNzaWJpbGl0eUNvbmZpZ2AgdG8gaW5pdCBjdXN0b20gYWNjZXNzaWJpbGl0eSBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyB0aXRsZXMsIGFsdCB0ZXh0cywgYXJpYS1sYWJlbHMgYW5kIHNvIG9uLlxuICAgKi9cbiAgYWNjZXNzaWJpbGl0eUNvbmZpZzogQWNjZXNzaWJpbGl0eUNvbmZpZyA9IEtTX0RFRkFVTFRfQUNDRVNTSUJJTElUWV9DT05GSUc7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgS2V5Ym9hcmRDb25maWdgIHRvIGFzc2lnbiBjdXN0b20ga2V5cyB0byBFU0MsIFJJR0hUIGFuZCBMRUZUIGtleWJvYXJkJ3MgYWN0aW9ucy5cbiAgICovXG4gIGtleWJvYXJkQ29uZmlnOiBLZXlib2FyZENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBQbGFpbkdhbGxlcnlDb25maWdgIHRvIGNvbmZpZ3VyZSB0aGUgcGxhaW4gZ2FsbGVyeS5cbiAgICovXG4gIHBsYWluR2FsbGVyeUNvbmZpZzogUGxhaW5HYWxsZXJ5Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQXJyYXkgb2YgYEludGVybmFsTGliSW1hZ2VgIHJlcHJlc2VudGluZyB0aGUgbW9kZWwgb2YgdGhpcyBsaWJyYXJ5IHdpdGggYWxsIGltYWdlcywgdGh1bWJzIGFuZCBzbyBvbi5cbiAgICovXG4gIGltYWdlczogSW50ZXJuYWxMaWJJbWFnZVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gdXNlIHRvIHJlbmRlciBwcmV2aWV3cy5cbiAgICovXG4gIGN1c3RvbVByZXZpZXdzVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIGBJbWFnZWAgdGhhdCBpcyB2aXNpYmxlIHJpZ2h0IG5vdy5cbiAgICovXG4gIGN1cnJlbnRJbWFnZTogSW50ZXJuYWxMaWJJbWFnZTtcbiAgLyoqXG4gICAqIEJvb2xlYW4gdG8gb3BlbiB0aGUgbW9kYWwgZ2FsbGVyeS4gRmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNob3dHYWxsZXJ5ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBPYmplY3QgdG8gY29uZmlndXJlIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgbGliQ29uZmlnOiBMaWJDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbWFnZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSG9zdExpc3RlbmVyIHRvIGNhdGNoIGJyb3dzZXIncyBiYWNrIGJ1dHRvbiBhbmQgZGVzdHJveSB0aGUgZ2FsbGVyeS5cbiAgICogVGhpcyBwcmV2ZW50cyB3ZWlyZWQgYmVoYXZpb3VyIGFib3V0IHNjcm9sbGluZy5cbiAgICogQWRkZWQgdG8gZml4IHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Lczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9pc3N1ZXMvMTU5XG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cG9wc3RhdGUnKVxuICBvblBvcFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VHYWxsZXJ5KCk7XG4gIH1cblxuICAvKipcbiAgICogSG9zdExpc3RlbmVyIHRvIGNhdGNoIGN0cmwrcy9tZXRhK3MgYW5kIGRvd25sb2FkIHRoZSBjdXJyZW50IGltYWdlLlxuICAgKiBJbnNwaXJlZCBieSBodHRwczovL25ldGJhc2FsLmNvbS9hZGQta2V5Ym9hcmQtc2hvcnRjdXRzLXRvLXlvdXItYW5ndWxhci1hcHAtOWJmMmU4OTg2MmIzXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvZGUuY29udHJvbC5rZXlTJywgWyckZXZlbnQnXSkgLy8gd2luZG93c1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvZGUubWV0YS5rZXlTJywgWyckZXZlbnQnXSkgLy8gbWFjT1NcbiAgb25TYXZlTGlzdGVuZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZG93bmxvYWRJbWFnZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChESUFMT0dfREFUQSkgcHJpdmF0ZSBkaWFsb2dDb250ZW50OiBNb2RhbEdhbGxlcnlDb25maWcsXG4gICAgcHJpdmF0ZSBtb2RhbEdhbGxlcnlTZXJ2aWNlOiBNb2RhbEdhbGxlcnlTZXJ2aWNlLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGlkVmFsaWRhdG9yU2VydmljZTogSWRWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge1xuICAgIHRoaXMuaWQgPSAodGhpcy5kaWFsb2dDb250ZW50IGFzIE1vZGFsR2FsbGVyeUNvbmZpZykuaWQ7XG4gICAgdGhpcy5pbWFnZXMgPSAodGhpcy5kaWFsb2dDb250ZW50IGFzIE1vZGFsR2FsbGVyeUNvbmZpZykuaW1hZ2VzIGFzIEludGVybmFsTGliSW1hZ2VbXTtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZSA9ICh0aGlzLmRpYWxvZ0NvbnRlbnQgYXMgTW9kYWxHYWxsZXJ5Q29uZmlnKS5jdXJyZW50SW1hZ2UgYXMgSW50ZXJuYWxMaWJJbWFnZTtcbiAgICB0aGlzLmxpYkNvbmZpZyA9ICh0aGlzLmRpYWxvZ0NvbnRlbnQgYXMgTW9kYWxHYWxsZXJ5Q29uZmlnKS5saWJDb25maWc7XG4gICAgdGhpcy5jdXN0b21QcmV2aWV3c1RlbXBsYXRlID0gKHRoaXMuZGlhbG9nQ29udGVudCBhcyBNb2RhbEdhbGxlcnlDb25maWcpLnByZXZpZXdzVGVtcGxhdGU7XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldENvbmZpZyh0aGlzLmlkLCB0aGlzLmxpYkNvbmZpZyk7XG5cbiAgICB0aGlzLnVwZGF0ZUltYWdlc1N1YnNjcmlwdGlvbiA9IHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS51cGRhdGVJbWFnZXMkLnN1YnNjcmliZSgoaW1hZ2VzOiBJbWFnZVtdKSA9PiB7XG4gICAgICB0aGlzLmltYWdlcyA9IGltYWdlcy5tYXAoKGltYWdlOiBJbWFnZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJbWFnZTogSW50ZXJuYWxMaWJJbWFnZSA9IE9iamVjdC5hc3NpZ24oe30sIGltYWdlLCB7IHByZXZpb3VzbHlMb2FkZWQ6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gbmV3SW1hZ2U7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5pdEltYWdlcygpO1xuICAgICAgdGhpcy5pbWFnZXMuZm9yRWFjaCgoaW1hZ2U6IEludGVybmFsTGliSW1hZ2UpID0+IHtcbiAgICAgICAgaWYgKGltYWdlLmlkID09PSB0aGlzLmN1cnJlbnRJbWFnZS5pZCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudEltYWdlID0gaW1hZ2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uSW5pdMK0IHRvIGluaXQgaW1hZ2VzIGNhbGxpbmcgYGluaXRJbWFnZXMoKWAuXG4gICAqIFRoaXMgaXMgYW4gYW5ndWxhciBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlkVmFsaWRhdG9yU2VydmljZS5jaGVja0FuZEFkZCh0aGlzLmlkKTtcblxuICAgIC8vIGlkIGlzIGEgbWFuZGF0b3J5IGlucHV0IGFuZCBtdXN0IGEgbnVtYmVyID4gMFxuICAgIGlmICgoIXRoaXMuaWQgJiYgdGhpcy5pZCAhPT0gMCkgfHwgdGhpcy5pZCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCdbaWRdPVwiYSBudW1iZXIgPj0gMFwiJyBpcyBhIG1hbmRhdG9yeSBpbnB1dCBpbiBhbmd1bGFyLW1vZGFsLWdhbGxlcnkuYCArXG4gICAgICAgIGBJZiB5b3UgYXJlIHVzaW5nIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGlzIGxpYnJhcnksIHBsZWFzZSBiZSBzdXJlIHRvIHVzZSBkaWZmZXJlbnQgaWRzYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcgfHwgIWxpYkNvbmZpZy5kb3RzQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgYW5kIGRvdHNDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5kb3RzQ29uZmlnID0gbGliQ29uZmlnLmRvdHNDb25maWc7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdEltYWdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgYnkgY3VzdG9tIHVwcGVyIGJ1dHRvbnMuXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkXG4gICAqL1xuICBvbkN1c3RvbUVtaXQoZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0gdGhpcy5nZXRCdXR0b25FdmVudFRvRW1pdChldmVudCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50VG9FbWl0KTtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudFRvRW1pdCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSB0aGUgZnVsbC1zY3JlZW4gdXBwZXIgYnV0dG9uLlxuICAgKiBAcGFyYW0gZXZlbnQgQnV0dG9uRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25GdWxsU2NyZWVuKGV2ZW50OiBCdXR0b25FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50VG9FbWl0OiBCdXR0b25FdmVudCA9IHRoaXMuZ2V0QnV0dG9uRXZlbnRUb0VtaXQoZXZlbnQpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudFRvRW1pdCk7XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgY29uc3QgZG9jOiBhbnkgPSBkb2N1bWVudCBhcyBhbnk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIGNvbnN0IGRvY0VsOiBhbnkgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgYXMgYW55O1xuXG4gICAgY29uc3QgZnVsbHNjcmVlbkRpc2FibGVkOiBib29sZWFuID0gIWRvYy5mdWxsc2NyZWVuRWxlbWVudCAmJiAhZG9jLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50O1xuXG4gICAgLy8gSW4gU2FmYXJpIGByZXF1ZXN0RnVsbHNjcmVlbmAgYW5kIGBleGl0RnVsbHNjcmVlbmAgYXJlIHVuZGVmaW5lZC4gU2FmYXJpIHJlcXVpcmVzIHRoZSBwcmVmaXhlZCB2ZXJzaW9uIGB3ZWJraXQtYFxuICAgIC8vIGFuZCBpdCBkb2Vzbid0IHJldHVybiBwcm9taXNlcy5cblxuICAgIC8vIEkgY2Fubm90IGNhbGwgYGVtaXRCdXR0b25BZnRlckhvb2tgIG9ubHkgaWYgcmVxdWVzdEZ1bGxTY3JlZW4gaXMgc3VjY2Vzc2Z1bCwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcyBhY3Jvc3MgYnJvd3NlcnMgYW5kXG4gICAgLy8gSSBzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGNhc2Ugd2l0aCBrZXlib2FyZCBcImVzY1wiIGJ1dHRvbi5cblxuICAgIGlmIChmdWxsc2NyZWVuRGlzYWJsZWQpIHtcbiAgICAgIGlmIChkb2NFbC5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBkb2NFbC5yZXF1ZXN0RnVsbHNjcmVlbigpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCByZXF1ZXN0IGZ1bGwgc2NyZWVuJyk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGRvY0VsLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIC8vIEZvciBTYWZhcmkgYW5kIGl0IGRvZXNuJ3QgcmV0dXJuIGEgcHJvbWlzZVxuICAgICAgICBkb2NFbC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZG9jLmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIGRvYy5leGl0RnVsbHNjcmVlbigpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCByZXF1ZXN0IGV4aXQgZnVsbCBzY3JlZW4nKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIC8vIEZvciBTYWZhcmkgYW5kIGl0IGRvZXNuJ3QgcmV0dXJuIGEgcHJvbWlzZVxuICAgICAgICBkb2Mud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudFRvRW1pdCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSB0aGUgZGVsZXRlIHVwcGVyIGJ1dHRvbi5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICovXG4gIG9uRGVsZXRlKGV2ZW50OiBCdXR0b25FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50VG9FbWl0OiBCdXR0b25FdmVudCA9IHRoaXMuZ2V0QnV0dG9uRXZlbnRUb0VtaXQoZXZlbnQpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudFRvRW1pdCk7XG5cbiAgICBpZiAodGhpcy5pbWFnZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmNsb3NlR2FsbGVyeSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW50SW1hZ2VDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3VycmVudEltYWdlQ29tcG9uZW50IG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlSW5kZXhUb0RlbGV0ZTogbnVtYmVyID0gdGhpcy5jdXJyZW50SW1hZ2VDb21wb25lbnQuZ2V0SW5kZXhUb0RlbGV0ZShldmVudC5pbWFnZSBhcyBJbnRlcm5hbExpYkltYWdlKTtcbiAgICBpZiAoaW1hZ2VJbmRleFRvRGVsZXRlID09PSB0aGlzLmltYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICAvLyBsYXN0IGltYWdlXG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUNvbXBvbmVudC5wcmV2SW1hZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VDb21wb25lbnQubmV4dEltYWdlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25BZnRlckhvb2soZXZlbnRUb0VtaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgYnkgdGhlIG5hdmlnYXRlIHVwcGVyIGJ1dHRvbi5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICovXG4gIG9uTmF2aWdhdGUoZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0gdGhpcy5nZXRCdXR0b25FdmVudFRvRW1pdChldmVudCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50VG9FbWl0KTtcbiAgICAvLyBUbyBzdXBwb3J0IFNTUlxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICBpZiAoZXZlbnRUb0VtaXQuaW1hZ2UgJiYgZXZlbnRUb0VtaXQuaW1hZ2UubW9kYWwuZXh0VXJsKSB7XG4gICAgICAgIC8vIHdoZXJlIEkgc2hvdWxkIG9wZW4gdGhpcyBsaW5rPyBUaGUgY3VycmVudCB0YWIgb3IgYW5vdGhlciBvbmU/XG4gICAgICAgIGlmIChldmVudFRvRW1pdC5idXR0b24gJiYgZXZlbnRUb0VtaXQuYnV0dG9uLmV4dFVybEluTmV3VGFiKSB7XG4gICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIEkgc2hvdWxkIHVzZSB0YXJnZXQgX2JsYW5rIHRvIG9wZW4gdGhlIHVybCBpbiBhIG5ldyB0YWIsIGhvd2V2ZXIgdGhlc2UgaXMgYSBzZWN1cml0eSBpc3N1ZS5cbiAgICAgICAgICAvLyBQcmV2ZW50IFJldmVyc2UgVGFibmFiYmluZydzIGF0dGFja3MgKGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvUmV2ZXJzZV9UYWJuYWJiaW5nKVxuICAgICAgICAgIC8vIFNvbWUgcmVzb3VyY2VzOlxuICAgICAgICAgIC8vIC0gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9IVE1MNV9TZWN1cml0eV9DaGVhdF9TaGVldCNUYWJuYWJiaW5nXG4gICAgICAgICAgLy8gLSBodHRwczovL21lZGl1bS5jb20vQGppdGJpdC90YXJnZXQtYmxhbmstdGhlLW1vc3QtdW5kZXJlc3RpbWF0ZWQtdnVsbmVyYWJpbGl0eS1ldmVyLTk2ZTMyODMwMWY0Y1xuICAgICAgICAgIC8vIC0gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9vcGVuXG4gICAgICAgICAgY29uc3QgbmV3V2luZG93OiBXaW5kb3cgfCBudWxsID0gd2luZG93Lm9wZW4oZXZlbnRUb0VtaXQuaW1hZ2UubW9kYWwuZXh0VXJsLCAnbm9vcGVuZXIsbm9yZWZlcnJlciwnKTtcbiAgICAgICAgICAvLyBpdCByZXR1cm5zIG51bGwgaWYgdGhlIGNhbGwgZmFpbGVkLCBzbyBJIGhhdmUgdG8gZG8gdGhpcyBjaGVja1xuICAgICAgICAgIGlmIChuZXdXaW5kb3cpIHtcbiAgICAgICAgICAgIG5ld1dpbmRvdy5vcGVuZXIgPSBudWxsOyAvLyByZXF1aXJlZCB0byBwcmV2ZW50IHNlY3VyaXR5IGlzc3Vlc1xuICAgICAgICAgICAgLy8gZW1pdCBvbmx5IGluIGNhc2Ugb2Ygc3VjY2Vzc1xuICAgICAgICAgICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25BZnRlckhvb2soZXZlbnRUb0VtaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2F0aW9uSHJlZihldmVudFRvRW1pdC5pbWFnZS5tb2RhbC5leHRVcmwpO1xuICAgICAgICAgIC8vIGVtaXQgb25seSBpbiBjYXNlIG9mIHN1Y2Nlc3NcbiAgICAgICAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudFRvRW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgZGVmaW5lZCB0byBiZSBzcGllZCBhbmQgcmVwbGFjZWQgaW4gdW5pdCB0ZXN0aW5nIHdpdGggYSBmYWtlIG1ldGhvZCBjYWxsLlxuICAgKiBJdCBtdXN0IGJlIHB1YmxpYyB0byBiZSBhYmxlIHRvIHVzZSBqYXNtaW5lIHNweU9uIG1ldGhvZC5cbiAgICogQHBhcmFtIG5ld0hyZWYgc3RyaW5nIG5ldyB1cmxcbiAgICovXG4gIHVwZGF0ZUxvY2F0aW9uSHJlZihuZXdIcmVmOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG5ld0hyZWY7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSB0aGUgZG93bmxvYWQgdXBwZXIgYnV0dG9uLlxuICAgKiBAcGFyYW0gZXZlbnQgQnV0dG9uRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25Eb3dubG9hZChldmVudDogQnV0dG9uRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRvRW1pdDogQnV0dG9uRXZlbnQgPSB0aGlzLmdldEJ1dHRvbkV2ZW50VG9FbWl0KGV2ZW50KTtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkJlZm9yZUhvb2soZXZlbnRUb0VtaXQpO1xuICAgIHRoaXMuZG93bmxvYWRJbWFnZSgpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQWZ0ZXJIb29rKGV2ZW50VG9FbWl0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIGJ5IHRoZSBjbG9zZSB1cHBlciBidXR0b24uXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBjbG9zZSBtZXRob2QuIGBBY3Rpb24uTk9STUFMYCBieSBkZWZhdWx0XG4gICAqL1xuICBvbkNsb3NlR2FsbGVyeUJ1dHRvbihldmVudDogQnV0dG9uRXZlbnQsIGFjdGlvbjogQWN0aW9uID0gQWN0aW9uLk5PUk1BTCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50VG9FbWl0OiBCdXR0b25FdmVudCA9IHRoaXMuZ2V0QnV0dG9uRXZlbnRUb0VtaXQoZXZlbnQpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudFRvRW1pdCk7XG4gICAgdGhpcy5jbG9zZUdhbGxlcnkoYWN0aW9uLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBDdXJyZW50SW1hZ2VDb21wb25lbnQuXG4gICAqIEBwYXJhbSBldmVudCBJbWFnZU1vZGFsRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgY2xvc2UgbWV0aG9kLiBgQWN0aW9uLk5PUk1BTGAgYnkgZGVmYXVsdFxuICAgKi9cbiAgb25DbG9zZUdhbGxlcnkoZXZlbnQ6IEltYWdlTW9kYWxFdmVudCwgYWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uTk9STUFMKTogdm9pZCB7XG4gICAgLy8gcmVtYXAgSW1hZ2VNb2RhbEV2ZW50IHRvIEJ1dHRvbkV2ZW50XG4gICAgY29uc3QgYnV0dG9uRXZlbnQ6IEJ1dHRvbkV2ZW50ID0ge1xuICAgICAgYnV0dG9uOiB7XG4gICAgICAgIHR5cGU6IEJ1dHRvblR5cGUuQ0xPU0VcbiAgICAgIH0gYXMgQnV0dG9uQ29uZmlnLFxuICAgICAgaW1hZ2U6IG51bGwsXG4gICAgICBhY3Rpb246IGV2ZW50LmFjdGlvbixcbiAgICAgIGdhbGxlcnlJZDogZXZlbnQuZ2FsbGVyeUlkXG4gICAgfTtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkJlZm9yZUhvb2soYnV0dG9uRXZlbnQpO1xuICAgIHRoaXMuY2xvc2VHYWxsZXJ5KGFjdGlvbiwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjbG9zZSB0aGUgbW9kYWwgZ2FsbGVyeSBzcGVjaWZ5aW5nIHRoZSBhY3Rpb24uXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIGFjdGlvbiB0eXBlLiBgQWN0aW9uLk5PUk1BTGAgYnkgZGVmYXVsdFxuICAgKiBAcGFyYW0gY2xpY2tPdXRzaWRlIGJvb2xlYW4gdGhhdCBpcyB0cnVlIGlmIGNhbGxlZCBjbGlja2luZyBvbiB0aGUgbW9kYWwgYmFja2dyb3VuZC4gRmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIGNsb3NlR2FsbGVyeShhY3Rpb246IEFjdGlvbiA9IEFjdGlvbi5OT1JNQUwsIGNsaWNrT3V0c2lkZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgbGliQ29uZmlnOiBMaWJDb25maWcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKHRoaXMuaWQpO1xuICAgIGlmICghbGliQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRDbG9zZShuZXcgSW1hZ2VNb2RhbEV2ZW50KHRoaXMuaWQsIGFjdGlvbiwgdHJ1ZSkpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5jbG9zZSh0aGlzLmlkLCBjbGlja091dHNpZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgaW1hZ2UgY2hhbmdlcyBhbmQgdXNlZCB0byB1cGRhdGUgdGhlIGBjdXJyZW50SW1hZ2VgIG9iamVjdC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBldmVudCBwYXlsb2FkXG4gICAqL1xuICBvbkNoYW5nZUN1cnJlbnRJbWFnZShldmVudDogSW1hZ2VNb2RhbEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbmV3SW5kZXg6IG51bWJlciA9IGV2ZW50LnJlc3VsdCBhcyBudW1iZXI7XG4gICAgaWYgKG5ld0luZGV4IDwgMCB8fCBuZXdJbmRleCA+PSB0aGlzLmltYWdlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRJbWFnZSA9IHRoaXMuaW1hZ2VzW25ld0luZGV4XTtcblxuICAgIC8vIGVtaXQgY3VycmVudCB2aXNpYmxlIGltYWdlIGluZGV4XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRTaG93KG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgZXZlbnQuYWN0aW9uLCBuZXdJbmRleCArIDEpKTtcblxuICAgIC8vIGVtaXQgZmlyc3QvbGFzdCBldmVudCBiYXNlZCBvbiBuZXdJbmRleCB2YWx1ZVxuICAgIHRoaXMuZW1pdEJvdW5kYXJ5RXZlbnQoZXZlbnQuYWN0aW9uLCBuZXdJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHlvdSBjbGljayAnb3V0c2lkZScgKGkuZS4gb24gdGhlIHNlbWktdHJhbnNwYXJlbnQgYmFja2dyb3VuZClcbiAgICogdG8gY2xvc2UgdGhlIG1vZGFsIGdhbGxlcnkgaWYgYGVuYWJsZUNsb3NlT3V0c2lkZWAgaXMgdHJ1ZS5cbiAgICogQHBhcmFtIGV2ZW50IGJvb2xlYW4gdGhhdCBpcyB0cnVlIHRvIGNsb3NlIHRoZSBtb2RhbCBnYWxsZXJ5LCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50ICYmIHRoaXMuZW5hYmxlQ2xvc2VPdXRzaWRlKSB7XG4gICAgICB0aGlzLmNsb3NlR2FsbGVyeShBY3Rpb24uQ0xJQ0ssIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIHdoZW4gYW4gaW1hZ2UgaXMgbG9hZGVkIGFuZCB0aGUgbG9hZGluZyBzcGlubmVyIGhhcyBnb25lLlxuICAgKiBJdCBzZXRzIHRoZSBwcmV2aW91c2x5TG9hZGVkIGZsYWcgaW5zaWRlIHRoZSBJbWFnZSB0byBoaWRlIGxvYWRpbmcgc3Bpbm5lciB3aGVuIGRpc3BsYXllZCBhZ2Fpbi5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTG9hZEV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICovXG4gIG9uSW1hZ2VMb2FkKGV2ZW50OiBJbWFnZUxvYWRFdmVudCk6IHZvaWQge1xuICAgIC8vIHNldHMgYXMgcHJldmlvdXNseSBsb2FkZWQgdGhlIGltYWdlIHdpdGggaW5kZXggc3BlY2lmaWVkIGJ5IGBldmVudC5zdGF0dXNgXG4gICAgdGhpcy5pbWFnZXMgPSB0aGlzLmltYWdlcy5tYXAoKGltZzogSW50ZXJuYWxMaWJJbWFnZSkgPT4ge1xuICAgICAgaWYgKGltZyAmJiBpbWcuaWQgPT09IGV2ZW50LmlkKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBpbWcsIHsgcHJldmlvdXNseUxvYWRlZDogZXZlbnQuc3RhdHVzIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGltZztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIHdoZW4gYSBkb3QgaXMgY2xpY2tlZCBhbmQgdXNlZCB0byB1cGRhdGUgdGhlIGN1cnJlbnQgaW1hZ2UuXG4gICAqIEBwYXJhbSBpbmRleCBudW1iZXIgaW5kZXggb2YgdGhlIGNsaWNrZWQgZG90XG4gICAqL1xuICBvbkNsaWNrRG90KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZSA9IHRoaXMuaW1hZ2VzW2luZGV4XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIHdoZW4gYW4gaW1hZ2UgcHJldmlldyBpcyBjbGlja2VkIGFuZCB1c2VkIHRvIHVwZGF0ZSB0aGUgY3VycmVudCBpbWFnZS5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBwcmV2aWV3IGltYWdlXG4gICAqL1xuICBvbkNsaWNrUHJldmlldyhldmVudDogSW1hZ2VNb2RhbEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUN1cnJlbnRJbWFnZShldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNsZWFudXAgcmVzb3VyY2VzLlxuICAgKiBUaGlzIGlzIGFuIGFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51cGRhdGVJbWFnZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlSW1hZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuaWRWYWxpZGF0b3JTZXJ2aWNlLnJlbW92ZSh0aGlzLmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZG93bmxvYWQgdGhlIGN1cnJlbnQgaW1hZ2UsIG9ubHkgaWYgYGRvd25sb2FkYWJsZWAgaXMgdHJ1ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZG93bmxvYWRJbWFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50SW1hZ2VDb25maWc6IEN1cnJlbnRJbWFnZUNvbmZpZyB8IHVuZGVmaW5lZCA9IGxpYkNvbmZpZy5jdXJyZW50SW1hZ2VDb25maWc7XG4gICAgaWYgKGN1cnJlbnRJbWFnZUNvbmZpZyAmJiAhY3VycmVudEltYWdlQ29uZmlnLmRvd25sb2FkYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRvd25sb2FkSW1hZ2VBbGxCcm93c2VycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjb252ZXJ0IGEgYmFzZTY0IHRvIGEgQmxvYlxuICAgKiBAcGFyYW0gYmFzZTY0RGF0YSBzdHJpbmcgd2l0aCBiYXNlNjQgZGF0YVxuICAgKiBAcGFyYW0gY29udGVudFR5cGUgc3RyaW5nIHdpdGggdGhlIE1JTUUgdHlwZVxuICAgKiBAcmV0dXJuIEJsb2IgY29udmVydGVkIGZyb20gdGhlIGlucHV0IGJhc2U2NERhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYmFzZTY0dG9CbG9iKGJhc2U2NERhdGE6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyA9ICcnKTogQmxvYiB7XG4gICAgY29uc3Qgc2xpY2VTaXplID0gMTAyNDtcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVyczogc3RyaW5nID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICBjb25zdCBieXRlc0xlbmd0aDogbnVtYmVyID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgIGNvbnN0IHNsaWNlc0NvdW50OiBudW1iZXIgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xuICAgIGNvbnN0IGJ5dGVBcnJheXM6IEFycmF5PFVpbnQ4QXJyYXk+ID0gbmV3IEFycmF5KHNsaWNlc0NvdW50KTtcbiAgICBmb3IgKGxldCBzbGljZUluZGV4ID0gMDsgc2xpY2VJbmRleCA8IHNsaWNlc0NvdW50OyArK3NsaWNlSW5kZXgpIHtcbiAgICAgIGNvbnN0IGJlZ2luOiBudW1iZXIgPSBzbGljZUluZGV4ICogc2xpY2VTaXplO1xuICAgICAgY29uc3QgZW5kOiBudW1iZXIgPSBNYXRoLm1pbihiZWdpbiArIHNsaWNlU2l6ZSwgYnl0ZXNMZW5ndGgpO1xuICAgICAgY29uc3QgYnl0ZXM6IEFycmF5PG51bWJlcj4gPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gYmVnaW4sIGkgPSAwOyBvZmZzZXQgPCBlbmQ7ICsraSwgKytvZmZzZXQpIHtcbiAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XG4gICAgICB9XG4gICAgICBieXRlQXJyYXlzW3NsaWNlSW5kZXhdID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJsb2IoYnl0ZUFycmF5cywgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBkb3dubG9hZCB0aGUgY3VycmVudCBpbWFnZSBmb3IgYWxsIGJyb3dzZXJzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBkb3dubG9hZEltYWdlQWxsQnJvd3NlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsZXQgaXNCYXNlNjQgPSBmYWxzZTtcbiAgICBsZXQgaW1nOiBzdHJpbmc7XG4gICAgLy8gY29udmVydCBhIFNhZmVSZXNvdXJjZVVybCB0byBhIHN0cmluZ1xuICAgIGlmICh0eXBlb2YgdGhpcy5jdXJyZW50SW1hZ2UubW9kYWwuaW1nID09PSAnc3RyaW5nJykge1xuICAgICAgaW1nID0gdGhpcy5jdXJyZW50SW1hZ2UubW9kYWwuaW1nIGFzIHN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgaXQncyBhIFNhZmVSZXNvdXJjZVVybFxuICAgICAgaW1nID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTCwgdGhpcy5jdXJyZW50SW1hZ2UubW9kYWwuaW1nKSBhcyBzdHJpbmc7XG4gICAgfVxuICAgIGlmIChpbWcuaW5jbHVkZXMoJ2RhdGE6aW1hZ2UvJykgfHwgaW1nLmluY2x1ZGVzKCc7YmFzZTY0LCcpKSB7XG4gICAgICBjb25zdCBleHRlbnNpb246IHN0cmluZyA9IGltZy5yZXBsYWNlKCdkYXRhOmltYWdlLycsICcnKS5zcGxpdCgnO2Jhc2U2NCwnKVswXTtcbiAgICAgIGNvbnN0IHB1cmVCYXNlNjQ6IHN0cmluZyA9IGltZy5zcGxpdCgnO2Jhc2U2NCwnKVsxXTtcbiAgICAgIGNvbnN0IGJsb2I6IEJsb2IgPSB0aGlzLmJhc2U2NHRvQmxvYihwdXJlQmFzZTY0LCAnaW1hZ2UvJyArIGV4dGVuc2lvbik7XG4gICAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgaXNCYXNlNjQgPSB0cnVlO1xuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLmN1cnJlbnRJbWFnZSwgaXNCYXNlNjQsIGV4dGVuc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rLmhyZWYgPSBpbWc7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMuY3VycmVudEltYWdlLCBpc0Jhc2U2NCkpO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGdldCB0aGUgYEJ1dHRvbkV2ZW50YCB0byBlbWl0LCBtZXJnaW5nIHRoZSBpbnB1dCBgQnV0dG9uRXZlbnRgXG4gICAqIHdpdGggdGhlIGN1cnJlbnQgaW1hZ2UuXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkIHRvIHJldHVyblxuICAgKiBAcmV0dXJucyBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkIHdpdGggdGhlIGN1cnJlbnQgaW1hZ2UgaW5jbHVkZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0QnV0dG9uRXZlbnRUb0VtaXQoZXZlbnQ6IEJ1dHRvbkV2ZW50KTogQnV0dG9uRXZlbnQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7IGltYWdlOiB0aGlzLmN1cnJlbnRJbWFnZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBnZXQgdGhlIGZpbGUgbmFtZSBmcm9tIGFuIGlucHV0IHBhdGguXG4gICAqIFRoaXMgaXMgdXNlZCBlaXRoZXIgdG8gZ2V0IHRoZSBpbWFnZSdzIG5hbWUgZnJvbSBpdHMgcGF0aCBvciBmcm9tIHRoZSBJbWFnZSBpdHNlbGYsXG4gICAqIGlmIHNwZWNpZmllZCBhcyAnZG93bmxvYWRGaWxlTmFtZScgYnkgdGhlIHVzZXIuXG4gICAqIEBwYXJhbSBpbWFnZSBJbWFnZSBpbWFnZSB0byBleHRyYWN0IGl0cyBmaWxlIG5hbWVcbiAgICogQHBhcmFtIGlzQmFzZTY0IGJvb2xlYW4gdG8gc2V0IGlmIHRoZSBpbWFnZSBpcyBhIGJhc2U2NCBmaWxlIG9yIG5vdC4gRmFsc2UgYnkgZGVmYXVsdC5cbiAgICogQHBhcmFtIGJhc2U2NEV4dGVuc2lvbiBzdHJpbmcgdG8gZm9yY2UgdGhlIGV4dGVuc2lvbiBvZiB0aGUgYmFzZTY0IGltYWdlLiBFbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC5cbiAgICogQHJldHVybnMgc3RyaW5nIHN0cmluZyBmaWxlIG5hbWUgb2YgdGhlIGlucHV0IGltYWdlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZShpbWFnZTogSW1hZ2UsIGlzQmFzZTY0OiBib29sZWFuID0gZmFsc2UsIGJhc2U2NEV4dGVuc2lvbjogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGlmICghaW1hZ2UubW9kYWwuZG93bmxvYWRGaWxlTmFtZSB8fCBpbWFnZS5tb2RhbC5kb3dubG9hZEZpbGVOYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKGlzQmFzZTY0KSB7XG4gICAgICAgIHJldHVybiBgSW1hZ2UtJHtpbWFnZS5pZH0uJHtiYXNlNjRFeHRlbnNpb24gIT09ICcnID8gYmFzZTY0RXh0ZW5zaW9uIDogJ3BuZyd9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoaW1hZ2UubW9kYWwuaW1nIGFzIHN0cmluZykucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW1hZ2UubW9kYWwuZG93bmxvYWRGaWxlTmFtZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gaW5pdGlhbGl6ZSBgaW1hZ2VzYCBhcyBhcnJheSBvZiBgSW1hZ2Vgcy5cbiAgICogQWxzbywgaXQgd2lsbCBlbWl0IEltYWdlTW9kYWxFdmVudCB0byBzYXkgdGhhdCBpbWFnZXMgYXJlIGxvYWRlZC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaW5pdEltYWdlcygpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEhhc0RhdGEobmV3IEltYWdlTW9kYWxFdmVudCh0aGlzLmlkLCBBY3Rpb24uTE9BRCwgdHJ1ZSkpO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4OiBudW1iZXIgPSB0aGlzLmltYWdlcy5pbmRleE9mKHRoaXMuY3VycmVudEltYWdlKTtcbiAgICAvLyBlbWl0IGEgbmV3IEltYWdlTW9kYWxFdmVudCB3aXRoIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBpbWFnZVxuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0U2hvdyhuZXcgSW1hZ2VNb2RhbEV2ZW50KHRoaXMuaWQsIEFjdGlvbi5MT0FELCBjdXJyZW50SW5kZXggKyAxKSk7XG5cbiAgICAvLyBlbWl0IGZpcnN0L2xhc3QgZXZlbnQgYmFzZWQgb24gbmV3SW5kZXggdmFsdWVcbiAgICB0aGlzLmVtaXRCb3VuZGFyeUV2ZW50KEFjdGlvbi5OT1JNQUwsIGN1cnJlbnRJbmRleCk7XG5cbiAgICB0aGlzLnNob3dHYWxsZXJ5ID0gdGhpcy5pbWFnZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBlbWl0IGV2ZW50cyB3aGVuIGVpdGhlciB0aGUgbGFzdCBvciB0aGUgZmlyc3QgaW1hZ2UgYXJlIHZpc2libGUuXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIEVudW0gb2YgdHlwZSBBY3Rpb24gdGhhdCByZXByZXNlbnRzIHRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50IHRoYXQgY2hhbmdlZCB0aGVcbiAgICogIGN1cnJlbnQgaW1hZ2UgdG8gdGhlIGZpcnN0IG9uZSBvciB0aGUgbGFzdCBvbmUuXG4gICAqIEBwYXJhbSBpbmRleFRvQ2hlY2sgbnVtYmVyIGlzIHRoZSBpbmRleCBudW1iZXIgb2YgdGhlIGltYWdlICh0aGUgZmlyc3Qgb3IgdGhlIGxhc3Qgb25lKS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZW1pdEJvdW5kYXJ5RXZlbnQoYWN0aW9uOiBBY3Rpb24sIGluZGV4VG9DaGVjazogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gdG8gZW1pdCBmaXJzdC9sYXN0IGV2ZW50XG4gICAgc3dpdGNoIChpbmRleFRvQ2hlY2spIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRGaXJzdEltYWdlKG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgYWN0aW9uLCB0cnVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmltYWdlcy5sZW5ndGggLSAxOlxuICAgICAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdExhc3RJbWFnZShuZXcgSW1hZ2VNb2RhbEV2ZW50KHRoaXMuaWQsIGFjdGlvbiwgdHJ1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJtb2RhbC1nYWxsZXJ5LXdyYXBwZXJcIlxuICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2liaWxpdHlDb25maWcubW9kYWxHYWxsZXJ5Q29udGVudEFyaWFMYWJlbFwiXG4gICAgIFt0aXRsZV09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnLm1vZGFsR2FsbGVyeUNvbnRlbnRUaXRsZVwiXG4gICAgIGtzQ2xpY2tPdXRzaWRlIFtjbGlja091dHNpZGVFbmFibGVdPVwiZW5hYmxlQ2xvc2VPdXRzaWRlXCJcbiAgICAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgkZXZlbnQpXCI+XG5cbiAgPGRpdiBpZD1cImZsZXgtbWluLWhlaWdodC1pZS1maXhcIj5cbiAgICA8ZGl2IGlkPVwibW9kYWwtZ2FsbGVyeS1jb250YWluZXJcIj5cblxuICAgICAgPGtzLXVwcGVyLWJ1dHRvbnMgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SW1hZ2VdPVwiY3VycmVudEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUpPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmF2aWdhdGUpPVwib25OYXZpZ2F0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb3dubG9hZCk9XCJvbkRvd25sb2FkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQnV0dG9uKT1cIm9uQ2xvc2VHYWxsZXJ5QnV0dG9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW4pPVwib25GdWxsU2NyZWVuKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbUVtaXQpPVwib25DdXN0b21FbWl0KCRldmVudClcIj48L2tzLXVwcGVyLWJ1dHRvbnM+XG5cbiAgICAgIDxrcy1jdXJyZW50LWltYWdlIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VzXT1cImltYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEltYWdlXT1cImN1cnJlbnRJbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNPcGVuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRJbWFnZSk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VJbWFnZSk9XCJvbkNoYW5nZUN1cnJlbnRJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUdhbGxlcnkpPVwib25DbG9zZUdhbGxlcnkoJGV2ZW50KVwiPjwva3MtY3VycmVudC1pbWFnZT5cblxuICAgICAgPGRpdj5cbiAgICAgICAgPGtzLWRvdHMgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgW2ltYWdlc109XCJpbWFnZXNcIlxuICAgICAgICAgICAgICAgICBbY3VycmVudEltYWdlXT1cImN1cnJlbnRJbWFnZVwiXG4gICAgICAgICAgICAgICAgIFtkb3RzQ29uZmlnXT1cImRvdHNDb25maWdcIlxuICAgICAgICAgICAgICAgICAoY2xpY2tEb3QpPVwib25DbGlja0RvdCgkZXZlbnQpXCI+PC9rcy1kb3RzPlxuXG4gICAgICAgIDxrcy1wcmV2aWV3cyBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2ltYWdlc109XCJpbWFnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRJbWFnZV09XCJjdXJyZW50SW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImN1c3RvbVByZXZpZXdzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrUHJldmlldyk9XCJvbkNsaWNrUHJldmlldygkZXZlbnQpXCI+PC9rcy1wcmV2aWV3cz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1nYWxsZXJ5L21vZGFsLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFxQixTQUFTLEVBQ3JELFlBQVksRUFBRSxNQUFNLEVBQXFCLFdBQVcsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUNqRixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUtwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFTLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFLE9BQU8sRUFBNEMsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBa0IsTUFBTSwwQ0FBMEMsQ0FBQztBQU9qRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFZM0UsTUFBTSxPQUFPLHFCQUFxQjtJQXdFaEM7Ozs7T0FJRztJQUVILFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUdILGNBQWMsQ0FBQyxLQUFvQjtRQUNqQyxLQUFLLENB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Q0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7OEdBM2lCVSxxQkFBcUIsa0JBOEZ0QixXQUFXLGdEQUdYLFdBQVc7a0dBakdWLHFCQUFxQix3U0FJckIscUJBQXFCLDhEQ3ZDbEMsb3lEQTBDQTs7MkZEUGEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzswQkFnRzVDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLE1BQU07MkJBQUMsV0FBVztpS0E3RitCLHFCQUFxQjtzQkFBeEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMEVsRCxVQUFVO3NCQURULFlBQVk7dUJBQUMsaUJBQWlCO2dCQVcvQixjQUFjO3NCQUZiLFlBQVk7dUJBQUMsb0NBQW9DLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM3RCxZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsXG4gIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUExBVEZPUk1fSUQsIFNlY3VyaXR5Q29udGV4dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRElBTE9HX0RBVEEgfSBmcm9tICcuL21vZGFsLWdhbGxlcnkudG9rZW5zJztcbmltcG9ydCB7IEltYWdlLCBJbWFnZU1vZGFsRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG90c0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2RvdHMtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCdXR0b25Db25maWcsIEJ1dHRvbkV2ZW50LCBCdXR0b25zQ29uZmlnLCBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvYnV0dG9ucy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEludGVybmFsTGliSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS1pbnRlcm5hbC5jbGFzcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9hY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBDdXJyZW50SW1hZ2VDb21wb25lbnQsIEltYWdlTG9hZEV2ZW50IH0gZnJvbSAnLi4vY3VycmVudC1pbWFnZS9jdXJyZW50LWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZC12YWxpZGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlib2FyZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2tleWJvYXJkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJldmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL3ByZXZpZXctY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTbGlkZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL3NsaWRlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2FjY2Vzc2liaWxpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBsYWluR2FsbGVyeUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL3BsYWluLWdhbGxlcnktY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLU19ERUZBVUxUX0FDQ0VTU0lCSUxJVFlfQ09ORklHIH0gZnJvbSAnLi4vYWNjZXNzaWJpbGl0eS1kZWZhdWx0JztcbmltcG9ydCB7IEN1cnJlbnRJbWFnZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2N1cnJlbnQtaW1hZ2UtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb2RhbEdhbGxlcnlTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1nYWxsZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvbGliLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9kYWxHYWxsZXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvbW9kYWwtZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3MtbW9kYWwtZ2FsbGVyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1nYWxsZXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtZ2FsbGVyeS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbEdhbGxlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIEN1cnJlbnRJbWFnZUNvbXBvbmVudCB0byBpbnZva2UgbWV0aG9kcyBvbiBpdC5cbiAgICovXG4gIEBWaWV3Q2hpbGQoQ3VycmVudEltYWdlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBjdXJyZW50SW1hZ2VDb21wb25lbnQ6IEN1cnJlbnRJbWFnZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVW5pcXVlIGlkICg+PTApIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoaXMgbGlicmFyeS4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgYXJlIHVzaW5nXG4gICAqIHRoZSBzZXJ2aWNlIHRvIGNhbGwgbW9kYWwgZ2FsbGVyeSB3aXRob3V0IG9wZW4gaXQgbWFudWFsbHkuXG4gICAqL1xuICBpZDogbnVtYmVyO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYEJ1dHRvbnNDb25maWdgIHRvIHNob3cvaGlkZSBidXR0b25zLlxuICAgKi9cbiAgYnV0dG9uc0NvbmZpZzogQnV0dG9uc0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEJvb2xlYW4gdG8gZW5hYmxlIG1vZGFsLWdhbGxlcnkgY2xvc2UgYmVoYXZpb3VyIHdoZW4gY2xpY2tpbmdcbiAgICogb24gdGhlIHNlbWktdHJhbnNwYXJlbnQgYmFja2dyb3VuZC4gRW5hYmxlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgZW5hYmxlQ2xvc2VPdXRzaWRlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBEb3RzQ29uZmlnYCB0byBpbml0IERvdHNDb21wb25lbnQncyBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyBhIHBhcmFtIHRvIHNob3cvaGlkZSBkb3RzLlxuICAgKi9cbiAgZG90c0NvbmZpZzogRG90c0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBQcmV2aWV3Q29uZmlnYCB0byBpbml0IFByZXZpZXdzQ29tcG9uZW50J3MgZmVhdHVyZXMuXG4gICAqIEZvciBpbnN0YW5jZSwgaXQgY29udGFpbnMgYSBwYXJhbSB0byBzaG93L2hpZGUgcHJldmlld3MuXG4gICAqL1xuICBwcmV2aWV3Q29uZmlnOiBQcmV2aWV3Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFNsaWRlQ29uZmlnYCB0byBpbml0IHNpZGUgcHJldmlld3MgYW5kIGBpbmZpbml0ZSBzbGlkaW5nYC5cbiAgICovXG4gIHNsaWRlQ29uZmlnOiBTbGlkZUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBBY2Nlc3NpYmlsaXR5Q29uZmlnYCB0byBpbml0IGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIGl0IGNvbnRhaW5zIHRpdGxlcywgYWx0IHRleHRzLCBhcmlhLWxhYmVscyBhbmQgc28gb24uXG4gICAqL1xuICBhY2Nlc3NpYmlsaXR5Q29uZmlnOiBBY2Nlc3NpYmlsaXR5Q29uZmlnID0gS1NfREVGQVVMVF9BQ0NFU1NJQklMSVRZX0NPTkZJRztcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBLZXlib2FyZENvbmZpZ2AgdG8gYXNzaWduIGN1c3RvbSBrZXlzIHRvIEVTQywgUklHSFQgYW5kIExFRlQga2V5Ym9hcmQncyBhY3Rpb25zLlxuICAgKi9cbiAga2V5Ym9hcmRDb25maWc6IEtleWJvYXJkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFBsYWluR2FsbGVyeUNvbmZpZ2AgdG8gY29uZmlndXJlIHRoZSBwbGFpbiBnYWxsZXJ5LlxuICAgKi9cbiAgcGxhaW5HYWxsZXJ5Q29uZmlnOiBQbGFpbkdhbGxlcnlDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgcmVwcmVzZW50aW5nIHRoZSBtb2RlbCBvZiB0aGlzIGxpYnJhcnkgd2l0aCBhbGwgaW1hZ2VzLCB0aHVtYnMgYW5kIHNvIG9uLlxuICAgKi9cbiAgaW1hZ2VzOiBJbnRlcm5hbExpYkltYWdlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRlbXBsYXRlIHJlZmVyZW5jZSB0byB1c2UgdG8gcmVuZGVyIHByZXZpZXdzLlxuICAgKi9cbiAgY3VzdG9tUHJldmlld3NUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogYEltYWdlYCB0aGF0IGlzIHZpc2libGUgcmlnaHQgbm93LlxuICAgKi9cbiAgY3VycmVudEltYWdlOiBJbnRlcm5hbExpYkltYWdlO1xuICAvKipcbiAgICogQm9vbGVhbiB0byBvcGVuIHRoZSBtb2RhbCBnYWxsZXJ5LiBGYWxzZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgc2hvd0dhbGxlcnkgPSBmYWxzZTtcbiAgLyoqXG4gICAqIE9iamVjdCB0byBjb25maWd1cmUgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHVwZGF0ZUltYWdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb3N0TGlzdGVuZXIgdG8gY2F0Y2ggYnJvd3NlcidzIGJhY2sgYnV0dG9uIGFuZCBkZXN0cm95IHRoZSBnYWxsZXJ5LlxuICAgKiBUaGlzIHByZXZlbnRzIHdlaXJlZCBiZWhhdmlvdXIgYWJvdXQgc2Nyb2xsaW5nLlxuICAgKiBBZGRlZCB0byBmaXggdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL0tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L2lzc3Vlcy8xNTlcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpwb3BzdGF0ZScpXG4gIG9uUG9wU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUdhbGxlcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3N0TGlzdGVuZXIgdG8gY2F0Y2ggY3RybCtzL21ldGErcyBhbmQgZG93bmxvYWQgdGhlIGN1cnJlbnQgaW1hZ2UuXG4gICAqIEluc3BpcmVkIGJ5IGh0dHBzOi8vbmV0YmFzYWwuY29tL2FkZC1rZXlib2FyZC1zaG9ydGN1dHMtdG8teW91ci1hbmd1bGFyLWFwcC05YmYyZTg5ODYyYjNcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29kZS5jb250cm9sLmtleVMnLCBbJyRldmVudCddKSAvLyB3aW5kb3dzXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29kZS5tZXRhLmtleVMnLCBbJyRldmVudCddKSAvLyBtYWNPU1xuICBvblNhdmVMaXN0ZW5lcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5kb3dubG9hZEltYWdlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERJQUxPR19EQVRBKSBwcml2YXRlIGRpYWxvZ0NvbnRlbnQ6IE1vZGFsR2FsbGVyeUNvbmZpZyxcbiAgICBwcml2YXRlIG1vZGFsR2FsbGVyeVNlcnZpY2U6IE1vZGFsR2FsbGVyeVNlcnZpY2UsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaWRWYWxpZGF0b3JTZXJ2aWNlOiBJZFZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgdGhpcy5pZCA9ICh0aGlzLmRpYWxvZ0NvbnRlbnQgYXMgTW9kYWxHYWxsZXJ5Q29uZmlnKS5pZDtcbiAgICB0aGlzLmltYWdlcyA9ICh0aGlzLmRpYWxvZ0NvbnRlbnQgYXMgTW9kYWxHYWxsZXJ5Q29uZmlnKS5pbWFnZXMgYXMgSW50ZXJuYWxMaWJJbWFnZVtdO1xuICAgIHRoaXMuY3VycmVudEltYWdlID0gKHRoaXMuZGlhbG9nQ29udGVudCBhcyBNb2RhbEdhbGxlcnlDb25maWcpLmN1cnJlbnRJbWFnZSBhcyBJbnRlcm5hbExpYkltYWdlO1xuICAgIHRoaXMubGliQ29uZmlnID0gKHRoaXMuZGlhbG9nQ29udGVudCBhcyBNb2RhbEdhbGxlcnlDb25maWcpLmxpYkNvbmZpZztcbiAgICB0aGlzLmN1c3RvbVByZXZpZXdzVGVtcGxhdGUgPSAodGhpcy5kaWFsb2dDb250ZW50IGFzIE1vZGFsR2FsbGVyeUNvbmZpZykucHJldmlld3NUZW1wbGF0ZTtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuaWQsIHRoaXMubGliQ29uZmlnKTtcblxuICAgIHRoaXMudXBkYXRlSW1hZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLnVwZGF0ZUltYWdlcyQuc3Vic2NyaWJlKChpbWFnZXM6IEltYWdlW10pID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VzID0gaW1hZ2VzLm1hcCgoaW1hZ2U6IEltYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0ltYWdlOiBJbnRlcm5hbExpYkltYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgaW1hZ2UsIHsgcHJldmlvdXNseUxvYWRlZDogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiBuZXdJbWFnZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbml0SW1hZ2VzKCk7XG4gICAgICB0aGlzLmltYWdlcy5mb3JFYWNoKChpbWFnZTogSW50ZXJuYWxMaWJJbWFnZSkgPT4ge1xuICAgICAgICBpZiAoaW1hZ2UuaWQgPT09IHRoaXMuY3VycmVudEltYWdlLmlkKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25Jbml0wrQgdG8gaW5pdCBpbWFnZXMgY2FsbGluZyBgaW5pdEltYWdlcygpYC5cbiAgICogVGhpcyBpcyBhbiBhbmd1bGFyIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqIEluIHBhcnRpY3VsYXIsIGl0J3MgY2FsbGVkIG9ubHkgb25lIHRpbWUhISFcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWRWYWxpZGF0b3JTZXJ2aWNlLmNoZWNrQW5kQWRkKHRoaXMuaWQpO1xuXG4gICAgLy8gaWQgaXMgYSBtYW5kYXRvcnkgaW5wdXQgYW5kIG11c3QgYSBudW1iZXIgPiAwXG4gICAgaWYgKCghdGhpcy5pZCAmJiB0aGlzLmlkICE9PSAwKSB8fCB0aGlzLmlkIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJ1tpZF09XCJhIG51bWJlciA+PSAwXCInIGlzIGEgbWFuZGF0b3J5IGlucHV0IGluIGFuZ3VsYXItbW9kYWwtZ2FsbGVyeS5gICtcbiAgICAgICAgYElmIHlvdSBhcmUgdXNpbmcgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgbGlicmFyeSwgcGxlYXNlIGJlIHN1cmUgdG8gdXNlIGRpZmZlcmVudCBpZHNgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyh0aGlzLmlkKTtcbiAgICBpZiAoIWxpYkNvbmZpZyB8fCAhbGliQ29uZmlnLmRvdHNDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBhbmQgZG90c0NvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmRvdHNDb25maWcgPSBsaWJDb25maWcuZG90c0NvbmZpZztcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbml0SW1hZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBjdXN0b20gdXBwZXIgYnV0dG9ucy5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICovXG4gIG9uQ3VzdG9tRW1pdChldmVudDogQnV0dG9uRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRvRW1pdDogQnV0dG9uRXZlbnQgPSB0aGlzLmdldEJ1dHRvbkV2ZW50VG9FbWl0KGV2ZW50KTtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkJlZm9yZUhvb2soZXZlbnRUb0VtaXQpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQWZ0ZXJIb29rKGV2ZW50VG9FbWl0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIGJ5IHRoZSBmdWxsLXNjcmVlbiB1cHBlciBidXR0b24uXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkXG4gICAqL1xuICBvbkZ1bGxTY3JlZW4oZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0gdGhpcy5nZXRCdXR0b25FdmVudFRvRW1pdChldmVudCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50VG9FbWl0KTtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICBjb25zdCBkb2M6IGFueSA9IGRvY3VtZW50IGFzIGFueTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgY29uc3QgZG9jRWw6IGFueSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XG5cbiAgICBjb25zdCBmdWxsc2NyZWVuRGlzYWJsZWQ6IGJvb2xlYW4gPSAhZG9jLmZ1bGxzY3JlZW5FbGVtZW50ICYmICFkb2Mud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQ7XG5cbiAgICAvLyBJbiBTYWZhcmkgYHJlcXVlc3RGdWxsc2NyZWVuYCBhbmQgYGV4aXRGdWxsc2NyZWVuYCBhcmUgdW5kZWZpbmVkLiBTYWZhcmkgcmVxdWlyZXMgdGhlIHByZWZpeGVkIHZlcnNpb24gYHdlYmtpdC1gXG4gICAgLy8gYW5kIGl0IGRvZXNuJ3QgcmV0dXJuIHByb21pc2VzLlxuXG4gICAgLy8gSSBjYW5ub3QgY2FsbCBgZW1pdEJ1dHRvbkFmdGVySG9va2Agb25seSBpZiByZXF1ZXN0RnVsbFNjcmVlbiBpcyBzdWNjZXNzZnVsLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBndWFyYW50ZWVzIGFjcm9zcyBicm93c2VycyBhbmRcbiAgICAvLyBJIHNob3VsZCBhbHNvIGhhbmRsZSB0aGUgY2FzZSB3aXRoIGtleWJvYXJkIFwiZXNjXCIgYnV0dG9uLlxuXG4gICAgaWYgKGZ1bGxzY3JlZW5EaXNhYmxlZCkge1xuICAgICAgaWYgKGRvY0VsLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIGRvY0VsLnJlcXVlc3RGdWxsc2NyZWVuKClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJlcXVlc3QgZnVsbCBzY3JlZW4nKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZG9jRWwud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgLy8gRm9yIFNhZmFyaSBhbmQgaXQgZG9lc24ndCByZXR1cm4gYSBwcm9taXNlXG4gICAgICAgIGRvY0VsLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkb2MuZXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZG9jLmV4aXRGdWxsc2NyZWVuKClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJlcXVlc3QgZXhpdCBmdWxsIHNjcmVlbicpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChkb2Mud2Via2l0RXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgLy8gRm9yIFNhZmFyaSBhbmQgaXQgZG9lc24ndCByZXR1cm4gYSBwcm9taXNlXG4gICAgICAgIGRvYy53ZWJraXRFeGl0RnVsbHNjcmVlbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQWZ0ZXJIb29rKGV2ZW50VG9FbWl0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIGJ5IHRoZSBkZWxldGUgdXBwZXIgYnV0dG9uLlxuICAgKiBAcGFyYW0gZXZlbnQgQnV0dG9uRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25EZWxldGUoZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0gdGhpcy5nZXRCdXR0b25FdmVudFRvRW1pdChldmVudCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50VG9FbWl0KTtcblxuICAgIGlmICh0aGlzLmltYWdlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuY2xvc2VHYWxsZXJ5KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRJbWFnZUNvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjdXJyZW50SW1hZ2VDb21wb25lbnQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VJbmRleFRvRGVsZXRlOiBudW1iZXIgPSB0aGlzLmN1cnJlbnRJbWFnZUNvbXBvbmVudC5nZXRJbmRleFRvRGVsZXRlKGV2ZW50LmltYWdlIGFzIEludGVybmFsTGliSW1hZ2UpO1xuICAgIGlmIChpbWFnZUluZGV4VG9EZWxldGUgPT09IHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIGxhc3QgaW1hZ2VcbiAgICAgIHRoaXMuY3VycmVudEltYWdlQ29tcG9uZW50LnByZXZJbWFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUNvbXBvbmVudC5uZXh0SW1hZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudFRvRW1pdCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSB0aGUgbmF2aWdhdGUgdXBwZXIgYnV0dG9uLlxuICAgKiBAcGFyYW0gZXZlbnQgQnV0dG9uRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25OYXZpZ2F0ZShldmVudDogQnV0dG9uRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRvRW1pdDogQnV0dG9uRXZlbnQgPSB0aGlzLmdldEJ1dHRvbkV2ZW50VG9FbWl0KGV2ZW50KTtcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkJlZm9yZUhvb2soZXZlbnRUb0VtaXQpO1xuICAgIC8vIFRvIHN1cHBvcnQgU1NSXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmIChldmVudFRvRW1pdC5pbWFnZSAmJiBldmVudFRvRW1pdC5pbWFnZS5tb2RhbC5leHRVcmwpIHtcbiAgICAgICAgLy8gd2hlcmUgSSBzaG91bGQgb3BlbiB0aGlzIGxpbms/IFRoZSBjdXJyZW50IHRhYiBvciBhbm90aGVyIG9uZT9cbiAgICAgICAgaWYgKGV2ZW50VG9FbWl0LmJ1dHRvbiAmJiBldmVudFRvRW1pdC5idXR0b24uZXh0VXJsSW5OZXdUYWIpIHtcbiAgICAgICAgICAvLyBpbiB0aGlzIGNhc2UgSSBzaG91bGQgdXNlIHRhcmdldCBfYmxhbmsgdG8gb3BlbiB0aGUgdXJsIGluIGEgbmV3IHRhYiwgaG93ZXZlciB0aGVzZSBpcyBhIHNlY3VyaXR5IGlzc3VlLlxuICAgICAgICAgIC8vIFByZXZlbnQgUmV2ZXJzZSBUYWJuYWJiaW5nJ3MgYXR0YWNrcyAoaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9SZXZlcnNlX1RhYm5hYmJpbmcpXG4gICAgICAgICAgLy8gU29tZSByZXNvdXJjZXM6XG4gICAgICAgICAgLy8gLSBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhwL0hUTUw1X1NlY3VyaXR5X0NoZWF0X1NoZWV0I1RhYm5hYmJpbmdcbiAgICAgICAgICAvLyAtIGh0dHBzOi8vbWVkaXVtLmNvbS9Aaml0Yml0L3RhcmdldC1ibGFuay10aGUtbW9zdC11bmRlcmVzdGltYXRlZC12dWxuZXJhYmlsaXR5LWV2ZXItOTZlMzI4MzAxZjRjXG4gICAgICAgICAgLy8gLSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L29wZW5cbiAgICAgICAgICBjb25zdCBuZXdXaW5kb3c6IFdpbmRvdyB8IG51bGwgPSB3aW5kb3cub3BlbihldmVudFRvRW1pdC5pbWFnZS5tb2RhbC5leHRVcmwsICdub29wZW5lcixub3JlZmVycmVyLCcpO1xuICAgICAgICAgIC8vIGl0IHJldHVybnMgbnVsbCBpZiB0aGUgY2FsbCBmYWlsZWQsIHNvIEkgaGF2ZSB0byBkbyB0aGlzIGNoZWNrXG4gICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xuICAgICAgICAgICAgbmV3V2luZG93Lm9wZW5lciA9IG51bGw7IC8vIHJlcXVpcmVkIHRvIHByZXZlbnQgc2VjdXJpdHkgaXNzdWVzXG4gICAgICAgICAgICAvLyBlbWl0IG9ubHkgaW4gY2FzZSBvZiBzdWNjZXNzXG4gICAgICAgICAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudFRvRW1pdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYXRpb25IcmVmKGV2ZW50VG9FbWl0LmltYWdlLm1vZGFsLmV4dFVybCk7XG4gICAgICAgICAgLy8gZW1pdCBvbmx5IGluIGNhc2Ugb2Ygc3VjY2Vzc1xuICAgICAgICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQWZ0ZXJIb29rKGV2ZW50VG9FbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBkZWZpbmVkIHRvIGJlIHNwaWVkIGFuZCByZXBsYWNlZCBpbiB1bml0IHRlc3Rpbmcgd2l0aCBhIGZha2UgbWV0aG9kIGNhbGwuXG4gICAqIEl0IG11c3QgYmUgcHVibGljIHRvIGJlIGFibGUgdG8gdXNlIGphc21pbmUgc3B5T24gbWV0aG9kLlxuICAgKiBAcGFyYW0gbmV3SHJlZiBzdHJpbmcgbmV3IHVybFxuICAgKi9cbiAgdXBkYXRlTG9jYXRpb25IcmVmKG5ld0hyZWY6IHN0cmluZykge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbmV3SHJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIGJ5IHRoZSBkb3dubG9hZCB1cHBlciBidXR0b24uXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBldmVudCBwYXlsb2FkXG4gICAqL1xuICBvbkRvd25sb2FkKGV2ZW50OiBCdXR0b25FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50VG9FbWl0OiBCdXR0b25FdmVudCA9IHRoaXMuZ2V0QnV0dG9uRXZlbnRUb0VtaXQoZXZlbnQpO1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudFRvRW1pdCk7XG4gICAgdGhpcy5kb3dubG9hZEltYWdlKCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25BZnRlckhvb2soZXZlbnRUb0VtaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgYnkgdGhlIGNsb3NlIHVwcGVyIGJ1dHRvbi5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGNsb3NlIG1ldGhvZC4gYEFjdGlvbi5OT1JNQUxgIGJ5IGRlZmF1bHRcbiAgICovXG4gIG9uQ2xvc2VHYWxsZXJ5QnV0dG9uKGV2ZW50OiBCdXR0b25FdmVudCwgYWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uTk9STUFMKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0gdGhpcy5nZXRCdXR0b25FdmVudFRvRW1pdChldmVudCk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50VG9FbWl0KTtcbiAgICB0aGlzLmNsb3NlR2FsbGVyeShhY3Rpb24sIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIGJ5IEN1cnJlbnRJbWFnZUNvbXBvbmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBldmVudCBwYXlsb2FkXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBjbG9zZSBtZXRob2QuIGBBY3Rpb24uTk9STUFMYCBieSBkZWZhdWx0XG4gICAqL1xuICBvbkNsb3NlR2FsbGVyeShldmVudDogSW1hZ2VNb2RhbEV2ZW50LCBhY3Rpb246IEFjdGlvbiA9IEFjdGlvbi5OT1JNQUwpOiB2b2lkIHtcbiAgICAvLyByZW1hcCBJbWFnZU1vZGFsRXZlbnQgdG8gQnV0dG9uRXZlbnRcbiAgICBjb25zdCBidXR0b25FdmVudDogQnV0dG9uRXZlbnQgPSB7XG4gICAgICBidXR0b246IHtcbiAgICAgICAgdHlwZTogQnV0dG9uVHlwZS5DTE9TRVxuICAgICAgfSBhcyBCdXR0b25Db25maWcsXG4gICAgICBpbWFnZTogbnVsbCxcbiAgICAgIGFjdGlvbjogZXZlbnQuYWN0aW9uLFxuICAgICAgZ2FsbGVyeUlkOiBldmVudC5nYWxsZXJ5SWRcbiAgICB9O1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0QnV0dG9uQmVmb3JlSG9vayhidXR0b25FdmVudCk7XG4gICAgdGhpcy5jbG9zZUdhbGxlcnkoYWN0aW9uLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNsb3NlIHRoZSBtb2RhbCBnYWxsZXJ5IHNwZWNpZnlpbmcgdGhlIGFjdGlvbi5cbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gYWN0aW9uIHR5cGUuIGBBY3Rpb24uTk9STUFMYCBieSBkZWZhdWx0XG4gICAqIEBwYXJhbSBjbGlja091dHNpZGUgYm9vbGVhbiB0aGF0IGlzIHRydWUgaWYgY2FsbGVkIGNsaWNraW5nIG9uIHRoZSBtb2RhbCBiYWNrZ3JvdW5kLiBGYWxzZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgY2xvc2VHYWxsZXJ5KGFjdGlvbjogQWN0aW9uID0gQWN0aW9uLk5PUk1BTCwgY2xpY2tPdXRzaWRlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdENsb3NlKG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgYWN0aW9uLCB0cnVlKSk7XG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmNsb3NlKHRoaXMuaWQsIGNsaWNrT3V0c2lkZSk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSBpbWFnZSBjaGFuZ2VzIGFuZCB1c2VkIHRvIHVwZGF0ZSB0aGUgYGN1cnJlbnRJbWFnZWAgb2JqZWN0LlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VNb2RhbEV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICovXG4gIG9uQ2hhbmdlQ3VycmVudEltYWdlKGV2ZW50OiBJbWFnZU1vZGFsRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJbmRleDogbnVtYmVyID0gZXZlbnQucmVzdWx0IGFzIG51bWJlcjtcbiAgICBpZiAobmV3SW5kZXggPCAwIHx8IG5ld0luZGV4ID49IHRoaXMuaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEltYWdlID0gdGhpcy5pbWFnZXNbbmV3SW5kZXhdO1xuXG4gICAgLy8gZW1pdCBjdXJyZW50IHZpc2libGUgaW1hZ2UgaW5kZXhcbiAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdFNob3cobmV3IEltYWdlTW9kYWxFdmVudCh0aGlzLmlkLCBldmVudC5hY3Rpb24sIG5ld0luZGV4ICsgMSkpO1xuXG4gICAgLy8gZW1pdCBmaXJzdC9sYXN0IGV2ZW50IGJhc2VkIG9uIG5ld0luZGV4IHZhbHVlXG4gICAgdGhpcy5lbWl0Qm91bmRhcnlFdmVudChldmVudC5hY3Rpb24sIG5ld0luZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIHdoZW4geW91IGNsaWNrICdvdXRzaWRlJyAoaS5lLiBvbiB0aGUgc2VtaS10cmFuc3BhcmVudCBiYWNrZ3JvdW5kKVxuICAgKiB0byBjbG9zZSB0aGUgbW9kYWwgZ2FsbGVyeSBpZiBgZW5hYmxlQ2xvc2VPdXRzaWRlYCBpcyB0cnVlLlxuICAgKiBAcGFyYW0gZXZlbnQgYm9vbGVhbiB0aGF0IGlzIHRydWUgdG8gY2xvc2UgdGhlIG1vZGFsIGdhbGxlcnksIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQgJiYgdGhpcy5lbmFibGVDbG9zZU91dHNpZGUpIHtcbiAgICAgIHRoaXMuY2xvc2VHYWxsZXJ5KEFjdGlvbi5DTElDSywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhbiBpbWFnZSBpcyBsb2FkZWQgYW5kIHRoZSBsb2FkaW5nIHNwaW5uZXIgaGFzIGdvbmUuXG4gICAqIEl0IHNldHMgdGhlIHByZXZpb3VzbHlMb2FkZWQgZmxhZyBpbnNpZGUgdGhlIEltYWdlIHRvIGhpZGUgbG9hZGluZyBzcGlubmVyIHdoZW4gZGlzcGxheWVkIGFnYWluLlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VMb2FkRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25JbWFnZUxvYWQoZXZlbnQ6IEltYWdlTG9hZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gc2V0cyBhcyBwcmV2aW91c2x5IGxvYWRlZCB0aGUgaW1hZ2Ugd2l0aCBpbmRleCBzcGVjaWZpZWQgYnkgYGV2ZW50LnN0YXR1c2BcbiAgICB0aGlzLmltYWdlcyA9IHRoaXMuaW1hZ2VzLm1hcCgoaW1nOiBJbnRlcm5hbExpYkltYWdlKSA9PiB7XG4gICAgICBpZiAoaW1nICYmIGltZy5pZCA9PT0gZXZlbnQuaWQpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGltZywgeyBwcmV2aW91c2x5TG9hZGVkOiBldmVudC5zdGF0dXMgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW1nO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhIGRvdCBpcyBjbGlja2VkIGFuZCB1c2VkIHRvIHVwZGF0ZSB0aGUgY3VycmVudCBpbWFnZS5cbiAgICogQHBhcmFtIGluZGV4IG51bWJlciBpbmRleCBvZiB0aGUgY2xpY2tlZCBkb3RcbiAgICovXG4gIG9uQ2xpY2tEb3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEltYWdlID0gdGhpcy5pbWFnZXNbaW5kZXhdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhbiBpbWFnZSBwcmV2aWV3IGlzIGNsaWNrZWQgYW5kIHVzZWQgdG8gdXBkYXRlIHRoZSBjdXJyZW50IGltYWdlLlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VNb2RhbEV2ZW50IHByZXZpZXcgaW1hZ2VcbiAgICovXG4gIG9uQ2xpY2tQcmV2aWV3KGV2ZW50OiBJbWFnZU1vZGFsRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ3VycmVudEltYWdlKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gY2xlYW51cCByZXNvdXJjZXMuXG4gICAqIFRoaXMgaXMgYW4gYW5ndWxhciBsaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVwZGF0ZUltYWdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5pZFZhbGlkYXRvclNlcnZpY2UucmVtb3ZlKHRoaXMuaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBkb3dubG9hZCB0aGUgY3VycmVudCBpbWFnZSwgb25seSBpZiBgZG93bmxvYWRhYmxlYCBpcyB0cnVlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBkb3dubG9hZEltYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkID09PSBudWxsIHx8IHRoaXMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gaWQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyh0aGlzLmlkKTtcbiAgICBpZiAoIWxpYkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gbGliQ29uZmlnIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRJbWFnZUNvbmZpZzogQ3VycmVudEltYWdlQ29uZmlnIHwgdW5kZWZpbmVkID0gbGliQ29uZmlnLmN1cnJlbnRJbWFnZUNvbmZpZztcbiAgICBpZiAoY3VycmVudEltYWdlQ29uZmlnICYmICFjdXJyZW50SW1hZ2VDb25maWcuZG93bmxvYWRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZG93bmxvYWRJbWFnZUFsbEJyb3dzZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNvbnZlcnQgYSBiYXNlNjQgdG8gYSBCbG9iXG4gICAqIEBwYXJhbSBiYXNlNjREYXRhIHN0cmluZyB3aXRoIGJhc2U2NCBkYXRhXG4gICAqIEBwYXJhbSBjb250ZW50VHlwZSBzdHJpbmcgd2l0aCB0aGUgTUlNRSB0eXBlXG4gICAqIEByZXR1cm4gQmxvYiBjb252ZXJ0ZWQgZnJvbSB0aGUgaW5wdXQgYmFzZTY0RGF0YVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBiYXNlNjR0b0Jsb2IoYmFzZTY0RGF0YTogc3RyaW5nLCBjb250ZW50VHlwZTogc3RyaW5nID0gJycpOiBCbG9iIHtcbiAgICBjb25zdCBzbGljZVNpemUgPSAxMDI0O1xuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzOiBzdHJpbmcgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgIGNvbnN0IGJ5dGVzTGVuZ3RoOiBudW1iZXIgPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XG4gICAgY29uc3Qgc2xpY2VzQ291bnQ6IG51bWJlciA9IE1hdGguY2VpbChieXRlc0xlbmd0aCAvIHNsaWNlU2l6ZSk7XG4gICAgY29uc3QgYnl0ZUFycmF5czogQXJyYXk8VWludDhBcnJheT4gPSBuZXcgQXJyYXkoc2xpY2VzQ291bnQpO1xuICAgIGZvciAobGV0IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xuICAgICAgY29uc3QgYmVnaW46IG51bWJlciA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7XG4gICAgICBjb25zdCBlbmQ6IG51bWJlciA9IE1hdGgubWluKGJlZ2luICsgc2xpY2VTaXplLCBieXRlc0xlbmd0aCk7XG4gICAgICBjb25zdCBieXRlczogQXJyYXk8bnVtYmVyPiA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG4gICAgICBmb3IgKGxldCBvZmZzZXQgPSBiZWdpbiwgaSA9IDA7IG9mZnNldCA8IGVuZDsgKytpLCArK29mZnNldCkge1xuICAgICAgICBieXRlc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzW29mZnNldF0uY2hhckNvZGVBdCgwKTtcbiAgICAgIH1cbiAgICAgIGJ5dGVBcnJheXNbc2xpY2VJbmRleF0gPSBuZXcgVWludDhBcnJheShieXRlcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGRvd25sb2FkIHRoZSBjdXJyZW50IGltYWdlIGZvciBhbGwgYnJvd3NlcnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGRvd25sb2FkSW1hZ2VBbGxCcm93c2VycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxldCBpc0Jhc2U2NCA9IGZhbHNlO1xuICAgIGxldCBpbWc6IHN0cmluZztcbiAgICAvLyBjb252ZXJ0IGEgU2FmZVJlc291cmNlVXJsIHRvIGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiB0aGlzLmN1cnJlbnRJbWFnZS5tb2RhbC5pbWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbWcgPSB0aGlzLmN1cnJlbnRJbWFnZS5tb2RhbC5pbWcgYXMgc3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBpdCdzIGEgU2FmZVJlc291cmNlVXJsXG4gICAgICBpbWcgPSB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMLCB0aGlzLmN1cnJlbnRJbWFnZS5tb2RhbC5pbWcpIGFzIHN0cmluZztcbiAgICB9XG4gICAgaWYgKGltZy5pbmNsdWRlcygnZGF0YTppbWFnZS8nKSB8fCBpbWcuaW5jbHVkZXMoJztiYXNlNjQsJykpIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbjogc3RyaW5nID0gaW1nLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvJywgJycpLnNwbGl0KCc7YmFzZTY0LCcpWzBdO1xuICAgICAgY29uc3QgcHVyZUJhc2U2NDogc3RyaW5nID0gaW1nLnNwbGl0KCc7YmFzZTY0LCcpWzFdO1xuICAgICAgY29uc3QgYmxvYjogQmxvYiA9IHRoaXMuYmFzZTY0dG9CbG9iKHB1cmVCYXNlNjQsICdpbWFnZS8nICsgZXh0ZW5zaW9uKTtcbiAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBpc0Jhc2U2NCA9IHRydWU7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMuY3VycmVudEltYWdlLCBpc0Jhc2U2NCwgZXh0ZW5zaW9uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmsuaHJlZiA9IGltZztcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIHRoaXMuZ2V0RmlsZU5hbWUodGhpcy5jdXJyZW50SW1hZ2UsIGlzQmFzZTY0KSk7XG4gICAgfVxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZSBgQnV0dG9uRXZlbnRgIHRvIGVtaXQsIG1lcmdpbmcgdGhlIGlucHV0IGBCdXR0b25FdmVudGBcbiAgICogd2l0aCB0aGUgY3VycmVudCBpbWFnZS5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWQgdG8gcmV0dXJuXG4gICAqIEByZXR1cm5zIEJ1dHRvbkV2ZW50IGV2ZW50IHBheWxvYWQgd2l0aCB0aGUgY3VycmVudCBpbWFnZSBpbmNsdWRlZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRCdXR0b25FdmVudFRvRW1pdChldmVudDogQnV0dG9uRXZlbnQpOiBCdXR0b25FdmVudCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgaW1hZ2U6IHRoaXMuY3VycmVudEltYWdlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGdldCB0aGUgZmlsZSBuYW1lIGZyb20gYW4gaW5wdXQgcGF0aC5cbiAgICogVGhpcyBpcyB1c2VkIGVpdGhlciB0byBnZXQgdGhlIGltYWdlJ3MgbmFtZSBmcm9tIGl0cyBwYXRoIG9yIGZyb20gdGhlIEltYWdlIGl0c2VsZixcbiAgICogaWYgc3BlY2lmaWVkIGFzICdkb3dubG9hZEZpbGVOYW1lJyBieSB0aGUgdXNlci5cbiAgICogQHBhcmFtIGltYWdlIEltYWdlIGltYWdlIHRvIGV4dHJhY3QgaXRzIGZpbGUgbmFtZVxuICAgKiBAcGFyYW0gaXNCYXNlNjQgYm9vbGVhbiB0byBzZXQgaWYgdGhlIGltYWdlIGlzIGEgYmFzZTY0IGZpbGUgb3Igbm90LiBGYWxzZSBieSBkZWZhdWx0LlxuICAgKiBAcGFyYW0gYmFzZTY0RXh0ZW5zaW9uIHN0cmluZyB0byBmb3JjZSB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBiYXNlNjQgaW1hZ2UuIEVtcHR5IHN0cmluZyBieSBkZWZhdWx0LlxuICAgKiBAcmV0dXJucyBzdHJpbmcgc3RyaW5nIGZpbGUgbmFtZSBvZiB0aGUgaW5wdXQgaW1hZ2UuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldEZpbGVOYW1lKGltYWdlOiBJbWFnZSwgaXNCYXNlNjQ6IGJvb2xlYW4gPSBmYWxzZSwgYmFzZTY0RXh0ZW5zaW9uOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgaWYgKCFpbWFnZS5tb2RhbC5kb3dubG9hZEZpbGVOYW1lIHx8IGltYWdlLm1vZGFsLmRvd25sb2FkRmlsZU5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAoaXNCYXNlNjQpIHtcbiAgICAgICAgcmV0dXJuIGBJbWFnZS0ke2ltYWdlLmlkfS4ke2Jhc2U2NEV4dGVuc2lvbiAhPT0gJycgPyBiYXNlNjRFeHRlbnNpb24gOiAncG5nJ31gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChpbWFnZS5tb2RhbC5pbWcgYXMgc3RyaW5nKS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbWFnZS5tb2RhbC5kb3dubG9hZEZpbGVOYW1lO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBpbml0aWFsaXplIGBpbWFnZXNgIGFzIGFycmF5IG9mIGBJbWFnZWBzLlxuICAgKiBBbHNvLCBpdCB3aWxsIGVtaXQgSW1hZ2VNb2RhbEV2ZW50IHRvIHNheSB0aGF0IGltYWdlcyBhcmUgbG9hZGVkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0SW1hZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0SGFzRGF0YShuZXcgSW1hZ2VNb2RhbEV2ZW50KHRoaXMuaWQsIEFjdGlvbi5MT0FELCB0cnVlKSk7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaW1hZ2VzLmluZGV4T2YodGhpcy5jdXJyZW50SW1hZ2UpO1xuICAgIC8vIGVtaXQgYSBuZXcgSW1hZ2VNb2RhbEV2ZW50IHdpdGggdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGltYWdlXG4gICAgdGhpcy5tb2RhbEdhbGxlcnlTZXJ2aWNlLmVtaXRTaG93KG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgQWN0aW9uLkxPQUQsIGN1cnJlbnRJbmRleCArIDEpKTtcblxuICAgIC8vIGVtaXQgZmlyc3QvbGFzdCBldmVudCBiYXNlZCBvbiBuZXdJbmRleCB2YWx1ZVxuICAgIHRoaXMuZW1pdEJvdW5kYXJ5RXZlbnQoQWN0aW9uLk5PUk1BTCwgY3VycmVudEluZGV4KTtcblxuICAgIHRoaXMuc2hvd0dhbGxlcnkgPSB0aGlzLmltYWdlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGVtaXQgZXZlbnRzIHdoZW4gZWl0aGVyIHRoZSBsYXN0IG9yIHRoZSBmaXJzdCBpbWFnZSBhcmUgdmlzaWJsZS5cbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gRW51bSBvZiB0eXBlIEFjdGlvbiB0aGF0IHJlcHJlc2VudHMgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgdGhhdCBjaGFuZ2VkIHRoZVxuICAgKiAgY3VycmVudCBpbWFnZSB0byB0aGUgZmlyc3Qgb25lIG9yIHRoZSBsYXN0IG9uZS5cbiAgICogQHBhcmFtIGluZGV4VG9DaGVjayBudW1iZXIgaXMgdGhlIGluZGV4IG51bWJlciBvZiB0aGUgaW1hZ2UgKHRoZSBmaXJzdCBvciB0aGUgbGFzdCBvbmUpLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0Qm91bmRhcnlFdmVudChhY3Rpb246IEFjdGlvbiwgaW5kZXhUb0NoZWNrOiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyB0byBlbWl0IGZpcnN0L2xhc3QgZXZlbnRcbiAgICBzd2l0Y2ggKGluZGV4VG9DaGVjaykge1xuICAgICAgY2FzZSAwOlxuICAgICAgICB0aGlzLm1vZGFsR2FsbGVyeVNlcnZpY2UuZW1pdEZpcnN0SW1hZ2UobmV3IEltYWdlTW9kYWxFdmVudCh0aGlzLmlkLCBhY3Rpb24sIHRydWUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDE6XG4gICAgICAgIHRoaXMubW9kYWxHYWxsZXJ5U2VydmljZS5lbWl0TGFzdEltYWdlKG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgYWN0aW9uLCB0cnVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBpZD1cIm1vZGFsLWdhbGxlcnktd3JhcHBlclwiXG4gICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZy5tb2RhbEdhbGxlcnlDb250ZW50QXJpYUxhYmVsXCJcbiAgICAgW3RpdGxlXT1cImFjY2Vzc2liaWxpdHlDb25maWcubW9kYWxHYWxsZXJ5Q29udGVudFRpdGxlXCJcbiAgICAga3NDbGlja091dHNpZGUgW2NsaWNrT3V0c2lkZUVuYWJsZV09XCJlbmFibGVDbG9zZU91dHNpZGVcIlxuICAgICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cblxuICA8ZGl2IGlkPVwiZmxleC1taW4taGVpZ2h0LWllLWZpeFwiPlxuICAgIDxkaXYgaWQ9XCJtb2RhbC1nYWxsZXJ5LWNvbnRhaW5lclwiPlxuXG4gICAgICA8a3MtdXBwZXItYnV0dG9ucyBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRJbWFnZV09XCJjdXJyZW50SW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZSk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuYXZpZ2F0ZSk9XCJvbk5hdmlnYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvd25sb2FkKT1cIm9uRG93bmxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VCdXR0b24pPVwib25DbG9zZUdhbGxlcnlCdXR0b24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbik9XCJvbkZ1bGxTY3JlZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tRW1pdCk9XCJvbkN1c3RvbUVtaXQoJGV2ZW50KVwiPjwva3MtdXBwZXItYnV0dG9ucz5cblxuICAgICAgPGtzLWN1cnJlbnQtaW1hZ2UgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZXNdPVwiaW1hZ2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SW1hZ2VdPVwiY3VycmVudEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc09wZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobG9hZEltYWdlKT1cIm9uSW1hZ2VMb2FkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZUltYWdlKT1cIm9uQ2hhbmdlQ3VycmVudEltYWdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlR2FsbGVyeSk9XCJvbkNsb3NlR2FsbGVyeSgkZXZlbnQpXCI+PC9rcy1jdXJyZW50LWltYWdlPlxuXG4gICAgICA8ZGl2PlxuICAgICAgICA8a3MtZG90cyBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICBbaW1hZ2VzXT1cImltYWdlc1wiXG4gICAgICAgICAgICAgICAgIFtjdXJyZW50SW1hZ2VdPVwiY3VycmVudEltYWdlXCJcbiAgICAgICAgICAgICAgICAgW2RvdHNDb25maWddPVwiZG90c0NvbmZpZ1wiXG4gICAgICAgICAgICAgICAgIChjbGlja0RvdCk9XCJvbkNsaWNrRG90KCRldmVudClcIj48L2tzLWRvdHM+XG5cbiAgICAgICAgPGtzLXByZXZpZXdzIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICBbaW1hZ2VzXT1cImltYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICBbY3VycmVudEltYWdlXT1cImN1cnJlbnRJbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiY3VzdG9tUHJldmlld3NUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2tQcmV2aWV3KT1cIm9uQ2xpY2tQcmV2aWV3KCRldmVudClcIj48L2tzLXByZXZpZXdzPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -10,7 +10,7 @@ const DEFAULT_DIALOG_CONFIG = {
10
10
  backdropClass: 'ks-modal-gallery-backdrop',
11
11
  panelClass: 'ks-modal-gallery-panel'
12
12
  };
13
- class ModalGalleryService {
13
+ export class ModalGalleryService {
14
14
  constructor(overlay, configService) {
15
15
  this.overlay = overlay;
16
16
  this.configService = configService;
@@ -158,12 +158,11 @@ class ModalGalleryService {
158
158
  positionStrategy
159
159
  });
160
160
  }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModalGalleryService, deps: [{ token: i1.Overlay }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
162
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModalGalleryService, providedIn: 'root' }); }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModalGalleryService, deps: [{ token: i1.Overlay }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
162
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModalGalleryService, providedIn: 'root' }); }
163
163
  }
164
- export { ModalGalleryService };
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ModalGalleryService, decorators: [{
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModalGalleryService, decorators: [{
166
165
  type: Injectable,
167
166
  args: [{ providedIn: 'root' }]
168
- }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i2.ConfigService }]; } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsLWdhbGxlcnkvbW9kYWwtZ2FsbGVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBbUMsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFrQ3RELE1BQU0scUJBQXFCLEdBQXNCO0lBQy9DLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGFBQWEsRUFBRSwyQkFBMkI7SUFDMUMsVUFBVSxFQUFFLHdCQUF3QjtDQUNyQyxDQUFDO0FBRUYsTUFDYSxtQkFBbUI7SUFROUIsWUFBb0IsT0FBZ0IsRUFBVSxhQUE0QjtRQUF0RCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQbEUsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzlDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUkxQywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztJQUczRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxNQUEwQjtRQUM3Qiw4Q0FBOEM7UUFDOUMsTUFBTSxVQUFVLEdBQWUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BELHdDQUF3QztRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FB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UUFDbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCO1FBQ3RCLE1BQU0sZ0JBQWdCLEdBQTJCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFILE9BQU8sSUFBSSxhQUFhLENBQUM7WUFDdkIsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFdBQVc7WUFDOUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLGFBQWE7WUFDbEQsVUFBVSxFQUFFLHFCQUFxQixDQUFDLFVBQVU7WUFDNUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQ3JELGdCQUFnQjtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhLVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQURQLE1BQU07O1NBQ2xCLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTW9kYWxHYWxsZXJ5UmVmIH0gZnJvbSAnLi9tb2RhbC1nYWxsZXJ5LXJlZic7XG5pbXBvcnQgeyBJbWFnZSwgSW1hZ2VNb2RhbEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UuY2xhc3MnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1dHRvbkV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvYnV0dG9ucy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vZGFsR2FsbGVyeUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL21vZGFsLWdhbGxlcnktY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9saWItY29uZmlnLmludGVyZmFjZSc7XG5cbi8vIHByaXZhdGUgaW50ZXJmYWNlIHVzZWQgb25seSBpbiB0aGlzIGZpbGVcbmludGVyZmFjZSBNb2RhbERpYWxvZ0NvbmZpZyB7XG4gIHBhbmVsQ2xhc3M6IHN0cmluZztcbiAgaGFzQmFja2Ryb3A6IGJvb2xlYW47XG4gIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXlsb2FkIHRvIGJlIGVtaXR0ZWQgdmlhIHtAbGluayB0cmlnZ2VyQXR0YWNoVG9PdmVybGF5fSB0byBlbmFibGUge0BsaW5rIEF0dGFjaFRvT3ZlcmxheVNlcnZpY2V9XG4gKiB0byBhdHRhY2ggdGhlIHtAbGluayBNb2RhbEdhbGxlcnlDb21wb25lbnR9IHRvIHRoZSBvdmVybGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNoVG9PdmVybGF5UGF5bG9hZCB7XG4gIC8qKlxuICAgKiBPdmVybGF5IG9iamVjdCBjcmVhdGVkIHVzaW5nIEFuZ3VsYXIgQ0RLIEFQSXNcbiAgICovXG4gIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIC8qKlxuICAgKiBEaWFsb2cgZGF0YSB0byBiZSBpbmplY3RlZCBpbnRvIHRoZSB7QGxpbmsgTW9kYWxHYWxsZXJ5Q29tcG9uZW50fVxuICAgKiBjb250YWluczogaWQsIGFycmF5IG9mIGltYWdlcywgY3VycmVudCBpbWFnZSBhbmQgb3B0aW9uYWxseSB0aGUgY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICovXG4gIGNvbmZpZzogTW9kYWxHYWxsZXJ5Q29uZmlnO1xuICAvKipcbiAgICogT2JqZWN0IHRvIGNvbnRyb2wgdGhlIGRpYWxvZyBpbnN0YW5jZVxuICAgKi9cbiAgZGlhbG9nUmVmOiBNb2RhbEdhbGxlcnlSZWY7XG59XG5cbmNvbnN0IERFRkFVTFRfRElBTE9HX0NPTkZJRzogTW9kYWxEaWFsb2dDb25maWcgPSB7XG4gIGhhc0JhY2tkcm9wOiB0cnVlLFxuICBiYWNrZHJvcENsYXNzOiAna3MtbW9kYWwtZ2FsbGVyeS1iYWNrZHJvcCcsXG4gIHBhbmVsQ2xhc3M6ICdrcy1tb2RhbC1nYWxsZXJ5LXBhbmVsJ1xufTtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTW9kYWxHYWxsZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgdXBkYXRlSW1hZ2VzID0gbmV3IFN1YmplY3Q8SW1hZ2VbXT4oKTtcbiAgdXBkYXRlSW1hZ2VzJCA9IHRoaXMudXBkYXRlSW1hZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgZGlhbG9nUmVmOiBNb2RhbEdhbGxlcnlSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRyaWdnZXJBdHRhY2hUb092ZXJsYXkgPSBuZXcgRXZlbnRFbWl0dGVyPEF0dGFjaFRvT3ZlcmxheVBheWxvYWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gb3BlbiBtb2RhbCBnYWxsZXJ5IHBhc3NpbmcgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGNvbmZpZyBNb2RhbEdhbGxlcnlDb25maWcgdGhhdCBjb250YWluczogaWQsIGFycmF5IG9mIGltYWdlcywgY3VycmVudCBpbWFnZSBhbmQgb3B0aW9uYWxseSB0aGUgY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHJldHVybiBNb2RhbEdhbGxlcnlSZWYgfCB1bmRlZmluZWQgaXMgdGhlIG9iamVjdCB1c2VkIHRvIGxpc3RlbiBmb3IgZXZlbnRzLlxuICAgKi9cbiAgb3Blbihjb25maWc6IE1vZGFsR2FsbGVyeUNvbmZpZyk6IE1vZGFsR2FsbGVyeVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgLy8gUmV0dXJucyBhbiBPdmVybGF5UmVmIHdoaWNoIGlzIGEgUG9ydGFsSG9zdFxuICAgIGNvbnN0IG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICAvLyBJbnN0YW50aWF0ZSBhIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nXG4gICAgdGhpcy5kaWFsb2dSZWYgPSBuZXcgTW9kYWxHYWxsZXJ5UmVmKG92ZXJsYXlSZWYpO1xuICAgIC8vIEF0dGFjaCBkaWFsb2cgY29udGFpbmVyXG4gICAgdGhpcy50cmlnZ2VyQXR0YWNoVG9PdmVybGF5LmVtaXQoe1xuICAgICAgb3ZlcmxheVJlZixcbiAgICAgIGNvbmZpZyxcbiAgICAgIGRpYWxvZ1JlZjogdGhpcy5kaWFsb2dSZWZcbiAgICB9KTtcbiAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWY7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNsb3NlIGEgbW9kYWwgZ2FsbGVyeSBwcmV2aW91c2x5IG9wZW5lZC5cbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBtb2RhbCBnYWxsZXJ5XG4gICAqIEBwYXJhbSBjbGlja091dHNpZGUgYm9vbGVhbiBpcyB0cnVlIGlmIGNsb3NlZCBjbGlja2luZyBvbiB0aGUgbW9kYWwgYmFja2Ryb3AsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGNsb3NlKGlkOiBudW1iZXIsIGNsaWNrT3V0c2lkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyhpZCk7XG4gICAgaWYgKGNsaWNrT3V0c2lkZSkge1xuICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmICYmIGxpYkNvbmZpZyAmJiBsaWJDb25maWcuZW5hYmxlQ2xvc2VPdXRzaWRlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHVwZGF0ZSBpbWFnZXMgYXJyYXkuXG4gICAqIEBwYXJhbSBpbWFnZXMgSW1hZ2VbXSB1cGRhdGVkIGFycmF5IG9mIGltYWdlc1xuICAgKi9cbiAgdXBkYXRlTW9kYWxJbWFnZXMoaW1hZ2VzOiBJbWFnZVtdKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVJbWFnZXMubmV4dChpbWFnZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBlbWl0IGNsb3NlIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VNb2RhbEV2ZW50IGlzIHRoZSBldmVudCBwYXlsb2FkXG4gICAqL1xuICBlbWl0Q2xvc2UoZXZlbnQ6IEltYWdlTW9kYWxFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuZW1pdENsb3NlKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZW1pdCBzaG93IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VNb2RhbEV2ZW50IGlzIHRoZSBldmVudCBwYXlsb2FkXG4gICAqL1xuICBlbWl0U2hvdyhldmVudDogSW1hZ2VNb2RhbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5lbWl0U2hvdyhldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGVtaXQgZmlyc3RJbWFnZSBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdEZpcnN0SW1hZ2UoZXZlbnQ6IEltYWdlTW9kYWxFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuZW1pdEZpcnN0SW1hZ2UoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBlbWl0IGxhc3RJbWFnZSBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdExhc3RJbWFnZShldmVudDogSW1hZ2VNb2RhbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5lbWl0TGFzdEltYWdlKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZW1pdCBoYXNEYXRhIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgSW1hZ2VNb2RhbEV2ZW50IGlzIHRoZSBldmVudCBwYXlsb2FkXG4gICAqL1xuICBlbWl0SGFzRGF0YShldmVudDogSW1hZ2VNb2RhbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5lbWl0SGFzRGF0YShldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGVtaXQgYnV0dG9uQmVmb3JlSG9vayBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEJ1dHRvbkV2ZW50IGlzIHRoZSBldmVudCBwYXlsb2FkXG4gICAqL1xuICBlbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudDogQnV0dG9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmVtaXRCdXR0b25CZWZvcmVIb29rKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZW1pdCBidXR0b25BZnRlckhvb2sgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdEJ1dHRvbkFmdGVySG9vayhldmVudDogQnV0dG9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmVtaXRCdXR0b25BZnRlckhvb2soZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGNyZWF0ZSBhbiBPdmVybGF5IHVzaW5nIEFuZ3VsYXIgQ0RLIEFQSXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKCk7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gY3JlYXRlIGFuIE92ZXJsYXlDb25maWcgaW5zdGFuY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5OiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpO1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogREVGQVVMVF9ESUFMT0dfQ09ORklHLmhhc0JhY2tkcm9wLFxuICAgICAgYmFja2Ryb3BDbGFzczogREVGQVVMVF9ESUFMT0dfQ09ORklHLmJhY2tkcm9wQ2xhc3MsXG4gICAgICBwYW5lbENsYXNzOiBERUZBVUxUX0RJQUxPR19DT05GSUcucGFuZWxDbGFzcyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneVxuICAgIH0pO1xuICB9XG59XG4iXX0=
167
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i2.ConfigService }] });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsLWdhbGxlcnkvbW9kYWwtZ2FsbGVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBbUMsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFrQ3RELE1BQU0scUJBQXFCLEdBQXNCO0lBQy9DLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGFBQWEsRUFBRSwyQkFBMkI7SUFDMUMsVUFBVSxFQUFFLHdCQUF3QjtDQUNyQyxDQUFDO0FBR0YsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixZQUFvQixPQUFnQixFQUFVLGFBQTRCO1FBQXRELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVBsRSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsa0JBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBSTFDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO0lBRzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE1BQTBCO1FBQzdCLDhDQUE4QztRQUM5QyxNQUFNLFVBQVUsR0FBZSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEQsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLENB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QUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0I7UUFDdEIsTUFBTSxnQkFBZ0IsR0FBMkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUgsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUN2QixXQUFXLEVBQUUscUJBQXFCLENBQUMsV0FBVztZQUM5QyxhQUFhLEVBQUUscUJBQXFCLENBQUMsYUFBYTtZQUNsRCxVQUFVLEVBQUUscUJBQXFCLENBQUMsVUFBVTtZQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBaEtVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRFAsTUFBTTs7MkZBQ2xCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1vZGFsR2FsbGVyeVJlZiB9IGZyb20gJy4vbW9kYWwtZ2FsbGVyeS1yZWYnO1xuaW1wb3J0IHsgSW1hZ2UsIEltYWdlTW9kYWxFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25FdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2J1dHRvbnMtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb2RhbEdhbGxlcnlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9tb2RhbC1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvbGliLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vLyBwcml2YXRlIGludGVyZmFjZSB1c2VkIG9ubHkgaW4gdGhpcyBmaWxlXG5pbnRlcmZhY2UgTW9kYWxEaWFsb2dDb25maWcge1xuICBwYW5lbENsYXNzOiBzdHJpbmc7XG4gIGhhc0JhY2tkcm9wOiBib29sZWFuO1xuICBiYWNrZHJvcENsYXNzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGF5bG9hZCB0byBiZSBlbWl0dGVkIHZpYSB7QGxpbmsgdHJpZ2dlckF0dGFjaFRvT3ZlcmxheX0gdG8gZW5hYmxlIHtAbGluayBBdHRhY2hUb092ZXJsYXlTZXJ2aWNlfVxuICogdG8gYXR0YWNoIHRoZSB7QGxpbmsgTW9kYWxHYWxsZXJ5Q29tcG9uZW50fSB0byB0aGUgb3ZlcmxheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaFRvT3ZlcmxheVBheWxvYWQge1xuICAvKipcbiAgICogT3ZlcmxheSBvYmplY3QgY3JlYXRlZCB1c2luZyBBbmd1bGFyIENESyBBUElzXG4gICAqL1xuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICAvKipcbiAgICogRGlhbG9nIGRhdGEgdG8gYmUgaW5qZWN0ZWQgaW50byB0aGUge0BsaW5rIE1vZGFsR2FsbGVyeUNvbXBvbmVudH1cbiAgICogY29udGFpbnM6IGlkLCBhcnJheSBvZiBpbWFnZXMsIGN1cnJlbnQgaW1hZ2UgYW5kIG9wdGlvbmFsbHkgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25maWc6IE1vZGFsR2FsbGVyeUNvbmZpZztcbiAgLyoqXG4gICAqIE9iamVjdCB0byBjb250cm9sIHRoZSBkaWFsb2cgaW5zdGFuY2VcbiAgICovXG4gIGRpYWxvZ1JlZjogTW9kYWxHYWxsZXJ5UmVmO1xufVxuXG5jb25zdCBERUZBVUxUX0RJQUxPR19DT05GSUc6IE1vZGFsRGlhbG9nQ29uZmlnID0ge1xuICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgYmFja2Ryb3BDbGFzczogJ2tzLW1vZGFsLWdhbGxlcnktYmFja2Ryb3AnLFxuICBwYW5lbENsYXNzOiAna3MtbW9kYWwtZ2FsbGVyeS1wYW5lbCdcbn07XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1vZGFsR2FsbGVyeVNlcnZpY2Uge1xuICBwcml2YXRlIHVwZGF0ZUltYWdlcyA9IG5ldyBTdWJqZWN0PEltYWdlW10+KCk7XG4gIHVwZGF0ZUltYWdlcyQgPSB0aGlzLnVwZGF0ZUltYWdlcy5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGRpYWxvZ1JlZjogTW9kYWxHYWxsZXJ5UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0cmlnZ2VyQXR0YWNoVG9PdmVybGF5ID0gbmV3IEV2ZW50RW1pdHRlcjxBdHRhY2hUb092ZXJsYXlQYXlsb2FkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIG9wZW4gbW9kYWwgZ2FsbGVyeSBwYXNzaW5nIHRoZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBjb25maWcgTW9kYWxHYWxsZXJ5Q29uZmlnIHRoYXQgY29udGFpbnM6IGlkLCBhcnJheSBvZiBpbWFnZXMsIGN1cnJlbnQgaW1hZ2UgYW5kIG9wdGlvbmFsbHkgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4gTW9kYWxHYWxsZXJ5UmVmIHwgdW5kZWZpbmVkIGlzIHRoZSBvYmplY3QgdXNlZCB0byBsaXN0ZW4gZm9yIGV2ZW50cy5cbiAgICovXG4gIG9wZW4oY29uZmlnOiBNb2RhbEdhbGxlcnlDb25maWcpOiBNb2RhbEdhbGxlcnlSZWYgfCB1bmRlZmluZWQge1xuICAgIC8vIFJldHVybnMgYW4gT3ZlcmxheVJlZiB3aGljaCBpcyBhIFBvcnRhbEhvc3RcbiAgICBjb25zdCBvdmVybGF5UmVmOiBPdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgLy8gSW5zdGFudGlhdGUgYSByZWZlcmVuY2UgdG8gdGhlIGRpYWxvZ1xuICAgIHRoaXMuZGlhbG9nUmVmID0gbmV3IE1vZGFsR2FsbGVyeVJlZihvdmVybGF5UmVmKTtcbiAgICAvLyBBdHRhY2ggZGlhbG9nIGNvbnRhaW5lclxuICAgIHRoaXMudHJpZ2dlckF0dGFjaFRvT3ZlcmxheS5lbWl0KHtcbiAgICAgIG92ZXJsYXlSZWYsXG4gICAgICBjb25maWcsXG4gICAgICBkaWFsb2dSZWY6IHRoaXMuZGlhbG9nUmVmXG4gICAgfSk7XG4gICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjbG9zZSBhIG1vZGFsIGdhbGxlcnkgcHJldmlvdXNseSBvcGVuZWQuXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbW9kYWwgZ2FsbGVyeVxuICAgKiBAcGFyYW0gY2xpY2tPdXRzaWRlIGJvb2xlYW4gaXMgdHJ1ZSBpZiBjbG9zZWQgY2xpY2tpbmcgb24gdGhlIG1vZGFsIGJhY2tkcm9wLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjbG9zZShpZDogbnVtYmVyLCBjbGlja091dHNpZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoaWQpO1xuICAgIGlmIChjbGlja091dHNpZGUpIHtcbiAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZiAmJiBsaWJDb25maWcgJiYgbGliQ29uZmlnLmVuYWJsZUNsb3NlT3V0c2lkZSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB1cGRhdGUgaW1hZ2VzIGFycmF5LlxuICAgKiBAcGFyYW0gaW1hZ2VzIEltYWdlW10gdXBkYXRlZCBhcnJheSBvZiBpbWFnZXNcbiAgICovXG4gIHVwZGF0ZU1vZGFsSW1hZ2VzKGltYWdlczogSW1hZ2VbXSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW1hZ2VzLm5leHQoaW1hZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZW1pdCBjbG9zZSBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdENsb3NlKGV2ZW50OiBJbWFnZU1vZGFsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmVtaXRDbG9zZShldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGVtaXQgc2hvdyBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdFNob3coZXZlbnQ6IEltYWdlTW9kYWxFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuZW1pdFNob3coZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBlbWl0IGZpcnN0SW1hZ2UgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBJbWFnZU1vZGFsRXZlbnQgaXMgdGhlIGV2ZW50IHBheWxvYWRcbiAgICovXG4gIGVtaXRGaXJzdEltYWdlKGV2ZW50OiBJbWFnZU1vZGFsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmVtaXRGaXJzdEltYWdlKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZW1pdCBsYXN0SW1hZ2UgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBJbWFnZU1vZGFsRXZlbnQgaXMgdGhlIGV2ZW50IHBheWxvYWRcbiAgICovXG4gIGVtaXRMYXN0SW1hZ2UoZXZlbnQ6IEltYWdlTW9kYWxFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuZW1pdExhc3RJbWFnZShldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGVtaXQgaGFzRGF0YSBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEltYWdlTW9kYWxFdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdEhhc0RhdGEoZXZlbnQ6IEltYWdlTW9kYWxFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuZW1pdEhhc0RhdGEoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBlbWl0IGJ1dHRvbkJlZm9yZUhvb2sgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBCdXR0b25FdmVudCBpcyB0aGUgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgZW1pdEJ1dHRvbkJlZm9yZUhvb2soZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5lbWl0QnV0dG9uQmVmb3JlSG9vayhldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGVtaXQgYnV0dG9uQWZ0ZXJIb29rIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgQnV0dG9uRXZlbnQgaXMgdGhlIGV2ZW50IHBheWxvYWRcbiAgICovXG4gIGVtaXRCdXR0b25BZnRlckhvb2soZXZlbnQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5lbWl0QnV0dG9uQWZ0ZXJIb29rKGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBjcmVhdGUgYW4gT3ZlcmxheSB1c2luZyBBbmd1bGFyIENESyBBUElzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZygpO1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGNyZWF0ZSBhbiBPdmVybGF5Q29uZmlnIGluc3RhbmNlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneTogR2xvYmFsUG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKTtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IERFRkFVTFRfRElBTE9HX0NPTkZJRy5oYXNCYWNrZHJvcCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IERFRkFVTFRfRElBTE9HX0NPTkZJRy5iYWNrZHJvcENsYXNzLFxuICAgICAgcGFuZWxDbGFzczogREVGQVVMVF9ESUFMT0dfQ09ORklHLnBhbmVsQ2xhc3MsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3lcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  The MIT License (MIT)
3
3
 
4
- Copyright (C) 2017-2023 Stefano Cappa (Ks89)
4
+ Copyright (c) 2017-2024 Stefano Cappa (Ks89)
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
@@ -23,4 +23,4 @@
23
23
  */
24
24
  import { InjectionToken } from '@angular/core';
25
25
  export const DIALOG_DATA = new InjectionToken('DIALOG_DATA');
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS50b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LnRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFxQixhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMyBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbEdhbGxlcnlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9tb2RhbC1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgRElBTE9HX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48TW9kYWxHYWxsZXJ5Q29uZmlnPignRElBTE9HX0RBVEEnKTtcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZ2FsbGVyeS50b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LnRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFxQixhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNCBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbEdhbGxlcnlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9tb2RhbC1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgRElBTE9HX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48TW9kYWxHYWxsZXJ5Q29uZmlnPignRElBTE9HX0RBVEEnKTtcbiJdfQ==