@wertzui/ngx-restworld-client 4.2.0 → 4.2.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.
@@ -2,6 +2,8 @@ import { Component, forwardRef, Input, ViewChildren } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { ImageCropperComponent } from 'ngx-image-cropper';
4
4
  import { FileUpload } from 'primeng/fileupload';
5
+ import { Dialog } from 'primeng/dialog';
6
+ import { firstValueFrom } from 'rxjs';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "primeng/button";
7
9
  import * as i2 from "primeng/fileupload";
@@ -16,7 +18,6 @@ import * as i10 from "primeng/ripple";
16
18
  import * as i11 from "../../pipes/safe-url.pipe";
17
19
  export class RESTWorldImageViewComponent {
18
20
  constructor() {
19
- this._dialogHasBeenOpenedBefore = false;
20
21
  this.disabled = false;
21
22
  this.displayCropDialog = false;
22
23
  }
@@ -32,14 +33,23 @@ export class RESTWorldImageViewComponent {
32
33
  setDisabledState(isDisabled) {
33
34
  this.disabled = isDisabled;
34
35
  }
36
+ ngOnInit() {
37
+ // If no background color is set, we set it to white.
38
+ // Otherwise the color picker would show red, the input would be empty and the image cropper would show transparent.
39
+ if (!this.backgroundColor)
40
+ this.backgroundColor = '#ffffff';
41
+ }
42
+ ngAfterViewInit() {
43
+ // We need to trigger onResize one time, after the opening animation of the dialog has been completed.
44
+ // Otherwise the image cropper thinks that the image size is 0x0,
45
+ // because the opening animation hast just begun when the image cropper is first shown.
46
+ this.dialogs?.forEach(async (d) => {
47
+ await firstValueFrom(d.onShow);
48
+ this.imageCroppers?.forEach(i => i.onResize());
49
+ });
50
+ }
35
51
  showCropDialog() {
36
52
  this.displayCropDialog = true;
37
- // The image cropper has a bug that stops the image from being visible otherwise.
38
- // Changing the image or resizing the window would also cause the image to appear.
39
- if (!this._dialogHasBeenOpenedBefore) {
40
- this._dialogHasBeenOpenedBefore = true;
41
- this.imageCroppers?.forEach(i => i.onResize());
42
- }
43
53
  }
44
54
  imageChanged(event) {
45
55
  this.tempImageFile = event.files[0];
@@ -63,7 +73,7 @@ RESTWorldImageViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
63
73
  provide: NG_VALUE_ACCESSOR,
64
74
  useExisting: forwardRef(() => RESTWorldImageViewComponent),
65
75
  multi: true
66
- }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }, { propertyName: "imageCroppers", predicate: ImageCropperComponent, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color:&nbsp;</span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n", styles: ["img.thumbnail{height:calc(1rem + 18px);cursor:zoom-in;border-radius:3px}a{text-decoration:none;height:calc(1rem + 18px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }, { type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }, { type: i5.ColorPicker, selector: "p-colorPicker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onChange", "onShow", "onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.InputText, selector: "[pInputText]" }, { type: i10.Ripple, selector: "[pRipple]" }], pipes: { "safeUrl": i11.SafeUrlPipe } });
76
+ }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }, { propertyName: "imageCroppers", predicate: ImageCropperComponent, descendants: true }, { propertyName: "dialogs", predicate: Dialog, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color:&nbsp;</span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n", styles: ["img.thumbnail{height:calc(1rem + 18px);cursor:zoom-in;border-radius:3px}a{text-decoration:none;height:calc(1rem + 18px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }, { type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }, { type: i5.ColorPicker, selector: "p-colorPicker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onChange", "onShow", "onHide"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.InputText, selector: "[pInputText]" }, { type: i10.Ripple, selector: "[pRipple]" }], pipes: { "safeUrl": i11.SafeUrlPipe } });
67
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: RESTWorldImageViewComponent, decorators: [{
68
78
  type: Component,
69
79
  args: [{ selector: 'rw-image', providers: [{
@@ -123,5 +133,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
123
133
  }], imageCroppers: [{
124
134
  type: ViewChildren,
125
135
  args: [ImageCropperComponent]
136
+ }], dialogs: [{
137
+ type: ViewChildren,
138
+ args: [Dialog]
126
139
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWltYWdlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi92aWV3cy9yZXN0d29ybGQtaW1hZ2Utdmlldy9yZXN0d29ybGQtaW1hZ2Utdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1pbWFnZS12aWV3L3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBc0MscUJBQXFCLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDNUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWWhELE1BQU0sT0FBTywyQkFBMkI7SUFWeEM7UUFhVSwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUEyRHBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0tBK0NsQztJQTVDQyxVQUFVLENBQUMsR0FBbUI7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUNELGdCQUFnQixDQUFDLEVBQWE7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELGlCQUFpQjtRQUNmLHVFQUF1RTtJQUN6RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEs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aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBJbWFnZUNyb3BwZWRFdmVudCwgSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCBPdXRwdXRGb3JtYXQgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J3LWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWltYWdlLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJFU1RXb3JsZEltYWdlVmlld0NvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIFJFU1RXb3JsZEltYWdlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxyXG4gIHByaXZhdGUgb25DaGFuZ2U/OiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfZGlhbG9nSGFzQmVlbk9wZW5lZEJlZm9yZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWxlTmFtZT86IHN0cmluZztcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxpZ25JbWFnZT86ICdjZW50ZXInIHwgJ2xlZnQnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFzcGVjdFJhdGlvPzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW52YXNSb3RhdGlvbj86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250YWluV2l0aGluQXNwZWN0UmF0aW8/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNyb3BwZXI/OiBDcm9wcGVyUG9zaXRpb247XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlck1heEhlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyTWF4V2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlck1pbkhlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyTWluV2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlclN0YXRpY0hlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyU3RhdGljV2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybWF0PzogT3V0cHV0Rm9ybWF0O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGltYWdlUXVhbGl0eT86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsU3RlcFNpemU/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWFpbnRhaW5Bc3BlY3RSYXRpbz86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb25seVNjYWxlRG93bj86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVzaXplVG9XaWR0aD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXNpemVUb0hlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByb3VuZENyb3BwZXI/OiBib29sZWFuO1xyXG5cblxuXHJcbiAgQFZpZXdDaGlsZHJlbihGaWxlVXBsb2FkKVxyXG4gIGZpbGVVcGxvYWRzPzogUXVlcnlMaXN0PEZpbGVVcGxvYWQ+O1xuXG5cclxuICBAVmlld0NoaWxkcmVuKEltYWdlQ3JvcHBlckNvbXBvbmVudClcbiAgaW1hZ2VDcm9wcGVycz86IFF1ZXJ5TGlzdDxJbWFnZUNyb3BwZXJDb21wb25lbnQ+O1xuXG5cbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyB1cmk/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHB1YmxpYyB0ZW1wSW1hZ2VGaWxlPzogRmlsZTtcclxuICBwdWJsaWMgZGlzcGxheUNyb3BEaWFsb2cgPSBmYWxzZTtcbiAgcHVibGljIHRlbXBDcm9wcGVkVXJpPzogc3RyaW5nIHwgbnVsbDtcblxuICB3cml0ZVZhbHVlKG9iaj86IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMudXJpID0gb2JqO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuPzogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7XHJcbiAgICAvLyBub3QgbmVlZGVkIGZvciB0aGlzIGNvbXBvbmVudCwgYnV0IG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIGludGVyZmFjZVxyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0Nyb3BEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BsYXlDcm9wRGlhbG9nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBUaGUgaW1hZ2UgY3JvcHBlciBoYXMgYSBidWcgdGhhdCBzdG9wcyB0aGUgaW1hZ2UgZnJvbSBiZWluZyB2aXNpYmxlIG90aGVyd2lzZS5cclxuICAgIC8vIENoYW5naW5nIHRoZSBpbWFnZSBvciByZXNpemluZyB0aGUgd2luZG93IHdvdWxkIGFsc28gY2F1c2UgdGhlIGltYWdlIHRvIGFwcGVhci5cclxuICAgIGlmICghdGhpcy5fZGlhbG9nSGFzQmVlbk9wZW5lZEJlZm9yZSkge1xyXG4gICAgICB0aGlzLl9kaWFsb2dIYXNCZWVuT3BlbmVkQmVmb3JlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbWFnZUNyb3BwZXJzPy5mb3JFYWNoKGkgPT4gaS5vblJlc2l6ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxuICBwdWJsaWMgaW1hZ2VDaGFuZ2VkKGV2ZW50OiB7IGZpbGVzOiBGaWxlW10gfSk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wSW1hZ2VGaWxlID0gZXZlbnQuZmlsZXNbMF07XHJcbiAgICB0aGlzLnNob3dDcm9wRGlhbG9nKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBjcm9wcGVkSW1hZ2VDaGFuZ2VkKGV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wQ3JvcHBlZFVyaSA9IGV2ZW50LmJhc2U2NDtcclxuICB9XG5cclxuICBwdWJsaWMgYWNjZXB0Q3JvcHBlZEltYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cmkgPSB0aGlzLnRlbXBDcm9wcGVkVXJpO1xyXG4gICAgdGhpcy5vbkNoYW5nZT8uKHRoaXMudXJpKTtcclxuICAgIHRoaXMuY2xvc2VDcm9wRGlhbG9nKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VDcm9wRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlVXBsb2Fkcz8uZm9yRWFjaChmID0+IGYuY2xlYXIoKSk7XHJcbiAgICB0aGlzLmRpc3BsYXlDcm9wRGlhbG9nID0gZmFsc2U7XHJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgPHAtYnV0dG9uICpuZ0lmPVwiIXVyaVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCIgY2xhc3M9XCJtci0xXCIgcFRvb2x0aXA9XCJObyBpbWFnZSBwcmVzZW50XCI+PC9wLWJ1dHRvbj5cclxuICA8YSAqbmdJZj1cInVyaVwiIFtocmVmXT1cInVyaSB8IHNhZmVVcmxcIiBbZG93bmxvYWRdPVwiZmlsZU5hbWUgfHwgJ2Rvd25sb2FkJ1wiIGNsYXNzPVwibXItMVwiIHBCdXR0b24gcFRvb2x0aXA9XCJEb3dubG9hZCBpbWFnZVwiIGljb249XCJwaSBwaS1kb3dubG9hZFwiPjwvYT5cclxuICA8cC1maWxlVXBsb2FkIGNsYXNzPVwibXItMVwiIGNob29zZUljb249XCJwaS11cGxvYWQgZmFzIGZhLXVwbG9hZFwiIG1vZGU9XCJiYXNpY1wiIFthdXRvXT1cInRydWVcIiBbYWNjZXB0XT1cImFjY2VwdCB8fCAnaW1hZ2UvKidcIiBbY3VzdG9tVXBsb2FkXT1cInRydWVcIiAodXBsb2FkSGFuZGxlcik9XCJpbWFnZUNoYW5nZWQoJGV2ZW50KVwiIHBUb29sdGlwPVwiVXBsb2FkIG5ldyBpbWFnZVwiPjwvcC1maWxlVXBsb2FkPlxyXG4gIDxpbWcgKm5nSWY9XCJ1cmlcIiBjbGFzcz1cInRodW1ibmFpbFwiIFtzcmNdPVwidXJpIHwgc2FmZVVybFwiIFthbHRdPVwiYWx0XCIgKGNsaWNrKT1cInNob3dDcm9wRGlhbG9nKClcIiBwVG9vbHRpcD1cIlpvb20gYW5kIGNyb3BcIiAvPlxyXG48L2Rpdj5cclxuXHJcbjxwLWRpYWxvZyBbaGVhZGVyXT1cImFsdCA/PyAnJ1wiIFsodmlzaWJsZSldPVwiZGlzcGxheUNyb3BEaWFsb2dcIj5cclxuICA8aW1hZ2UtY3JvcHBlclxyXG4gICAgICAgICAgICAgICAgICBbYXV0b0Nyb3BdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiY3JvcHBlZEltYWdlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2FsaWduSW1hZ2VdPVwiYWxpZ25JbWFnZSA/PyAnY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpbyA/PyAxXCJcclxuICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3IgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvbiA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpb109XCJjb250YWluV2l0aGluQXNwZWN0UmF0aW8gPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbY3JvcHBlcl09XCJjcm9wcGVyID8/IHsgeDE6IC0xMDAsIHkxOiAtMTAwLCB4MjogMTAwMDAsIHkyOiAxMDAwMCB9XCJcclxuICAgICAgICAgICAgICAgICAgW2Nyb3BwZXJNYXhIZWlnaHRdPVwiY3JvcHBlck1heEhlaWdodCA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW2Nyb3BwZXJNYXhXaWR0aF09XCJjcm9wcGVyTWF4V2lkdGggPz8gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjcm9wcGVyTWluSGVpZ2h0XT1cImNyb3BwZXJNaW5IZWlnaHQgPz8gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjcm9wcGVyTWluV2lkdGhdPVwiY3JvcHBlck1pbldpZHRoID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbY3JvcHBlclN0YXRpY0hlaWdodF09XCJjcm9wcGVyU3RhdGljSGVpZ2h0ID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbY3JvcHBlclN0YXRpY1dpZHRoXT1cImNyb3BwZXJTdGF0aWNXaWR0aCA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXQgPz8gJ3BuZydcIlxyXG4gICAgICAgICAgICAgICAgICBbaW1hZ2VRdWFsaXR5XT1cImltYWdlUXVhbGl0eSA/PyA5MlwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsU3RlcFNpemVdPVwiaW5pdGlhbFN0ZXBTaXplID8/IDNcIlxyXG4gICAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJtYWludGFpbkFzcGVjdFJhdGlvID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJvbmx5U2NhbGVEb3duID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwicmVzaXplVG9XaWR0aCA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVRvSGVpZ2h0XT1cInJlc2l6ZVRvSGVpZ2h0ID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbcm91bmRDcm9wcGVyXT1cInJvdW5kQ3JvcHBlciA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbWFnZUZpbGVdPVwidGVtcEltYWdlRmlsZSFcIlxyXG4gICAgICAgICAgICAgICAgICBbaW1hZ2VVUkxdPVwidXJpIVwiXHJcbiAgICAgICAgICAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1hdXRvIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8c3Bhbj5CYWNrZ3JvdW5kIGNvbG9yOiZuYnNwOzwvc3Bhbj5cclxuICAgICAgPHAtY29sb3JQaWNrZXIgWyhuZ01vZGVsKV09XCJiYWNrZ3JvdW5kQ29sb3JcIiBhcHBlbmRUbz1cImJvZHlcIiBjbGFzcz1cIm1sLTEgbXItMVwiPjwvcC1jb2xvclBpY2tlcj5cclxuICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJiYWNrZ3JvdW5kQ29sb3JcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImFjY2VwdENyb3BwZWRJbWFnZSgpXCIgY2xhc3M9XCJtci0yXCI+T2s8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY2xvc2VDcm9wRGlhbG9nKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9wLWRpYWxvZz5cclxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWltYWdlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi92aWV3cy9yZXN0d29ybGQtaW1hZ2Utdmlldy9yZXN0d29ybGQtaW1hZ2Utdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1pbWFnZS12aWV3L3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFzQyxxQkFBcUIsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBUyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFZN0MsTUFBTSxPQUFPLDJCQUEyQjtJQVZ4QztRQTBFUyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztLQXlEbEM7SUF0REMsVUFBVSxDQUFDLEdBQW1CO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFhO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUI7UUFDZix1RUFBdUU7SUFDekUsQ0FBQztJQUVELGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04scURBQXFEO1FBQ3JELG9IQUFvSDtRQUNwSCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixzR0FBc0c7UUFDdEcsaUVBQWlFO1FBQ2pFLHVGQUF1RjtRQUN2RixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDOUIsTUFBTSxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBd0I7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDOzt3SEEzSFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsbXhCQU4zQixDQUFDO1lBQ1YsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQywwREF1RFksVUFBVSxtRUFJVixxQkFBcUIsNkRBR3JCLE1BQU0sZ0RDN0V0QiwwNEZBNENBOzJGRDNCYSwyQkFBMkI7a0JBVnZDLFNBQVM7K0JBQ0UsVUFBVSxhQUdULENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OEJBT0ssR0FBRztzQkFEVCxLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFHQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFNTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsVUFBVTtnQkFLeEIsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQjtnQkFJbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiwgSW1hZ2VDcm9wcGVkRXZlbnQsIEltYWdlQ3JvcHBlckNvbXBvbmVudCwgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnXHJcbmltcG9ydCB7IGFzeW5jLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J3LWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbWFnZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWltYWdlLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJFU1RXb3JsZEltYWdlVmlld0NvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIFJFU1RXb3JsZEltYWdlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZT86IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWxlTmFtZT86IHN0cmluZztcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxpZ25JbWFnZT86ICdjZW50ZXInIHwgJ2xlZnQnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFzcGVjdFJhdGlvPzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW52YXNSb3RhdGlvbj86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250YWluV2l0aGluQXNwZWN0UmF0aW8/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNyb3BwZXI/OiBDcm9wcGVyUG9zaXRpb247XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlck1heEhlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyTWF4V2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlck1pbkhlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyTWluV2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JvcHBlclN0YXRpY0hlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjcm9wcGVyU3RhdGljV2lkdGg/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybWF0PzogT3V0cHV0Rm9ybWF0O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGltYWdlUXVhbGl0eT86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbml0aWFsU3RlcFNpemU/OiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWFpbnRhaW5Bc3BlY3RSYXRpbz86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb25seVNjYWxlRG93bj86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVzaXplVG9XaWR0aD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXNpemVUb0hlaWdodD86IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByb3VuZENyb3BwZXI/OiBib29sZWFuO1xyXG5cblxuXHJcbiAgQFZpZXdDaGlsZHJlbihGaWxlVXBsb2FkKVxyXG4gIGZpbGVVcGxvYWRzPzogUXVlcnlMaXN0PEZpbGVVcGxvYWQ+O1xuXG5cclxuICBAVmlld0NoaWxkcmVuKEltYWdlQ3JvcHBlckNvbXBvbmVudClcbiAgaW1hZ2VDcm9wcGVycz86IFF1ZXJ5TGlzdDxJbWFnZUNyb3BwZXJDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRGlhbG9nKVxuICBkaWFsb2dzPzogUXVlcnlMaXN0PERpYWxvZz47XG5cblxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIHVyaT86IHN0cmluZyB8IG51bGw7XHJcbiAgcHVibGljIHRlbXBJbWFnZUZpbGU/OiBGaWxlO1xyXG4gIHB1YmxpYyBkaXNwbGF5Q3JvcERpYWxvZyA9IGZhbHNlO1xuICBwdWJsaWMgdGVtcENyb3BwZWRVcmk/OiBzdHJpbmcgfCBudWxsO1xuXG4gIHdyaXRlVmFsdWUob2JqPzogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy51cmkgPSBvYmo7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm4/OiBGdW5jdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIC8vIG5vdCBuZWVkZWQgZm9yIHRoaXMgY29tcG9uZW50LCBidXQgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgaW50ZXJmYWNlXHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gSWYgbm8gYmFja2dyb3VuZCBjb2xvciBpcyBzZXQsIHdlIHNldCBpdCB0byB3aGl0ZS5cclxuICAgIC8vIE90aGVyd2lzZSB0aGUgY29sb3IgcGlja2VyIHdvdWxkIHNob3cgcmVkLCB0aGUgaW5wdXQgd291bGQgYmUgZW1wdHkgYW5kIHRoZSBpbWFnZSBjcm9wcGVyIHdvdWxkIHNob3cgdHJhbnNwYXJlbnQuXHJcbiAgICBpZiAoIXRoaXMuYmFja2dyb3VuZENvbG9yKVxyXG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9ICcjZmZmZmZmJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFdlIG5lZWQgdG8gdHJpZ2dlciBvblJlc2l6ZSBvbmUgdGltZSwgYWZ0ZXIgdGhlIG9wZW5pbmcgYW5pbWF0aW9uIG9mIHRoZSBkaWFsb2cgaGFzIGJlZW4gY29tcGxldGVkLlxyXG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBpbWFnZSBjcm9wcGVyIHRoaW5rcyB0aGF0IHRoZSBpbWFnZSBzaXplIGlzIDB4MCxcclxuICAgIC8vIGJlY2F1c2UgdGhlIG9wZW5pbmcgYW5pbWF0aW9uIGhhc3QganVzdCBiZWd1biB3aGVuIHRoZSBpbWFnZSBjcm9wcGVyIGlzIGZpcnN0IHNob3duLlxyXG4gICAgdGhpcy5kaWFsb2dzPy5mb3JFYWNoKGFzeW5jIGQgPT4ge1xyXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShkLm9uU2hvdyk7XHJcbiAgICAgIHRoaXMuaW1hZ2VDcm9wcGVycz8uZm9yRWFjaChpID0+IGkub25SZXNpemUoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q3JvcERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheUNyb3BEaWFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXG4gIHB1YmxpYyBpbWFnZUNoYW5nZWQoZXZlbnQ6IHsgZmlsZXM6IEZpbGVbXSB9KTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBJbWFnZUZpbGUgPSBldmVudC5maWxlc1swXTtcclxuICAgIHRoaXMuc2hvd0Nyb3BEaWFsb2coKTtcclxuICB9XG5cbiAgcHVibGljIGNyb3BwZWRJbWFnZUNoYW5nZWQoZXZlbnQ6IEltYWdlQ3JvcHBlZEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBDcm9wcGVkVXJpID0gZXZlbnQuYmFzZTY0O1xyXG4gIH1cblxyXG4gIHB1YmxpYyBhY2NlcHRDcm9wcGVkSW1hZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVyaSA9IHRoaXMudGVtcENyb3BwZWRVcmk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlPy4odGhpcy51cmkpO1xyXG4gICAgdGhpcy5jbG9zZUNyb3BEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUNyb3BEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRzPy5mb3JFYWNoKGYgPT4gZi5jbGVhcigpKTtcclxuICAgIHRoaXMuZGlzcGxheUNyb3BEaWFsb2cgPSBmYWxzZTtcclxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICA8cC1idXR0b24gKm5nSWY9XCIhdXJpXCIgW2Rpc2FibGVkXT1cInRydWVcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIiBjbGFzcz1cIm1yLTFcIiBwVG9vbHRpcD1cIk5vIGltYWdlIHByZXNlbnRcIj48L3AtYnV0dG9uPlxyXG4gIDxhICpuZ0lmPVwidXJpXCIgW2hyZWZdPVwidXJpIHwgc2FmZVVybFwiIFtkb3dubG9hZF09XCJmaWxlTmFtZSB8fCAnZG93bmxvYWQnXCIgY2xhc3M9XCJtci0xXCIgcEJ1dHRvbiBwVG9vbHRpcD1cIkRvd25sb2FkIGltYWdlXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCI+PC9hPlxyXG4gIDxwLWZpbGVVcGxvYWQgY2xhc3M9XCJtci0xXCIgY2hvb3NlSWNvbj1cInBpLXVwbG9hZCBmYXMgZmEtdXBsb2FkXCIgbW9kZT1cImJhc2ljXCIgW2F1dG9dPVwidHJ1ZVwiIFthY2NlcHRdPVwiYWNjZXB0IHx8ICdpbWFnZS8qJ1wiIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiICh1cGxvYWRIYW5kbGVyKT1cImltYWdlQ2hhbmdlZCgkZXZlbnQpXCIgcFRvb2x0aXA9XCJVcGxvYWQgbmV3IGltYWdlXCI+PC9wLWZpbGVVcGxvYWQ+XHJcbiAgPGltZyAqbmdJZj1cInVyaVwiIGNsYXNzPVwidGh1bWJuYWlsXCIgW3NyY109XCJ1cmkgfCBzYWZlVXJsXCIgW2FsdF09XCJhbHRcIiAoY2xpY2spPVwic2hvd0Nyb3BEaWFsb2coKVwiIHBUb29sdGlwPVwiWm9vbSBhbmQgY3JvcFwiIC8+XHJcbjwvZGl2PlxyXG5cclxuPHAtZGlhbG9nIFtoZWFkZXJdPVwiYWx0ID8/ICcnXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5Q3JvcERpYWxvZ1wiPlxyXG4gIDxpbWFnZS1jcm9wcGVyXHJcbiAgICAgICAgICAgICAgICAgIFthdXRvQ3JvcF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJjcm9wcGVkSW1hZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxpZ25JbWFnZV09XCJhbGlnbkltYWdlID8/ICdjZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvID8/IDFcIlxyXG4gICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvciA/PyBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgW2NhbnZhc1JvdGF0aW9uXT1cImNhbnZhc1JvdGF0aW9uID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXT1cImNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbyA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjcm9wcGVyXT1cImNyb3BwZXIgPz8geyB4MTogLTEwMCwgeTE6IC0xMDAsIHgyOiAxMDAwMCwgeTI6IDEwMDAwIH1cIlxyXG4gICAgICAgICAgICAgICAgICBbY3JvcHBlck1heEhlaWdodF09XCJjcm9wcGVyTWF4SGVpZ2h0ID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbY3JvcHBlck1heFdpZHRoXT1cImNyb3BwZXJNYXhXaWR0aCA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW2Nyb3BwZXJNaW5IZWlnaHRdPVwiY3JvcHBlck1pbkhlaWdodCA/PyAwXCJcclxuICAgICAgICAgICAgICAgICAgW2Nyb3BwZXJNaW5XaWR0aF09XCJjcm9wcGVyTWluV2lkdGggPz8gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjcm9wcGVyU3RhdGljSGVpZ2h0XT1cImNyb3BwZXJTdGF0aWNIZWlnaHQgPz8gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjcm9wcGVyU3RhdGljV2lkdGhdPVwiY3JvcHBlclN0YXRpY1dpZHRoID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImZvcm1hdCA/PyAncG5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpbWFnZVF1YWxpdHldPVwiaW1hZ2VRdWFsaXR5ID8/IDkyXCJcclxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxTdGVwU2l6ZV09XCJpbml0aWFsU3RlcFNpemUgPz8gM1wiXHJcbiAgICAgICAgICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cIm1haW50YWluQXNwZWN0UmF0aW8gPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtvbmx5U2NhbGVEb3duXT1cIm9ubHlTY2FsZURvd24gPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVzaXplVG9XaWR0aF09XCJyZXNpemVUb1dpZHRoID8/IDBcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVzaXplVG9IZWlnaHRdPVwicmVzaXplVG9IZWlnaHQgPz8gMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwicm91bmRDcm9wcGVyID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW2ltYWdlRmlsZV09XCJ0ZW1wSW1hZ2VGaWxlIVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbWFnZVVSTF09XCJ1cmkhXCJcclxuICAgICAgICAgICAgICAgICA+PC9pbWFnZS1jcm9wcGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWF1dG8gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxzcGFuPkJhY2tncm91bmQgY29sb3I6Jm5ic3A7PC9zcGFuPlxyXG4gICAgICA8cC1jb2xvclBpY2tlciBbKG5nTW9kZWwpXT1cImJhY2tncm91bmRDb2xvclwiIGFwcGVuZFRvPVwiYm9keVwiIGNsYXNzPVwibWwtMSBtci0xXCI+PC9wLWNvbG9yUGlja2VyPlxyXG4gICAgICA8aW5wdXQgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImJhY2tncm91bmRDb2xvclwiIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiYWNjZXB0Q3JvcHBlZEltYWdlKClcIiBjbGFzcz1cIm1yLTJcIj5PazwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjbG9zZUNyb3BEaWFsb2coKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L3AtZGlhbG9nPlxyXG4iXX0=
@@ -26,10 +26,11 @@ import * as i4 from 'ngx-image-cropper';
26
26
  import { ImageCropperComponent, ImageCropperModule } from 'ngx-image-cropper';
27
27
  import * as i2 from 'primeng/fileupload';
28
28
  import { FileUpload, FileUploadModule } from 'primeng/fileupload';
29
+ import * as i3 from 'primeng/dialog';
30
+ import { Dialog, DialogModule } from 'primeng/dialog';
31
+ import { firstValueFrom } from 'rxjs';
29
32
  import * as i1$2 from 'primeng/button';
30
33
  import { ButtonModule } from 'primeng/button';
31
- import * as i3 from 'primeng/dialog';
32
- import { DialogModule } from 'primeng/dialog';
33
34
  import * as i5 from 'primeng/colorpicker';
34
35
  import { ColorPickerModule } from 'primeng/colorpicker';
35
36
  import * as i3$1 from '@angular/common';
@@ -643,7 +644,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
643
644
 
644
645
  class RESTWorldImageViewComponent {
645
646
  constructor() {
646
- this._dialogHasBeenOpenedBefore = false;
647
647
  this.disabled = false;
648
648
  this.displayCropDialog = false;
649
649
  }
@@ -659,15 +659,25 @@ class RESTWorldImageViewComponent {
659
659
  setDisabledState(isDisabled) {
660
660
  this.disabled = isDisabled;
661
661
  }
662
- showCropDialog() {
662
+ ngOnInit() {
663
+ // If no background color is set, we set it to white.
664
+ // Otherwise the color picker would show red, the input would be empty and the image cropper would show transparent.
665
+ if (!this.backgroundColor)
666
+ this.backgroundColor = '#ffffff';
667
+ }
668
+ ngAfterViewInit() {
663
669
  var _a;
670
+ // We need to trigger onResize one time, after the opening animation of the dialog has been completed.
671
+ // Otherwise the image cropper thinks that the image size is 0x0,
672
+ // because the opening animation hast just begun when the image cropper is first shown.
673
+ (_a = this.dialogs) === null || _a === void 0 ? void 0 : _a.forEach((d) => __awaiter(this, void 0, void 0, function* () {
674
+ var _b;
675
+ yield firstValueFrom(d.onShow);
676
+ (_b = this.imageCroppers) === null || _b === void 0 ? void 0 : _b.forEach(i => i.onResize());
677
+ }));
678
+ }
679
+ showCropDialog() {
664
680
  this.displayCropDialog = true;
665
- // The image cropper has a bug that stops the image from being visible otherwise.
666
- // Changing the image or resizing the window would also cause the image to appear.
667
- if (!this._dialogHasBeenOpenedBefore) {
668
- this._dialogHasBeenOpenedBefore = true;
669
- (_a = this.imageCroppers) === null || _a === void 0 ? void 0 : _a.forEach(i => i.onResize());
670
- }
671
681
  }
672
682
  imageChanged(event) {
673
683
  this.tempImageFile = event.files[0];
@@ -693,7 +703,7 @@ RESTWorldImageViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
693
703
  provide: NG_VALUE_ACCESSOR,
694
704
  useExisting: forwardRef(() => RESTWorldImageViewComponent),
695
705
  multi: true
696
- }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }, { propertyName: "imageCroppers", predicate: ImageCropperComponent, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color:&nbsp;</span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n", styles: ["img.thumbnail{height:calc(1rem + 18px);cursor:zoom-in;border-radius:3px}a{text-decoration:none;height:calc(1rem + 18px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1$2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }, { type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }, { type: i5.ColorPicker, selector: "p-colorPicker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onChange", "onShow", "onHide"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.InputText, selector: "[pInputText]" }, { type: i10.Ripple, selector: "[pRipple]" }], pipes: { "safeUrl": SafeUrlPipe } });
706
+ }], viewQueries: [{ propertyName: "fileUploads", predicate: FileUpload, descendants: true }, { propertyName: "imageCroppers", predicate: ImageCropperComponent, descendants: true }, { propertyName: "dialogs", predicate: Dialog, descendants: true }], ngImport: i0, template: "<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color:&nbsp;</span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n", styles: ["img.thumbnail{height:calc(1rem + 18px);cursor:zoom-in;border-radius:3px}a{text-decoration:none;height:calc(1rem + 18px)}a.p-button-icon-only span.p-button-label{height:1rem!important}\n"], components: [{ type: i1$2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i2.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }, { type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }, { type: i5.ColorPicker, selector: "p-colorPicker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onChange", "onShow", "onHide"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.InputText, selector: "[pInputText]" }, { type: i10.Ripple, selector: "[pRipple]" }], pipes: { "safeUrl": SafeUrlPipe } });
697
707
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: RESTWorldImageViewComponent, decorators: [{
698
708
  type: Component,
699
709
  args: [{ selector: 'rw-image', providers: [{
@@ -753,6 +763,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
753
763
  }], imageCroppers: [{
754
764
  type: ViewChildren,
755
765
  args: [ImageCropperComponent]
766
+ }], dialogs: [{
767
+ type: ViewChildren,
768
+ args: [Dialog]
756
769
  }] } });
757
770
 
758
771
  class RESTWorldFileViewComponent {