cax-design-system 2.3.0 → 2.4.1

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 (48) hide show
  1. package/README.md +1 -1
  2. package/calendar/calendar.d.ts +2 -1
  3. package/esm2022/autocomplete/autocomplete.mjs +2 -2
  4. package/esm2022/calendar/calendar.mjs +8 -3
  5. package/esm2022/image/image.mjs +3 -3
  6. package/esm2022/logo/logo.mjs +1 -1
  7. package/esm2022/navigation/navigation.mjs +33 -6
  8. package/esm2022/overlaypanel/overlaypanel.mjs +2 -2
  9. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +2 -2
  10. package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +5 -0
  11. package/esm2022/tableconfiguration/public_api.mjs +3 -0
  12. package/esm2022/tableconfiguration/tableconfiguration.mjs +60 -0
  13. package/esm2022/tableconfiguration/tableconfiguration.module.mjs +16 -0
  14. package/fesm2022/cax-design-system-autocomplete.mjs +2 -2
  15. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  16. package/fesm2022/cax-design-system-calendar.mjs +7 -2
  17. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  18. package/fesm2022/cax-design-system-image.mjs +2 -2
  19. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  20. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  21. package/fesm2022/cax-design-system-navigation.mjs +32 -5
  22. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  23. package/fesm2022/cax-design-system-overlaypanel.mjs +2 -2
  24. package/fesm2022/cax-design-system-table.mjs +1 -1
  25. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  26. package/fesm2022/cax-design-system-tableconfiguration.mjs +80 -0
  27. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -0
  28. package/image/image.d.ts +2 -2
  29. package/logo/logo.d.ts +1 -1
  30. package/navigation/navigation.d.ts +11 -1
  31. package/package.json +190 -184
  32. package/resources/cax.min.scss +1 -1
  33. package/resources/cax.scss +44 -50
  34. package/resources/components/autocomplete/autocomplete.scss +4 -6
  35. package/resources/components/calendar/calendar.scss +19 -2
  36. package/resources/components/image/image.scss +4 -9
  37. package/resources/components/navigation/navigation.scss +16 -42
  38. package/resources/components/overlaypanel/overlaypanel.scss +1 -1
  39. package/resources/components/tableconfiguration/tableconfiguration.scss +115 -0
  40. package/resources/logo/dataX-dark.svg +11 -11
  41. package/resources/logo/dataX-icon-dark.svg +4 -5
  42. package/resources/logo/dataX-icon.svg +4 -5
  43. package/resources/logo/dataX.svg +11 -11
  44. package/tableconfiguration/index.d.ts +5 -0
  45. package/tableconfiguration/public_api.d.ts +2 -0
  46. package/tableconfiguration/tableconfiguration.d.ts +15 -0
  47. package/tableconfiguration/tableconfiguration.module.d.ts +7 -0
  48. package/resources/logo/usercard.png +0 -0
@@ -334,7 +334,7 @@ export class Image {
334
334
  };
335
335
  }
336
336
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Image, deps: [{ token: DOCUMENT }, { token: i1.caxConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
337
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Image, isStandalone: true, selector: "cax-image", inputs: { imageClass: "imageClass", imageStyle: "imageStyle", styleClass: "styleClass", style: "style", src: "src", srcSet: "srcSet", sizes: "sizes", size: "size", previewImageSrc: "previewImageSrc", previewImageSrcSet: "previewImageSrcSet", previewImageSizes: "previewImageSizes", alt: "alt", width: "width", height: "height", loading: "loading", appendTo: "appendTo", preview: ["preview", "preview", booleanAttribute], showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide", onImageError: "onImageError" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" }, classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }, { propertyName: "previewButton", first: true, predicate: ["previewButton"], descendants: true }, { propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\r\n <img\r\n [attr.src]=\"src\"\r\n [attr.srcset]=\"srcSet\"\r\n [attr.sizes]=\"sizes\"\r\n [attr.alt]=\"alt\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n [attr.loading]=\"loading\"\r\n [ngStyle]=\"imageStyle\"\r\n [class]=\"imageClass\"\r\n [ngClass]=\"sizeClass()\"\r\n (error)=\"imageError($event)\"\r\n />\r\n <button *ngIf=\"preview\" [attr.aria-label]=\"zoomImageAriaLabel\" type=\"button\" class=\"cax-image-preview-indicator\" (click)=\"onImageClick()\" #previewButton [ngStyle]=\"{ height: height + 'px', width: width + 'px', border: 'none' }\">\r\n <ng-container *ngIf=\"indicatorTemplate; else defaultTemplate\">\r\n <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <EyeIcon [styleClass]=\"'cax-image-preview-icon'\" />\r\n </ng-template>\r\n </button>\r\n <div #mask class=\"cax-image-mask cax-component-overlay cax-component-overlay-enter\" *ngIf=\"maskVisible\" [attr.aria-modal]=\"maskVisible\" role=\"dialog\" (click)=\"onMaskClick()\" (keydown)=\"onMaskKeydown($event)\" pFocusTrap>\r\n <div class=\"cax-image-toolbar\" (click)=\"handleToolbarClick($event)\">\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateRight()\" type=\"button\" [attr.aria-label]=\"rightAriaLabel()\">\r\n <RefreshIcon *ngIf=\"!rotateRightIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateRightIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateLeft()\" type=\"button\" [attr.aria-label]=\"leftAriaLabel()\">\r\n <UndoIcon *ngIf=\"!rotateLeftIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateLeftIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"isZoomOutDisabled\" [attr.aria-label]=\"zoomOutAriaLabel()\">\r\n <SearchMinusIcon *ngIf=\"!zoomOutIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomOutIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"isZoomInDisabled\" [attr.aria-label]=\"zoomInAriaLabel()\">\r\n <SearchPlusIcon *ngIf=\"!zoomInIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomInIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" type=\"button\" (click)=\"closePreview()\" [attr.aria-label]=\"closeAriaLabel()\" #closeButton>\r\n <TimesIcon *ngIf=\"!closeIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"closeIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"previewVisible\"\r\n [@animation]=\"{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\"\r\n (@animation.start)=\"onAnimationStart($event)\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <img [attr.src]=\"previewImageSrc ? previewImageSrc : src\" [attr.srcset]=\"previewImageSrcSet\" [attr.sizes]=\"previewImageSizes\" class=\"cax-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\" />\r\n </div>\r\n </div>\r\n</span>\r\n", styles: ["@layer cax{.cax-image-mask{display:flex;align-items:center;justify-content:center}.cax-image-preview-container{position:relative;display:inline-block;line-height:0}.cax-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.cax-image-preview-icon.pi{font-size:1.5rem}.cax-image-preview-icon.cax-icon{scale:1.5}.cax-image-preview-container:hover>.cax-image-preview-indicator{opacity:1;cursor:pointer}.cax-image-preview-container>img{cursor:pointer}.cax-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.cax-image-action.cax-link{display:flex;justify-content:center;align-items:center}.cax-image-action.cax-link[disabled]{opacity:.5}.cax-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}.cax-image-xsm{height:40px;width:auto}.cax-image-sm{height:80px;width:auto}.cax-image-md{height:120px;width:auto}.cax-image-lg{height:160px;width:auto}.cax-image-xl{height:200px;width:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: RefreshIcon, selector: "RefreshIcon" }, { kind: "component", type: EyeIcon, selector: "EyeIcon" }, { kind: "component", type: UndoIcon, selector: "UndoIcon" }, { kind: "component", type: SearchMinusIcon, selector: "SearchMinusIcon" }, { kind: "component", type: SearchPlusIcon, selector: "SearchPlusIcon" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "ngmodule", type: FocusTrapModule }], animations: [
337
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Image, isStandalone: true, selector: "cax-image", inputs: { imageClass: "imageClass", imageStyle: "imageStyle", styleClass: "styleClass", style: "style", src: "src", srcSet: "srcSet", sizes: "sizes", size: "size", previewImageSrc: "previewImageSrc", previewImageSrcSet: "previewImageSrcSet", previewImageSizes: "previewImageSizes", alt: "alt", width: "width", height: "height", loading: "loading", appendTo: "appendTo", preview: ["preview", "preview", booleanAttribute], showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide", onImageError: "onImageError" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" }, classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }, { propertyName: "previewButton", first: true, predicate: ["previewButton"], descendants: true }, { propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\r\n <img\r\n [attr.src]=\"src\"\r\n [attr.srcset]=\"srcSet\"\r\n [attr.sizes]=\"sizes\"\r\n [attr.alt]=\"alt\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n [attr.loading]=\"loading\"\r\n [ngStyle]=\"imageStyle\"\r\n [class]=\"imageClass\"\r\n [ngClass]=\"sizeClass()\"\r\n (error)=\"imageError($event)\"\r\n />\r\n <button *ngIf=\"preview\" [attr.aria-label]=\"zoomImageAriaLabel\" type=\"button\" class=\"cax-image-preview-indicator\" (click)=\"onImageClick()\" #previewButton [ngStyle]=\"{ height: height + 'px', width: width + 'px', border: 'none' }\">\r\n <ng-container *ngIf=\"indicatorTemplate; else defaultTemplate\">\r\n <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <EyeIcon [styleClass]=\"'cax-image-preview-icon'\" />\r\n </ng-template>\r\n </button>\r\n <div #mask class=\"cax-image-mask cax-component-overlay cax-component-overlay-enter\" *ngIf=\"maskVisible\" [attr.aria-modal]=\"maskVisible\" role=\"dialog\" (click)=\"onMaskClick()\" (keydown)=\"onMaskKeydown($event)\" pFocusTrap>\r\n <div class=\"cax-image-toolbar\" (click)=\"handleToolbarClick($event)\">\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateRight()\" type=\"button\" [attr.aria-label]=\"rightAriaLabel()\">\r\n <RefreshIcon *ngIf=\"!rotateRightIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateRightIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateLeft()\" type=\"button\" [attr.aria-label]=\"leftAriaLabel()\">\r\n <UndoIcon *ngIf=\"!rotateLeftIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateLeftIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"isZoomOutDisabled\" [attr.aria-label]=\"zoomOutAriaLabel()\">\r\n <SearchMinusIcon *ngIf=\"!zoomOutIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomOutIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"isZoomInDisabled\" [attr.aria-label]=\"zoomInAriaLabel()\">\r\n <SearchPlusIcon *ngIf=\"!zoomInIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomInIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" type=\"button\" (click)=\"closePreview()\" [attr.aria-label]=\"closeAriaLabel()\" #closeButton>\r\n <TimesIcon *ngIf=\"!closeIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"closeIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"previewVisible\"\r\n [@animation]=\"{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\"\r\n (@animation.start)=\"onAnimationStart($event)\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <img [attr.src]=\"previewImageSrc ? previewImageSrc : src\" [attr.srcset]=\"previewImageSrcSet\" [attr.sizes]=\"previewImageSizes\" class=\"cax-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\" />\r\n </div>\r\n </div>\r\n</span>\r\n", styles: ["@layer cax{.cax-image-mask{display:flex;align-items:center;justify-content:center}.cax-image-preview-container{position:relative;display:inline-block;line-height:0}.cax-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.cax-image-preview-icon.pi{font-size:1.5rem}.cax-image-preview-icon.cax-icon{scale:1.5}.cax-image-preview-container:hover>.cax-image-preview-indicator{opacity:1;cursor:pointer}.cax-image-preview-container>img{cursor:pointer}.cax-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.cax-image-action.cax-link{display:flex;justify-content:center;align-items:center}.cax-image-action.cax-link[disabled]{opacity:.5}.cax-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}.cax-image-sm{height:32px;width:auto}.cax-image-md{height:40px;width:auto}.cax-image-lg{height:48px;width:auto}.cax-image-xl{height:56px;width:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: RefreshIcon, selector: "RefreshIcon" }, { kind: "component", type: EyeIcon, selector: "EyeIcon" }, { kind: "component", type: UndoIcon, selector: "UndoIcon" }, { kind: "component", type: SearchMinusIcon, selector: "SearchMinusIcon" }, { kind: "component", type: SearchPlusIcon, selector: "SearchPlusIcon" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }, { kind: "ngmodule", type: FocusTrapModule }], animations: [
338
338
  trigger('animation', [
339
339
  transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),
340
340
  transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])
@@ -350,7 +350,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
350
350
  ])
351
351
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, SharedModule, RefreshIcon, EyeIcon, UndoIcon, SearchMinusIcon, SearchPlusIcon, TimesIcon, FocusTrapModule], host: {
352
352
  class: 'cax-element'
353
- }, template: "<span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\r\n <img\r\n [attr.src]=\"src\"\r\n [attr.srcset]=\"srcSet\"\r\n [attr.sizes]=\"sizes\"\r\n [attr.alt]=\"alt\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n [attr.loading]=\"loading\"\r\n [ngStyle]=\"imageStyle\"\r\n [class]=\"imageClass\"\r\n [ngClass]=\"sizeClass()\"\r\n (error)=\"imageError($event)\"\r\n />\r\n <button *ngIf=\"preview\" [attr.aria-label]=\"zoomImageAriaLabel\" type=\"button\" class=\"cax-image-preview-indicator\" (click)=\"onImageClick()\" #previewButton [ngStyle]=\"{ height: height + 'px', width: width + 'px', border: 'none' }\">\r\n <ng-container *ngIf=\"indicatorTemplate; else defaultTemplate\">\r\n <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <EyeIcon [styleClass]=\"'cax-image-preview-icon'\" />\r\n </ng-template>\r\n </button>\r\n <div #mask class=\"cax-image-mask cax-component-overlay cax-component-overlay-enter\" *ngIf=\"maskVisible\" [attr.aria-modal]=\"maskVisible\" role=\"dialog\" (click)=\"onMaskClick()\" (keydown)=\"onMaskKeydown($event)\" pFocusTrap>\r\n <div class=\"cax-image-toolbar\" (click)=\"handleToolbarClick($event)\">\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateRight()\" type=\"button\" [attr.aria-label]=\"rightAriaLabel()\">\r\n <RefreshIcon *ngIf=\"!rotateRightIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateRightIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateLeft()\" type=\"button\" [attr.aria-label]=\"leftAriaLabel()\">\r\n <UndoIcon *ngIf=\"!rotateLeftIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateLeftIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"isZoomOutDisabled\" [attr.aria-label]=\"zoomOutAriaLabel()\">\r\n <SearchMinusIcon *ngIf=\"!zoomOutIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomOutIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"isZoomInDisabled\" [attr.aria-label]=\"zoomInAriaLabel()\">\r\n <SearchPlusIcon *ngIf=\"!zoomInIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomInIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" type=\"button\" (click)=\"closePreview()\" [attr.aria-label]=\"closeAriaLabel()\" #closeButton>\r\n <TimesIcon *ngIf=\"!closeIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"closeIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"previewVisible\"\r\n [@animation]=\"{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\"\r\n (@animation.start)=\"onAnimationStart($event)\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <img [attr.src]=\"previewImageSrc ? previewImageSrc : src\" [attr.srcset]=\"previewImageSrcSet\" [attr.sizes]=\"previewImageSizes\" class=\"cax-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\" />\r\n </div>\r\n </div>\r\n</span>\r\n", styles: ["@layer cax{.cax-image-mask{display:flex;align-items:center;justify-content:center}.cax-image-preview-container{position:relative;display:inline-block;line-height:0}.cax-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.cax-image-preview-icon.pi{font-size:1.5rem}.cax-image-preview-icon.cax-icon{scale:1.5}.cax-image-preview-container:hover>.cax-image-preview-indicator{opacity:1;cursor:pointer}.cax-image-preview-container>img{cursor:pointer}.cax-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.cax-image-action.cax-link{display:flex;justify-content:center;align-items:center}.cax-image-action.cax-link[disabled]{opacity:.5}.cax-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}.cax-image-xsm{height:40px;width:auto}.cax-image-sm{height:80px;width:auto}.cax-image-md{height:120px;width:auto}.cax-image-lg{height:160px;width:auto}.cax-image-xl{height:200px;width:auto}}\n"] }]
353
+ }, template: "<span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\r\n <img\r\n [attr.src]=\"src\"\r\n [attr.srcset]=\"srcSet\"\r\n [attr.sizes]=\"sizes\"\r\n [attr.alt]=\"alt\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n [attr.loading]=\"loading\"\r\n [ngStyle]=\"imageStyle\"\r\n [class]=\"imageClass\"\r\n [ngClass]=\"sizeClass()\"\r\n (error)=\"imageError($event)\"\r\n />\r\n <button *ngIf=\"preview\" [attr.aria-label]=\"zoomImageAriaLabel\" type=\"button\" class=\"cax-image-preview-indicator\" (click)=\"onImageClick()\" #previewButton [ngStyle]=\"{ height: height + 'px', width: width + 'px', border: 'none' }\">\r\n <ng-container *ngIf=\"indicatorTemplate; else defaultTemplate\">\r\n <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <EyeIcon [styleClass]=\"'cax-image-preview-icon'\" />\r\n </ng-template>\r\n </button>\r\n <div #mask class=\"cax-image-mask cax-component-overlay cax-component-overlay-enter\" *ngIf=\"maskVisible\" [attr.aria-modal]=\"maskVisible\" role=\"dialog\" (click)=\"onMaskClick()\" (keydown)=\"onMaskKeydown($event)\" pFocusTrap>\r\n <div class=\"cax-image-toolbar\" (click)=\"handleToolbarClick($event)\">\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateRight()\" type=\"button\" [attr.aria-label]=\"rightAriaLabel()\">\r\n <RefreshIcon *ngIf=\"!rotateRightIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateRightIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"rotateLeft()\" type=\"button\" [attr.aria-label]=\"leftAriaLabel()\">\r\n <UndoIcon *ngIf=\"!rotateLeftIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"rotateLeftIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"isZoomOutDisabled\" [attr.aria-label]=\"zoomOutAriaLabel()\">\r\n <SearchMinusIcon *ngIf=\"!zoomOutIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomOutIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"isZoomInDisabled\" [attr.aria-label]=\"zoomInAriaLabel()\">\r\n <SearchPlusIcon *ngIf=\"!zoomInIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"zoomInIconTemplate\"></ng-template>\r\n </button>\r\n <button class=\"cax-image-action cax-link\" type=\"button\" (click)=\"closePreview()\" [attr.aria-label]=\"closeAriaLabel()\" #closeButton>\r\n <TimesIcon *ngIf=\"!closeIconTemplate\" />\r\n <ng-template *ngTemplateOutlet=\"closeIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"previewVisible\"\r\n [@animation]=\"{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }\"\r\n (@animation.start)=\"onAnimationStart($event)\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <img [attr.src]=\"previewImageSrc ? previewImageSrc : src\" [attr.srcset]=\"previewImageSrcSet\" [attr.sizes]=\"previewImageSizes\" class=\"cax-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\" />\r\n </div>\r\n </div>\r\n</span>\r\n", styles: ["@layer cax{.cax-image-mask{display:flex;align-items:center;justify-content:center}.cax-image-preview-container{position:relative;display:inline-block;line-height:0}.cax-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;outline:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.cax-image-preview-icon.pi{font-size:1.5rem}.cax-image-preview-icon.cax-icon{scale:1.5}.cax-image-preview-container:hover>.cax-image-preview-indicator{opacity:1;cursor:pointer}.cax-image-preview-container>img{cursor:pointer}.cax-image-toolbar{position:absolute;top:0;right:0;display:flex;z-index:1}.cax-image-action.cax-link{display:flex;justify-content:center;align-items:center}.cax-image-action.cax-link[disabled]{opacity:.5}.cax-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}.cax-image-sm{height:32px;width:auto}.cax-image-md{height:40px;width:auto}.cax-image-lg{height:48px;width:auto}.cax-image-xl{height:56px;width:auto}}\n"] }]
354
354
  }], ctorParameters: () => [{ type: Document, decorators: [{
355
355
  type: Inject,
356
356
  args: [DOCUMENT]
@@ -415,4 +415,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
415
415
  type: HostListener,
416
416
  args: ['document:keydown.escape', ['$event']]
417
417
  }] } });
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2UudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFhLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUU5RDs7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QkFBQyxhQUFhO2dCQUVNLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVztnQkE0T3lCLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50LCBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjYXhDb25maWcsIENheFRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2RvbSc7XG5pbXBvcnQgeyBFeWVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvZXllJztcbmltcG9ydCB7IFJlZnJlc2hJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvcmVmcmVzaCc7XG5pbXBvcnQgeyBTZWFyY2hNaW51c0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9zZWFyY2htaW51cyc7XG5pbXBvcnQgeyBTZWFyY2hQbHVzSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL3NlYXJjaHBsdXMnO1xuaW1wb3J0IHsgVGltZXNJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvdGltZXMnO1xuaW1wb3J0IHsgVW5kb0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy91bmRvJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IEZvY3VzVHJhcE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ZvY3VzdHJhcCc7XG5cbi8qKlxuICogRGlzcGxheXMgYW4gaW1hZ2Ugd2l0aCBwcmV2aWV3IGFuZCB0cmFuZm9ybWF0aW9uIG9wdGlvbnMuIEZvciBtdWx0aXBsZSBpbWFnZSwgc2VlIEdhbGxlcmlhLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtaW1hZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5odG1sJyxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNyknLCBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiB2b2lkJywgW2FuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMC43KScsIG9wYWNpdHk6IDAgfSkpXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJlZnJlc2hJY29uLCBFeWVJY29uLCBVbmRvSWNvbiwgU2VhcmNoTWludXNJY29uLCBTZWFyY2hQbHVzSWNvbiwgVGltZXNJY29uLCBGb2N1c1RyYXBNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL2ltYWdlLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbWFnZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGltYWdlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGltYWdlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW1hZ2VTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2UgcGF0aCBmb3IgdGhlIG1haW4gaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3JjOiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzcmNzZXQgZGVmaW5pdGlvbiBmb3IgdGhlIG1haW4gaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3JjU2V0OiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzaXplcyBkZWZpbml0aW9uIGZvciB0aGUgbWFpbiBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaXplczogJ3N0cmluZycgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIHNvdXJjZSBwYXRoIGZvciB0aGUgcHJldmlldyBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaXplOiAneHNtJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIHNvdXJjZSBwYXRoIGZvciB0aGUgcHJldmlldyBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2VTcmM6IHN0cmluZyB8IFNhZmVVcmwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIHNyY3NldCBkZWZpbml0aW9uIGZvciB0aGUgcHJldmlldyBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2VTcmNTZXQ6IHN0cmluZyB8IFNhZmVVcmwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIHNpemVzIGRlZmluaXRpb24gZm9yIHRoZSBwcmV2aWV3IGltYWdlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHByZXZpZXdJbWFnZVNpemVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIG9mIHRoZSBwcmV2aWV3IGltYWdlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYWx0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIG9mIHRoZSBpbWFnZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIG9mIHRoZSBpbWFnZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBvZiB0aGUgaW1hZ2UgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsb2FkaW5nOiAnbGF6eScgfCAnZWFnZXInIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRhcmdldCBlbGVtZW50IHRvIGF0dGFjaCB0aGUgZGlhbG9nLCB2YWxpZCB2YWx1ZXMgYXJlIFwiYm9keVwiIG9yIGEgbG9jYWwgbmctdGVtcGxhdGUgdmFyaWFibGUgb2YgYW5vdGhlciBlbGVtZW50IChub3RlOiB1c2UgYmluZGluZyB3aXRoIGJyYWNrZXRzIGZvciB0ZW1wbGF0ZSB2YXJpYWJsZXMsIGUuZy4gW2FwcGVuZFRvXT1cIm15ZGl2XCIgZm9yIGEgZGl2IGVsZW1lbnQgaGF2aW5nICNteWRpdiBhcyB2YXJpYWJsZSBuYW1lKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBhbnk7XG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgdGhlIHByZXZpZXcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJldmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgc2hvdyBhbmltYXRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG4gICAgLyoqXG4gICAgICogVHJhbnNpdGlvbiBvcHRpb25zIG9mIHRoZSBoaWRlIGFuaW1hdGlvblxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgcHJldmlldyBvdmVybGF5IGlzIHNob3duLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIHdoZW4gdGhlIHByZXZpZXcgb3ZlcmxheSBpcyBoaWRkZW4uXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uSGlkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZyBhbiBpbWFnZSBmaWxlLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25JbWFnZUVycm9yOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ21hc2snKSBtYXNrOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgncHJldmlld0J1dHRvbicpIHByZXZpZXdCdXR0b246IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicpIGNsb3NlQnV0dG9uOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgaW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICByb3RhdGVSaWdodEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHJvdGF0ZUxlZnRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICB6b29tT3V0SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgem9vbUluSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgY2xvc2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBtYXNrVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJldmlld1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJvdGF0ZTogbnVtYmVyID0gMDtcblxuICAgIHNjYWxlOiBudW1iZXIgPSAxO1xuXG4gICAgcHJldmlld0NsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb250YWluZXI6IE51bGxhYmxlPEhUTUxFbGVtZW50PjtcblxuICAgIHdyYXBwZXI6IE51bGxhYmxlPEhUTUxFbGVtZW50PjtcblxuICAgIHB1YmxpYyBnZXQgaXNab29tT3V0RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlIC0gdGhpcy56b29tU2V0dGluZ3Muc3RlcCA8PSB0aGlzLnpvb21TZXR0aW5ncy5taW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1pvb21JbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSArIHRoaXMuem9vbVNldHRpbmdzLnN0ZXAgPj0gdGhpcy56b29tU2V0dGluZ3MubWF4O1xuICAgIH1cblxuICAgIHByaXZhdGUgem9vbVNldHRpbmdzID0ge1xuICAgICAgICBkZWZhdWx0OiAxLFxuICAgICAgICBzdGVwOiAwLjEsXG4gICAgICAgIG1heDogMS41LFxuICAgICAgICBtaW46IDAuNVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBjYXhDb25maWcsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWZcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRpY2F0b3JUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncm90YXRlcmlnaHRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3RhdGVSaWdodEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncm90YXRlbGVmdGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdGF0ZUxlZnRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3pvb21vdXRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b29tT3V0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd6b29taW5pY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b29tSW5JY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kaWNhdG9yVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25JbWFnZUNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHJldmlld1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5ibG9ja0JvZHlTY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWFza0NsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJldmlld0NsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUHJldmlldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk1hc2tLZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uTWFza0NsaWNrKCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXModGhpcy5wcmV2aWV3QnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0sIDI1KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByZXZpZXdJbWFnZUNsaWNrKCkge1xuICAgICAgICB0aGlzLnByZXZpZXdDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgcm90YXRlUmlnaHQoKSB7XG4gICAgICAgIHRoaXMucm90YXRlICs9IDkwO1xuICAgICAgICB0aGlzLnByZXZpZXdDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgcm90YXRlTGVmdCgpIHtcbiAgICAgICAgdGhpcy5yb3RhdGUgLT0gOTA7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB6b29tSW4oKSB7XG4gICAgICAgIHRoaXMuc2NhbGUgPSB0aGlzLnNjYWxlICsgdGhpcy56b29tU2V0dGluZ3Muc3RlcDtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHpvb21PdXQoKSB7XG4gICAgICAgIHRoaXMuc2NhbGUgPSB0aGlzLnNjYWxlIC0gdGhpcy56b29tU2V0dGluZ3Muc3RlcDtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlciA9IHRoaXMuY29udGFpbmVyPy5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlT25Ub3AoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMuY2xvc2VCdXR0b24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSwgMjUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMud3JhcHBlciwgJ2NheC1jb21wb25lbnQtb3ZlcmxheS1sZWF2ZScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy53cmFwcGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHt9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TaG93LmVtaXQoe30pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy53cmFwcGVyLCB0aGlzLmNvbmZpZy56SW5kZXgubW9kYWwpO1xuICAgIH1cblxuICAgIGFwcGVuZENvbnRhaW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgZWxzZSBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMud3JhcHBlciwgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbWFnZVByZXZpZXdTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHsgdHJhbnNmb3JtOiAncm90YXRlKCcgKyB0aGlzLnJvdGF0ZSArICdkZWcpIHNjYWxlKCcgKyB0aGlzLnNjYWxlICsgJyknIH07XG4gICAgfVxuXG4gICAgZ2V0IHpvb21JbWFnZUFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLnpvb21JbWFnZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdjYXgtaW1hZ2UgY2F4LWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAnY2F4LWltYWdlLXByZXZpZXctY29udGFpbmVyJzogdGhpcy5wcmV2aWV3XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaGFuZGxlVG9vbGJhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNsb3NlUHJldmlldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3VmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdGF0ZSA9IDA7XG4gICAgICAgIHRoaXMuc2NhbGUgPSB0aGlzLnpvb21TZXR0aW5ncy5kZWZhdWx0O1xuICAgICAgICBEb21IYW5kbGVyLnVuYmxvY2tCb2R5U2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgaW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkltYWdlRXJyb3IuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcmlnaHRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5yb3RhdGVSaWdodCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZWZ0QXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEucm90YXRlTGVmdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB6b29tSW5BcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS56b29tSW4gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgem9vbU91dEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLnpvb21PdXQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY2xvc2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5jbG9zZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlld1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQcmV2aWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjdXN0b20gbWV0aG9kc1xuICAgIHNpemVDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFtgY2F4LWltYWdlLSR7dGhpcy5zaXplfWBdOiB0aGlzLnNpemVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8c3BhbiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxyXG4gICAgPGltZ1xyXG4gICAgICAgIFthdHRyLnNyY109XCJzcmNcIlxyXG4gICAgICAgIFthdHRyLnNyY3NldF09XCJzcmNTZXRcIlxyXG4gICAgICAgIFthdHRyLnNpemVzXT1cInNpemVzXCJcclxuICAgICAgICBbYXR0ci5hbHRdPVwiYWx0XCJcclxuICAgICAgICBbYXR0ci53aWR0aF09XCJ3aWR0aFwiXHJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICAgICAgW2F0dHIubG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbWFnZVN0eWxlXCJcclxuICAgICAgICBbY2xhc3NdPVwiaW1hZ2VDbGFzc1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwic2l6ZUNsYXNzKClcIlxyXG4gICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9yKCRldmVudClcIlxyXG4gICAgLz5cclxuICAgIDxidXR0b24gKm5nSWY9XCJwcmV2aWV3XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ6b29tSW1hZ2VBcmlhTGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjYXgtaW1hZ2UtcHJldmlldy1pbmRpY2F0b3JcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKClcIiAjcHJldmlld0J1dHRvbiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0ICsgJ3B4Jywgd2lkdGg6IHdpZHRoICsgJ3B4JywgYm9yZGVyOiAnbm9uZScgfVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmRpY2F0b3JUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImluZGljYXRvclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxFeWVJY29uIFtzdHlsZUNsYXNzXT1cIidjYXgtaW1hZ2UtcHJldmlldy1pY29uJ1wiIC8+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiAjbWFzayBjbGFzcz1cImNheC1pbWFnZS1tYXNrIGNheC1jb21wb25lbnQtb3ZlcmxheSBjYXgtY29tcG9uZW50LW92ZXJsYXktZW50ZXJcIiAqbmdJZj1cIm1hc2tWaXNpYmxlXCIgW2F0dHIuYXJpYS1tb2RhbF09XCJtYXNrVmlzaWJsZVwiIHJvbGU9XCJkaWFsb2dcIiAoY2xpY2spPVwib25NYXNrQ2xpY2soKVwiIChrZXlkb3duKT1cIm9uTWFza0tleWRvd24oJGV2ZW50KVwiIHBGb2N1c1RyYXA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNheC1pbWFnZS10b29sYmFyXCIgKGNsaWNrKT1cImhhbmRsZVRvb2xiYXJDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXgtaW1hZ2UtYWN0aW9uIGNheC1saW5rXCIgKGNsaWNrKT1cInJvdGF0ZVJpZ2h0KClcIiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyaWdodEFyaWFMYWJlbCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8UmVmcmVzaEljb24gKm5nSWY9XCIhcm90YXRlUmlnaHRJY29uVGVtcGxhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwicm90YXRlUmlnaHRJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNheC1pbWFnZS1hY3Rpb24gY2F4LWxpbmtcIiAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibGVmdEFyaWFMYWJlbCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8VW5kb0ljb24gKm5nSWY9XCIhcm90YXRlTGVmdEljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3RhdGVMZWZ0SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXgtaW1hZ2UtYWN0aW9uIGNheC1saW5rXCIgKGNsaWNrKT1cInpvb21PdXQoKVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXNab29tT3V0RGlzYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInpvb21PdXRBcmlhTGFiZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPFNlYXJjaE1pbnVzSWNvbiAqbmdJZj1cIiF6b29tT3V0SWNvblRlbXBsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInpvb21PdXRJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNheC1pbWFnZS1hY3Rpb24gY2F4LWxpbmtcIiAoY2xpY2spPVwiem9vbUluKClcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImlzWm9vbUluRGlzYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInpvb21JbkFyaWFMYWJlbCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoUGx1c0ljb24gKm5nSWY9XCIhem9vbUluSWNvblRlbXBsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInpvb21Jbkljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2F4LWltYWdlLWFjdGlvbiBjYXgtbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3KClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNsb3NlQXJpYUxhYmVsKClcIiAjY2xvc2VCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8VGltZXNJY29uICpuZ0lmPVwiIWNsb3NlSWNvblRlbXBsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInByZXZpZXdWaXNpYmxlXCJcclxuICAgICAgICAgICAgW0BhbmltYXRpb25dPVwieyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgc2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9ucyB9IH1cIlxyXG4gICAgICAgICAgICAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxyXG4gICAgICAgICAgICAoQGFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGltZyBbYXR0ci5zcmNdPVwicHJldmlld0ltYWdlU3JjID8gcHJldmlld0ltYWdlU3JjIDogc3JjXCIgW2F0dHIuc3Jjc2V0XT1cInByZXZpZXdJbWFnZVNyY1NldFwiIFthdHRyLnNpemVzXT1cInByZXZpZXdJbWFnZVNpemVzXCIgY2xhc3M9XCJjYXgtaW1hZ2UtcHJldmlld1wiIFtuZ1N0eWxlXT1cImltYWdlUHJldmlld1N0eWxlKClcIiAoY2xpY2spPVwib25QcmV2aWV3SW1hZ2VDbGljaygpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NwYW4+XHJcbiJdfQ==
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2UudHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFhLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUU5RDs7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QkFBQyxhQUFhO2dCQUVNLFNBQVM7c0JBQXRDLGVBQWU7dUJBQUMsV0FBVztnQkE0T3lCLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50LCBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjYXhDb25maWcsIENheFRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2RvbSc7XG5pbXBvcnQgeyBFeWVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvZXllJztcbmltcG9ydCB7IFJlZnJlc2hJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvcmVmcmVzaCc7XG5pbXBvcnQgeyBTZWFyY2hNaW51c0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9zZWFyY2htaW51cyc7XG5pbXBvcnQgeyBTZWFyY2hQbHVzSWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL3NlYXJjaHBsdXMnO1xuaW1wb3J0IHsgVGltZXNJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvdGltZXMnO1xuaW1wb3J0IHsgVW5kb0ljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy91bmRvJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IEZvY3VzVHJhcE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ZvY3VzdHJhcCc7XG5cbi8qKlxuICogRGlzcGxheXMgYW4gaW1hZ2Ugd2l0aCBwcmV2aWV3IGFuZCB0cmFuZm9ybWF0aW9uIG9wdGlvbnMuIEZvciBtdWx0aXBsZSBpbWFnZSwgc2VlIEdhbGxlcmlhLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtaW1hZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5odG1sJyxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNyknLCBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiB2b2lkJywgW2FuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMC43KScsIG9wYWNpdHk6IDAgfSkpXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJlZnJlc2hJY29uLCBFeWVJY29uLCBVbmRvSWNvbiwgU2VhcmNoTWludXNJY29uLCBTZWFyY2hQbHVzSWNvbiwgVGltZXNJY29uLCBGb2N1c1RyYXBNb2R1bGVdLFxuICAgIHN0eWxlVXJsczogWycuL2ltYWdlLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBpbWFnZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGltYWdlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGltYWdlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW1hZ2VTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBDbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2UgcGF0aCBmb3IgdGhlIG1haW4gaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3JjOiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzcmNzZXQgZGVmaW5pdGlvbiBmb3IgdGhlIG1haW4gaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3JjU2V0OiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzaXplcyBkZWZpbml0aW9uIGZvciB0aGUgbWFpbiBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaXplczogJ3N0cmluZycgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGhlIHNvdXJjZSBwYXRoIGZvciB0aGUgcHJldmlldyBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2UgcGF0aCBmb3IgdGhlIHByZXZpZXcgaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJldmlld0ltYWdlU3JjOiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzcmNzZXQgZGVmaW5pdGlvbiBmb3IgdGhlIHByZXZpZXcgaW1hZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJldmlld0ltYWdlU3JjU2V0OiBzdHJpbmcgfCBTYWZlVXJsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBzaXplcyBkZWZpbml0aW9uIGZvciB0aGUgcHJldmlldyBpbWFnZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2VTaXplczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBvZiB0aGUgaW1hZ2UgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBvZiB0aGUgaW1hZ2UgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgb2YgdGhlIGltYWdlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbG9hZGluZzogJ2xhenknIHwgJ2VhZ2VyJyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgZWxlbWVudCB0byBhdHRhY2ggdGhlIGRpYWxvZywgdmFsaWQgdmFsdWVzIGFyZSBcImJvZHlcIiBvciBhIGxvY2FsIG5nLXRlbXBsYXRlIHZhcmlhYmxlIG9mIGFub3RoZXIgZWxlbWVudCAobm90ZTogdXNlIGJpbmRpbmcgd2l0aCBicmFja2V0cyBmb3IgdGVtcGxhdGUgdmFyaWFibGVzLCBlLmcuIFthcHBlbmRUb109XCJteWRpdlwiIGZvciBhIGRpdiBlbGVtZW50IGhhdmluZyAjbXlkaXYgYXMgdmFyaWFibGUgbmFtZSkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IFRlbXBsYXRlUmVmPGFueT4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgYW55O1xuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSBwcmV2aWV3IGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIHdoZW4gdGhlIHByZXZpZXcgb3ZlcmxheSBpcyBzaG93bi5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCB3aGVuIHRoZSBwcmV2aWV3IG92ZXJsYXkgaXMgaGlkZGVuLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgaWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGxvYWRpbmcgYW4gaW1hZ2UgZmlsZS5cbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uSW1hZ2VFcnJvcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdtYXNrJykgbWFzazogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ3ByZXZpZXdCdXR0b24nKSBwcmV2aWV3QnV0dG9uOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnY2xvc2VCdXR0b24nKSBjbG9zZUJ1dHRvbjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2F4VGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PENheFRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIGluZGljYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgcm90YXRlUmlnaHRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICByb3RhdGVMZWZ0SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgem9vbU91dEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHpvb21Jbkljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGNsb3NlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgbWFza1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByZXZpZXdWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByb3RhdGU6IG51bWJlciA9IDA7XG5cbiAgICBzY2FsZTogbnVtYmVyID0gMTtcblxuICAgIHByZXZpZXdDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29udGFpbmVyOiBOdWxsYWJsZTxIVE1MRWxlbWVudD47XG5cbiAgICB3cmFwcGVyOiBOdWxsYWJsZTxIVE1MRWxlbWVudD47XG5cbiAgICBwdWJsaWMgZ2V0IGlzWm9vbU91dERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSAtIHRoaXMuem9vbVNldHRpbmdzLnN0ZXAgPD0gdGhpcy56b29tU2V0dGluZ3MubWluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNab29tSW5EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUgKyB0aGlzLnpvb21TZXR0aW5ncy5zdGVwID49IHRoaXMuem9vbVNldHRpbmdzLm1heDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHpvb21TZXR0aW5ncyA9IHtcbiAgICAgICAgZGVmYXVsdDogMSxcbiAgICAgICAgc3RlcDogMC4xLFxuICAgICAgICBtYXg6IDEuNSxcbiAgICAgICAgbWluOiAwLjVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIGNvbmZpZzogY2F4Q29uZmlnLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kaWNhdG9yVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JvdGF0ZXJpZ2h0aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm90YXRlUmlnaHRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JvdGF0ZWxlZnRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3RhdGVMZWZ0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd6b29tb3V0aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbU91dEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnem9vbWluaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9vbUluSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGljYXRvclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW1hZ2VDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5tYXNrVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYmxvY2tCb2R5U2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hc2tDbGljaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXZpZXdDbGljaykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVByZXZpZXcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25NYXNrS2V5ZG93bihldmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1hc2tDbGljaygpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMucHJldmlld0J1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9LCAyNSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QcmV2aWV3SW1hZ2VDbGljaygpIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHJvdGF0ZVJpZ2h0KCkge1xuICAgICAgICB0aGlzLnJvdGF0ZSArPSA5MDtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHJvdGF0ZUxlZnQoKSB7XG4gICAgICAgIHRoaXMucm90YXRlIC09IDkwO1xuICAgICAgICB0aGlzLnByZXZpZXdDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgem9vbUluKCkge1xuICAgICAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZSArIHRoaXMuem9vbVNldHRpbmdzLnN0ZXA7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB6b29tT3V0KCkge1xuICAgICAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZSAtIHRoaXMuem9vbVNldHRpbmdzLnN0ZXA7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIgPSB0aGlzLmNvbnRhaW5lcj8ucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uVG9wKCk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmNsb3NlQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0sIDI1KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLndyYXBwZXIsICdjYXgtY29tcG9uZW50LW92ZXJsYXktbGVhdmUnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMud3JhcHBlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUuZW1pdCh7fSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHt9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVPblRvcCgpIHtcbiAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtb2RhbCcsIHRoaXMud3JhcHBlciwgdGhpcy5jb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKSB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGVsc2UgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW1hZ2VQcmV2aWV3U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB7IHRyYW5zZm9ybTogJ3JvdGF0ZSgnICsgdGhpcy5yb3RhdGUgKyAnZGVnKSBzY2FsZSgnICsgdGhpcy5zY2FsZSArICcpJyB9O1xuICAgIH1cblxuICAgIGdldCB6b29tSW1hZ2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS56b29tSW1hZ2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnY2F4LWltYWdlIGNheC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ2NheC1pbWFnZS1wcmV2aWV3LWNvbnRhaW5lcic6IHRoaXMucHJldmlld1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGhhbmRsZVRvb2xiYXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBjbG9zZVByZXZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3RhdGUgPSAwO1xuICAgICAgICB0aGlzLnNjYWxlID0gdGhpcy56b29tU2V0dGluZ3MuZGVmYXVsdDtcbiAgICAgICAgRG9tSGFuZGxlci51bmJsb2NrQm9keVNjcm9sbCgpO1xuICAgIH1cblxuICAgIGltYWdlRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25JbWFnZUVycm9yLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHJpZ2h0QXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEucm90YXRlUmlnaHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGVmdEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLnJvdGF0ZUxlZnQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgem9vbUluQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEuem9vbUluIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHpvb21PdXRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS56b29tT3V0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNsb3NlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEuY2xvc2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXdWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUHJldmlldygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY3VzdG9tIG1ldGhvZHNcbiAgICBzaXplQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbYGNheC1pbWFnZS0ke3RoaXMuc2l6ZX1gXTogdGhpcy5zaXplXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHNwYW4gW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIj5cclxuICAgIDxpbWdcclxuICAgICAgICBbYXR0ci5zcmNdPVwic3JjXCJcclxuICAgICAgICBbYXR0ci5zcmNzZXRdPVwic3JjU2V0XCJcclxuICAgICAgICBbYXR0ci5zaXplc109XCJzaXplc1wiXHJcbiAgICAgICAgW2F0dHIuYWx0XT1cImFsdFwiXHJcbiAgICAgICAgW2F0dHIud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHRcIlxyXG4gICAgICAgIFthdHRyLmxvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiaW1hZ2VTdHlsZVwiXHJcbiAgICAgICAgW2NsYXNzXT1cImltYWdlQ2xhc3NcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInNpemVDbGFzcygpXCJcclxuICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvcigkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwicHJldmlld1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiem9vbUltYWdlQXJpYUxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2F4LWltYWdlLXByZXZpZXctaW5kaWNhdG9yXCIgKGNsaWNrKT1cIm9uSW1hZ2VDbGljaygpXCIgI3ByZXZpZXdCdXR0b24gW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodCArICdweCcsIHdpZHRoOiB3aWR0aCArICdweCcsIGJvcmRlcjogJ25vbmUnIH1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kaWNhdG9yVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmRpY2F0b3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8RXllSWNvbiBbc3R5bGVDbGFzc109XCInY2F4LWltYWdlLXByZXZpZXctaWNvbidcIiAvPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgI21hc2sgY2xhc3M9XCJjYXgtaW1hZ2UtbWFzayBjYXgtY29tcG9uZW50LW92ZXJsYXkgY2F4LWNvbXBvbmVudC1vdmVybGF5LWVudGVyXCIgKm5nSWY9XCJtYXNrVmlzaWJsZVwiIFthdHRyLmFyaWEtbW9kYWxdPVwibWFza1Zpc2libGVcIiByb2xlPVwiZGlhbG9nXCIgKGNsaWNrKT1cIm9uTWFza0NsaWNrKClcIiAoa2V5ZG93bik9XCJvbk1hc2tLZXlkb3duKCRldmVudClcIiBwRm9jdXNUcmFwPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXgtaW1hZ2UtdG9vbGJhclwiIChjbGljayk9XCJoYW5kbGVUb29sYmFyQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2F4LWltYWdlLWFjdGlvbiBjYXgtbGlua1wiIChjbGljayk9XCJyb3RhdGVSaWdodCgpXCIgdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwicmlnaHRBcmlhTGFiZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPFJlZnJlc2hJY29uICpuZ0lmPVwiIXJvdGF0ZVJpZ2h0SWNvblRlbXBsYXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInJvdGF0ZVJpZ2h0SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXgtaW1hZ2UtYWN0aW9uIGNheC1saW5rXCIgKGNsaWNrKT1cInJvdGF0ZUxlZnQoKVwiIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxlZnRBcmlhTGFiZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPFVuZG9JY29uICpuZ0lmPVwiIXJvdGF0ZUxlZnRJY29uVGVtcGxhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwicm90YXRlTGVmdEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2F4LWltYWdlLWFjdGlvbiBjYXgtbGlua1wiIChjbGljayk9XCJ6b29tT3V0KClcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImlzWm9vbU91dERpc2FibGVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ6b29tT3V0QXJpYUxhYmVsKClcIj5cclxuICAgICAgICAgICAgICAgIDxTZWFyY2hNaW51c0ljb24gKm5nSWY9XCIhem9vbU91dEljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6b29tT3V0SWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYXgtaW1hZ2UtYWN0aW9uIGNheC1saW5rXCIgKGNsaWNrKT1cInpvb21JbigpXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc1pvb21JbkRpc2FibGVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ6b29tSW5BcmlhTGFiZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPFNlYXJjaFBsdXNJY29uICpuZ0lmPVwiIXpvb21Jbkljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6b29tSW5JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNheC1pbWFnZS1hY3Rpb24gY2F4LWxpbmtcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJjbG9zZUFyaWFMYWJlbCgpXCIgI2Nsb3NlQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFjbG9zZUljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJwcmV2aWV3VmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtAYW5pbWF0aW9uXT1cInsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgfSB9XCJcclxuICAgICAgICAgICAgKEBhbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWcgW2F0dHIuc3JjXT1cInByZXZpZXdJbWFnZVNyYyA/IHByZXZpZXdJbWFnZVNyYyA6IHNyY1wiIFthdHRyLnNyY3NldF09XCJwcmV2aWV3SW1hZ2VTcmNTZXRcIiBbYXR0ci5zaXplc109XCJwcmV2aWV3SW1hZ2VTaXplc1wiIGNsYXNzPVwiY2F4LWltYWdlLXByZXZpZXdcIiBbbmdTdHlsZV09XCJpbWFnZVByZXZpZXdTdHlsZSgpXCIgKGNsaWNrKT1cIm9uUHJldmlld0ltYWdlQ2xpY2soKVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zcGFuPlxyXG4iXX0=
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
42
42
  }], darkMode: [{
43
43
  type: Input
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9sb2dvL2xvZ28udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbG9nby9sb2dvLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFjdEQsTUFBTSxPQUFPLElBQUk7SUFDSixJQUFJLENBQWdEO0lBQ3BELEtBQUssQ0FBcUI7SUFDMUIsTUFBTSxDQUFxQjtJQUMzQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFbkMsUUFBUTtRQUNKLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssV0FBVztnQkFDWixPQUFPLGlDQUFpQyxDQUFDO1lBQzdDLEtBQUssWUFBWTtnQkFDYixPQUFPLDRCQUE0QixDQUFDO1lBQ3hDLEtBQUssWUFBWTtnQkFDYixPQUFPLDRCQUE0QixDQUFDO1lBQ3hDLEtBQUssYUFBYTtnQkFDZCxPQUFPLHVCQUF1QixDQUFDO1lBQ25DO2dCQUNJLE9BQU8sdUJBQXVCLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7dUdBckJRLElBQUk7MkZBQUosSUFBSSxxTkNmakIsd0dBQ0EseUREUWMsV0FBVzs7MkZBTVosSUFBSTtrQkFaaEIsU0FBUzsrQkFDSSxVQUFVLG1CQUVILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FFNUIsQ0FBQyxXQUFXLENBQUMsY0FDVixJQUFJLFFBQ1Y7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCOzhCQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbWFnZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F4LWxvZ28nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dvLmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9nby5zY3NzJ10sXG4gICAgaW1wb3J0czogW0ltYWdlTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIExvZ28ge1xuICAgIEBJbnB1dCgpIHNpemU6ICd4c20nIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGljb25Pbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGFya01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldEltYWdlKCkge1xuICAgICAgICBjb25zdCBrZXkgPSBgJHt0aGlzLmljb25Pbmx5fS0ke3RoaXMuZGFya01vZGV9YDtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RydWUtdHJ1ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbG9nby9kYXRhWC1pY29uLWRhcmsuc3ZnJztcbiAgICAgICAgICAgIGNhc2UgJ3RydWUtZmFsc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL2xvZ28vZGF0YVgtaWNvbi5zdmcnO1xuICAgICAgICAgICAgY2FzZSAnZmFsc2UtdHJ1ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbG9nby9kYXRhWC1kYXJrLnN2Zyc7XG4gICAgICAgICAgICBjYXNlICdmYWxzZS1mYWxzZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbG9nby9kYXRhWC5zdmcnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Fzc2V0cy9sb2dvL2RhdGFYLnN2Zyc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8Y2F4LWltYWdlIFtzcmNdPVwiZ2V0SW1hZ2UoKVwiIFtzaXplXT1cInNpemVcIiBbd2lkdGhdPVwid2lkdGhcIiBbaGVpZ2h0XT1cImhlaWdodFwiPjwvY2F4LWltYWdlPlxyXG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9sb2dvL2xvZ28udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbG9nby9sb2dvLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFjdEQsTUFBTSxPQUFPLElBQUk7SUFDSixJQUFJLENBQXdDO0lBQzVDLEtBQUssQ0FBcUI7SUFDMUIsTUFBTSxDQUFxQjtJQUMzQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFbkMsUUFBUTtRQUNKLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssV0FBVztnQkFDWixPQUFPLGlDQUFpQyxDQUFDO1lBQzdDLEtBQUssWUFBWTtnQkFDYixPQUFPLDRCQUE0QixDQUFDO1lBQ3hDLEtBQUssWUFBWTtnQkFDYixPQUFPLDRCQUE0QixDQUFDO1lBQ3hDLEtBQUssYUFBYTtnQkFDZCxPQUFPLHVCQUF1QixDQUFDO1lBQ25DO2dCQUNJLE9BQU8sdUJBQXVCLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7dUdBckJRLElBQUk7MkZBQUosSUFBSSxxTkNmakIsd0dBQ0EseUREUWMsV0FBVzs7MkZBTVosSUFBSTtrQkFaaEIsU0FBUzsrQkFDSSxVQUFVLG1CQUVILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FFNUIsQ0FBQyxXQUFXLENBQUMsY0FDVixJQUFJLFFBQ1Y7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCOzhCQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbWFnZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F4LWxvZ28nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dvLmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9nby5zY3NzJ10sXG4gICAgaW1wb3J0czogW0ltYWdlTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdjYXgtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIExvZ28ge1xuICAgIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgd2lkdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpY29uT25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRhcmtNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXRJbWFnZSgpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhpcy5pY29uT25seX0tJHt0aGlzLmRhcmtNb2RlfWA7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICd0cnVlLXRydWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL2xvZ28vZGF0YVgtaWNvbi1kYXJrLnN2Zyc7XG4gICAgICAgICAgICBjYXNlICd0cnVlLWZhbHNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Fzc2V0cy9sb2dvL2RhdGFYLWljb24uc3ZnJztcbiAgICAgICAgICAgIGNhc2UgJ2ZhbHNlLXRydWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL2xvZ28vZGF0YVgtZGFyay5zdmcnO1xuICAgICAgICAgICAgY2FzZSAnZmFsc2UtZmFsc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL2xvZ28vZGF0YVguc3ZnJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhc3NldHMvbG9nby9kYXRhWC5zdmcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGNheC1pbWFnZSBbc3JjXT1cImdldEltYWdlKClcIiBbc2l6ZV09XCJzaXplXCIgW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIj48L2NheC1pbWFnZT5cclxuIl19