barsa-sap-ui 1.0.445 → 1.0.447

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 (55) hide show
  1. package/esm2020/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +1 -1
  2. package/esm2020/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +3 -3
  3. package/esm2020/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +3 -3
  4. package/esm2020/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +3 -3
  5. package/esm2020/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +3 -3
  6. package/esm2020/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +3 -3
  7. package/esm2020/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +98 -0
  8. package/esm2020/lib/barsa-sap-ui.module.mjs +23 -22
  9. package/esm2020/lib/barsa-table-column/barsa-table-column.component.mjs +7 -5
  10. package/esm2020/lib/barsa-table-header/barsa-table-header.component.mjs +5 -3
  11. package/esm2020/lib/barsa-table-row/barsa-table-row.component.mjs +5 -3
  12. package/esm2020/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +3 -3
  13. package/esm2020/lib/card-item/card-item.component.mjs +3 -3
  14. package/esm2020/lib/column-renderer/column-renderer.component.mjs +3 -3
  15. package/esm2020/lib/file-viewer-popover/file-viewer-popover.component.mjs +3 -3
  16. package/esm2020/lib/form-dialog/form-dialog.component.mjs +1 -1
  17. package/esm2020/lib/fullscreen-files.directive.mjs +1 -1
  18. package/esm2020/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +3 -3
  19. package/esm2020/lib/index.mjs +12 -10
  20. package/esm2020/lib/layout-control/layout-control.component.mjs +3 -3
  21. package/esm2020/lib/ly-layout-panel/ly-layout-panel.component.mjs +1 -1
  22. package/esm2020/lib/models/grid-view.mjs +1 -1
  23. package/esm2020/lib/report-view-renderer.directive.mjs +11 -2
  24. package/esm2020/lib/sap-ui-report-base.component.mjs +3 -3
  25. package/esm2020/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +3 -3
  26. package/esm2020/lib/ui-check-box/ui-check-box.component.mjs +3 -3
  27. package/esm2020/lib/ui-color-ui/ui-color-ui.component.mjs +3 -3
  28. package/esm2020/lib/ui-date-time/ui-date-time.component.mjs +3 -3
  29. package/esm2020/lib/ui-grid/ui-grid.component.mjs +3 -3
  30. package/esm2020/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +1 -1
  31. package/esm2020/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +3 -3
  32. package/esm2020/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +4 -4
  33. package/esm2020/lib/ui-picture-file/ui-picture-file.component.mjs +3 -3
  34. package/esm2020/lib/ui-report-container/ui-report-container.component.mjs +3 -3
  35. package/esm2020/lib/ui-simple-combo/ui-simple-combo.component.mjs +3 -3
  36. package/esm2020/lib/ui-switch-button/ui-switch-button.component.mjs +3 -3
  37. package/esm2020/lib/ui-table-view/ui-table-view.component.mjs +3 -6
  38. package/esm2020/lib/ui-text-area/ui-text-area.component.mjs +1 -1
  39. package/esm2020/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +3 -3
  40. package/esm2020/lib/ulv-column-settings/ulv-column-settings.component.mjs +1 -1
  41. package/esm2020/lib/ulv-toolbar/ulv-toolbar.component.mjs +3 -3
  42. package/esm2020/public-api.mjs +2 -1
  43. package/fesm2015/barsa-sap-ui.mjs +172 -77
  44. package/fesm2015/barsa-sap-ui.mjs.map +1 -1
  45. package/fesm2020/barsa-sap-ui.mjs +172 -77
  46. package/fesm2020/barsa-sap-ui.mjs.map +1 -1
  47. package/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.d.ts +31 -0
  48. package/lib/barsa-sap-ui.module.d.ts +32 -31
  49. package/lib/barsa-table-column/barsa-table-column.component.d.ts +2 -1
  50. package/lib/barsa-table-header/barsa-table-header.component.d.ts +2 -1
  51. package/lib/barsa-table-row/barsa-table-row.component.d.ts +2 -1
  52. package/lib/report-view-renderer.directive.d.ts +4 -1
  53. package/lib/ui-table-view/ui-table-view.component.d.ts +0 -1
  54. package/package.json +1 -1
  55. package/public-api.d.ts +1 -0
@@ -183,7 +183,7 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
183
183
  }
184
184
  return;
185
185
  }
186
- this.fallbackLink = `امکان نمایش فایل در این مرورگر وجود ندارد.
186
+ this.fallbackLink = `امکان نمایش فایل در این مرورگر وجود ندارد.
187
187
  برای باز کردن فایل از لینک زیر استفاده کنید: </br> <a href='${BarsaApi.Common.File.CreateAttachmentUrl(fileId, false, true)}'>دانلود فایل بصورت pdf</a> </br> <a href='${BarsaApi.Common.File.CreateAttachmentUrl(fileId, false, false)}'>دانلود فایل بصورت بصورت اصلی</a>`;
188
188
  if (!BarsaApi.Ext.isIE) {
189
189
  // const options = {
@@ -245,10 +245,10 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
245
245
  }
246
246
  }
247
247
  UiPdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
248
- UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\n <ng-container [ngSwitch]=\"parameters?.ShowMode\">\n <div *ngSwitchCase=\"'2'\">\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\n <fd-toolbar\n [class.dialogMode]=\"dialogMode\"\n [transparent]=\"true\"\n [shouldOverflow]=\"true\"\n *ngIf=\"(disableOrReadonly$ | async) !== true\"\n >\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n *ngIf=\"!parameters?.HideDelete\"\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n\n <button\n *ngIf=\"!parameters?.HideAttach\"\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'Edit' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button\n *ngIf=\"dialogMode\"\n fd-toolbar-item\n fd-button\n [glyph]=\"'show'\"\n [attr.fdOverflowPriority]=\"'low'\"\n [fdType]=\"'transparent'\"\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\n (click)=\"onOpenPreviewInDialog()\"\n bodyClick\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n [attr.fdOverflowPriority]=\"'low'\"\n [glyph]=\"'download'\"\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n bodyClick\n ></button>\n\n <button\n *ngIf=\"!parameters?.HideRefresh\"\n [attr.fdOverflowPriority]=\"'low'\"\n fd-toolbar-item\n fd-button\n [glyph]=\"dialogMode ? null : 'refresh'\"\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\n [fdType]=\"'transparent'\"\n bodyClick\n (click)=\"onRefresh()\"\n ></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n</ng-template>\n<ng-template #preview>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n fillEmptySpace\n [containerDom]=\"formContainer\"\n [dontUseTopBound]=\"true\"\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\n </div>\n <ng-template #browserPdf>\n <object\n *ngIf=\"hasPdf; else HatchBackground\"\n fillEmptySpace\n [containerDom]=\"formContainer\"\n [dontUseTopBound]=\"true\"\n style=\"flex-grow: 1\"\n [attr.data]=\"valueUrl\"\n type=\"application/pdf\"\n width=\"100%\"\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\n [attr.html]=\"fallbackLink\"\n ></object>\n </ng-template>\n\n <ng-template #HatchBackground>\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\n <div style=\"display: flex\">\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\n <fd-object-identifier>\n {{ value.FileName }}\n </fd-object-identifier>\n </div>\n </ng-container>\n <ng-template #noFile>\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h3 fd-title>edit in word</h3>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]" }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i11.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i12.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "directive", type: i12.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "component", type: i13.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
248
+ UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <ng-container [ngSwitch]=\"parameters?.ShowMode\">\r\n <div *ngSwitchCase=\"'2'\">\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n <fd-toolbar\r\n [class.dialogMode]=\"dialogMode\"\r\n [transparent]=\"true\"\r\n [shouldOverflow]=\"true\"\r\n *ngIf=\"(disableOrReadonly$ | async) !== true\"\r\n >\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n <button\r\n *ngIf=\"!parameters?.HideDelete\"\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"!parameters?.HideAttach\"\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n <button\r\n *ngIf=\"dialogMode\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"!parameters?.HideRefresh\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n</ng-template>\r\n<ng-template #preview>\r\n <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer>\r\n </div>\r\n <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i10.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i11.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i12.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "directive", type: i12.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "component", type: i13.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
249
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, decorators: [{
250
250
  type: Component,
251
- args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\n <ng-container [ngSwitch]=\"parameters?.ShowMode\">\n <div *ngSwitchCase=\"'2'\">\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\n <fd-toolbar\n [class.dialogMode]=\"dialogMode\"\n [transparent]=\"true\"\n [shouldOverflow]=\"true\"\n *ngIf=\"(disableOrReadonly$ | async) !== true\"\n >\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n *ngIf=\"!parameters?.HideDelete\"\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n\n <button\n *ngIf=\"!parameters?.HideAttach\"\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'Edit' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button\n *ngIf=\"dialogMode\"\n fd-toolbar-item\n fd-button\n [glyph]=\"'show'\"\n [attr.fdOverflowPriority]=\"'low'\"\n [fdType]=\"'transparent'\"\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\n (click)=\"onOpenPreviewInDialog()\"\n bodyClick\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n [attr.fdOverflowPriority]=\"'low'\"\n [glyph]=\"'download'\"\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n bodyClick\n ></button>\n\n <button\n *ngIf=\"!parameters?.HideRefresh\"\n [attr.fdOverflowPriority]=\"'low'\"\n fd-toolbar-item\n fd-button\n [glyph]=\"dialogMode ? null : 'refresh'\"\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\n [fdType]=\"'transparent'\"\n bodyClick\n (click)=\"onRefresh()\"\n ></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n</ng-template>\n<ng-template #preview>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n fillEmptySpace\n [containerDom]=\"formContainer\"\n [dontUseTopBound]=\"true\"\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\n </div>\n <ng-template #browserPdf>\n <object\n *ngIf=\"hasPdf; else HatchBackground\"\n fillEmptySpace\n [containerDom]=\"formContainer\"\n [dontUseTopBound]=\"true\"\n style=\"flex-grow: 1\"\n [attr.data]=\"valueUrl\"\n type=\"application/pdf\"\n width=\"100%\"\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\n [attr.html]=\"fallbackLink\"\n ></object>\n </ng-template>\n\n <ng-template #HatchBackground>\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\n <div style=\"display: flex\">\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\n <fd-object-identifier>\n {{ value.FileName }}\n </fd-object-identifier>\n </div>\n </ng-container>\n <ng-template #noFile>\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h3 fd-title>edit in word</h3>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"] }]
251
+ args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\r\n <ng-container [ngSwitch]=\"parameters?.ShowMode\">\r\n <div *ngSwitchCase=\"'2'\">\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n <fd-toolbar\r\n [class.dialogMode]=\"dialogMode\"\r\n [transparent]=\"true\"\r\n [shouldOverflow]=\"true\"\r\n *ngIf=\"(disableOrReadonly$ | async) !== true\"\r\n >\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n <button\r\n *ngIf=\"!parameters?.HideDelete\"\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"!parameters?.HideAttach\"\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n <button\r\n *ngIf=\"dialogMode\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"!parameters?.HideRefresh\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n</ng-template>\r\n<ng-template #preview>\r\n <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer>\r\n </div>\r\n <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div fillEmptySpace [containerDom]=\"formContainer\" [dontUseTopBound]=\"true\" class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"] }]
252
252
  }], propDecorators: { _pdfViewerOnDemand: [{
253
253
  type: ViewChild,
254
254
  args: ['pdfViewerOnDemand']
@@ -259,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
259
259
  type: HostBinding,
260
260
  args: ['style.min-height']
261
261
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQTRCO0lBUHRFOztRQVVxQyxlQUFVLEdBQWtCLE1BQU0sQ0FBQztRQTJCcEUsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBUWYsbUJBQWMsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBaVF6RDtJQWhRRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIs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QVE7UUFDaEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUNPLFNBQVM7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7aUhBdlNRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDZHQUhsQixDQUFDLGFBQWEsQ0FBQyx5UkNoQzlCLDBzTkErTEE7MkZENUphLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxtQkFBbUIsYUFHbEIsQ0FBQyxhQUFhLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHZixrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxVQUFVO3NCQUExQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgVXBsb2FkU2VydmljZSxcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXG4gICAgaXNJbWFnZSxcbiAgICBnZXRJbWFnZVBhdGgsXG4gICAgZ2V0SWNvbixcbiAgICBnZXRWYWxpZEV4dGVuc2lvbixcbiAgICBJVXBsb2FkaW5nU3RhdGUsXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBEZXZpY2VJbmZvRmllbGRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGV2aWNlLWluZm8tZmllbGQtYmFzZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXBkZi12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbVXBsb2FkU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlQZGZWaWV3ZXJDb21wb25lbnQgZXh0ZW5kcyBEZXZpY2VJbmZvRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ3BkZlZpZXdlck9uRGVtYW5kJykgX3BkZlZpZXdlck9uRGVtYW5kOiBhbnk7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVHBsJykgX2RpYWxvZ1RwbDogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBfbWluaGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gJzcwdmgnO1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgZmFsbGJhY2tMaW5rOiBhbnk7XG4gICAgY2FuTm90UmVuZGVyUGRmOiBib29sZWFuO1xuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xuICAgIGhhc1BkZjogYm9vbGVhbjtcbiAgICBwZGZPYmplY3Q6IHtcbiAgICAgICAgYXV0b0VsOiB7XG4gICAgICAgICAgICB0YWc6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgICAgICAgICBoZWlnaHQ6IHN0cmluZztcbiAgICAgICAgICAgIGh0bWw6IGFueTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XG4gICAgZmlsZXM6IEZpbGVbXTtcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xuICAgIG9mZmljZU9ubGluZTogYW55O1xuICAgIHVzZVdvcmRFZGl0b3I6IGFueTtcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcbiAgICBjYW5SZW1vdmU6IGJvb2xlYW47XG4gICAgY2FuVXBsb2FkOiBib29sZWFuO1xuICAgIGNhbkVkaXQ6IGJvb2xlYW47XG4gICAgY2FuRG93bmxvYWQ6IGJvb2xlYW47XG4gICAgY2FuRGVsZXRlID0gdHJ1ZTtcbiAgICBjYW5TYXZlID0gdHJ1ZTtcbiAgICB2YWxpZEV4dGVuc2lvbjogc3RyaW5nO1xuICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XG4gICAgc2luZ2xlRmlsZVRodW1ibmFpbFVybDogc3RyaW5nO1xuICAgIHBhcmVudEhlaWdodDogbnVtYmVyO1xuICAgIGJsb2JVcmw6IHN0cmluZztcbiAgICBwYXJhbWV0ZXJlczogVWlQZGZWaWV3ZXJTZXR0aW5nO1xuICAgIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N0YXRlJCA9IHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkaW5nU3RhdGUkO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBzd2l0Y2ggKHRoaXMucGFyYW1ldGVycz8uU2hvd01vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgIHRoaXMuX21pbmhlaWdodCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZnJlc2gkLnN1YnNjcmliZSgoZnJvbVNlcnZlcjogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaChmcm9tU2VydmVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gbmV3IEZpbGVzVmFsaWRhdGlvbkhlbHBlcihcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlQ291bnQsXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhUb3RhbEZpbGVTaXplS2JcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3JcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xuICAgICAgICAgICAgOiBnZXRWYWxpZEV4dGVuc2lvbih0aGlzLlNldHRpbmcuVmFsaWRFeHRlbnNpb25zKTtcbiAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdGhpcy5TZXR0aW5nLlZpZXdUeXBlID09PSAnU2luZ2xlRmlsZUNvbnRyb2wnO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChmb3JtSGVpZ2h0ICYmICFmb3JtSGVpZ2h0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xuICAgIH1cbiAgICBvblZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT1ZpZXcnLCBlKTtcbiAgICB9XG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRG93bmxvYWQnKTtcbiAgICB9XG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkVG9TZXJ2ZXIoZmlsZXMpO1xuICAgIH1cbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRGVsZXRlJyk7XG4gICAgfVxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignT0RFZGl0Jyk7XG4gICAgfVxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGUgPSB7IGN0cmxLZXk6IGV2ZW50LmN0cmxLZXkgfTtcblxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcbiAgICB9XG4gICAgb25SZWZyZXNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XG4gICAgfVxuICAgIERvd25sb2FkRmlsZUlkKGZpbGVJZCwgdmlld0luQnJvd3NlciwgY29udmVydFRvLCBmb3JPY3gsIGlzT2ZmaWNlT25saW5lKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkZpbGUuRG93bmxvYWRGaWxlQ29udGVudC5iaW5kKHRoaXMpKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBudWxsLFxuICAgICAgICAgICAgICAgIHZpZXdJbkJyb3dzZXIsXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxuICAgICAgICAgICAgICAgIGlzT2ZmaWNlT25saW5lLFxuICAgICAgICAgICAgICAgIGZvck9jeFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICBhbGVydChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIG9uT3BlblByZXZpZXdJbkRpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RwbCwge1xuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBmdWxsU2NyZWVuOiB0cnVlLFxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtYXAnLFxuICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5OiAnY2hvb3NlIGxvY2F0aW9uJyxcbiAgICAgICAgICAgIGZvY3VzVHJhcHBlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25EaWFsb2dDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IEJhcnNhQXBpLkNvbW1vbi5GaWxlLkI2NHRvQmxvYihyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5jb250ZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnBkZlNyYyA9IHRoaXMuYmxvYlVybDsgLy8gcGRmU3JjIGNhbiBiZSBCbG9iIG9yIFVpbnQ4QXJyYXlcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYmxvYlVybCk7XG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGxvYWRUb1NlcnZlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZWZyZXNoQnV0dG9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoZmFsc2UpO1xuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxuICAgICAgICAgICAgJ0NvbW1vbi5GaWxlLklzQWdlbnRBY3RpdmUnLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5BZ2VudEhlbHBlci5Jbml0LmJpbmQoQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZW50SXNBY3RpdmUgPSByZXN1bHQgPT09ICdPSyc7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoYWdlbnRJc0FjdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5JC5zdWJzY3JpYmUoKGRpc2FibGVPclJlYWRvbmx5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYW5TYXZlID0gdGhpcy5jYW5TYXZlO1xuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICFCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXQwID0gY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XG4gICAgICAgICAgICB0aGlzLmNhbkRvd25sb2FkID0gIXRoaXMuU2V0dGluZy5Jc1dvcmRWaWV3ZXIgfHwgKCFpc0FnZW50QWN0aXZlICYmIGVkaXQwKTtcbiAgICAgICAgICAgIHRoaXMuY2FuVXBsb2FkID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XG4gICAgICAgICAgICB0aGlzLmNhblJlbW92ZSA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XG4gICAgICAgICAgICB0aGlzLnVzZVdvcmRFZGl0b3IgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb21tYW5kQ2xpY2tIYW5kbGVyKGl0ZW1JZCwga2V5Ym9hcmRFdmVudD8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tbWFuZElkID0gaXRlbUlkO1xuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0NvbW1hbmRSZXF1ZXN0JywgdGhpcywgY29tbWFuZElkLCBmaWxlSWQsIGtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2ZmaWNlT25saW5lID0gZnJvbVNlcnZlciA9PT0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xuXG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcbiAgICAgICAgaWYgKCFmaWxlSWQgfHwgZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICBpZiAoZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrTGluayA9IGDYp9mF2qnYp9mGINmG2YXYp9uM2LQg2YHYp9uM2YQg2K/YsSDYp9uM2YYg2YXYsdmI2LHar9ixINmI2KzZiNivINmG2K/Yp9ix2K8uXG4gICAgICAgICDYqNix2KfbjCDYqNin2LIg2qnYsdiv2YYg2YHYp9uM2YQg2KfYsiDZhNuM2YbaqSDYstuM2LEg2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2K86ICA8L2JyPiA8YSBocmVmPScke0JhcnNhQXBpLkNvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoXG4gICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxuICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApfSc+2K/Yp9mG2YTZiNivINmB2KfbjNmEINio2LXZiNix2Kog2KjYtdmI2LHYqiDYp9i12YTbjDwvYT5gO1xuXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAvLyAgICAgZmFsbGJhY2tMaW5rOiB0aGlzLmZhbGxiYWNrTGluayxcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XG4gICAgICAgICAgICAvLyAgICAgICAgIHZpZXc6ICdGaXRIJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc2Nyb2xsYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc3RhdHVzYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG1lc3NhZ2VzOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyB9O1xuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XG4gICAgICAgICAgICBjb252ZXJ0VG8gPSAncGRmLGRvYyxkb2N4LHdvcmQnLmluZGV4T2YoZmlsZXMuVHlwZSkgPiAtMSA/ICdwZGYnIDogY29udmVydFRvO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKGZpbGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZUNvbnRyb2wgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsIGNvbnZlcnRUbywgbnVsbCwgb2ZmaWNlT25saW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNhbk5vdFJlbmRlclBkZiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwbG9hZEZpbGUoZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndW5pY0ZpbGVOYW1lJywgJ3gnICsgQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0TmV3TWV0YUd1aWQoKSArICc7OzsnICsgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuVmlld1R5cGUgIT09ICdMaW5lYXJMaXN0Qm94Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKHJlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaW5nbGVDb250cm9sKHZhbDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ltYWdlKHZhbC5UeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SWNvbih2YWwuVHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfaGlkZU1hc2soKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBVaVBkZlZpZXdlclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBTaG93TW9kZTogc3RyaW5nOyAvLyAyPSBidXR0b25tb2RlIDE9ZGVmYXVsdFxuICAgIEhpZGVEZWxldGU6IGJvb2xlYW47XG4gICAgSGlkZUF0dGFjaDogYm9vbGVhbjtcbiAgICBIaWRlUmVmcmVzaDogYm9vbGVhbjtcbn1cbiIsIjxuZy1jb250YWluZXIgKnVudGlsSW5WaWV3PVwiZWxcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwYXJhbWV0ZXJzPy5TaG93TW9kZVwiPlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInMidcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyOyBjb250ZXh0OiB7IGRpYWxvZ01vZGU6IHRydWUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2aWV3XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhciBsZXQtZGlhbG9nTW9kZT1cImRpYWxvZ01vZGVcIj5cbiAgICA8ZmQtdG9vbGJhclxuICAgICAgICBbY2xhc3MuZGlhbG9nTW9kZV09XCJkaWFsb2dNb2RlXCJcbiAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgICpuZ0lmPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSAhPT0gdHJ1ZVwiXG4gICAgPlxuICAgICAgICA8ZmQtZmlsZS11cGxvYWRlclxuICAgICAgICAgICAgI3VwbG9hZGVyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwidmFsaWRFeHRlbnNpb25cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlc1wiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2VkKT1cIm9uRmlsZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCIoY29udGVudERlbnNpdHkkIHwgYXN5bmMpISFcIlxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFwYXJhbWV0ZXJzPy5IaWRlRGVsZXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkRlbGV0ZSAmJiB2YWx1ZSlcIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIGdseXBoPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFwYXJhbWV0ZXJzPy5IaWRlQXR0YWNoXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXBsb2FkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0XCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cImVkaXRcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInVzZVdvcmRFZGl0b3JcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwiZG9jLWF0dGFjaG1lbnRcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInRWRpdCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdEluV29yZCgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm9mZmljZU9ubGluZVwiXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidPZmZpY2VPbmxpbmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9mZmljZU9ubGluZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImRpYWxvZ01vZGVcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIFtnbHlwaF09XCInc2hvdydcIlxuICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidsb3cnXCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiIWRpYWxvZ01vZGUgPyAnJyA6ICgnVmlldycgfCBiYmJUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5QcmV2aWV3SW5EaWFsb2coKVwiXG4gICAgICAgICAgICBib2R5Q2xpY2tcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNhbkRvd25sb2FkXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxuICAgICAgICAgICAgW2dseXBoXT1cIidkb3dubG9hZCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ0Rvd25sb2FkJyB8IGJiYlRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkKClcIlxuICAgICAgICAgICAgYm9keUNsaWNrXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFwYXJhbWV0ZXJzPy5IaWRlUmVmcmVzaFwiXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIFtnbHlwaF09XCJkaWFsb2dNb2RlID8gbnVsbCA6ICdyZWZyZXNoJ1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiIWRpYWxvZ01vZGUgPyAnJyA6ICgnUmVmcmVzaCcgfCBiYmJUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBib2R5Q2xpY2tcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgW2xvYWRpbmddPVwiKHVwbG9hZGluZ1N0YXRlJCB8IGFzeW5jKT8udXBsb2FkaW5nID09PSB0cnVlXCJcbiAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgPC9mZC10b29sYmFyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJldmlldz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXNNb2JpbGU7IGVsc2UgYnJvd3NlclBkZlwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiIWJsb2JVcmwgPyAnLjA2MjVyZW0gc29saWQgdmFyKC0tc2FwR3JvdXBfVGl0bGVCb3JkZXJDb2xvciknIDogbnVsbFwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDcwdmggLSA0MHB4KTsgcG9zaXRpb246IHJlbGF0aXZlXCJcbiAgICA+XG4gICAgICAgIDxuZzItcGRmanMtdmlld2VyXG4gICAgICAgICAgICBmaWxsRW1wdHlTcGFjZVxuICAgICAgICAgICAgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCJcbiAgICAgICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAjcGRmVmlld2VyT25EZW1hbmRcbiAgICAgICAgICAgIFtleHRlcm5hbFdpbmRvd109XCJmYWxzZVwiXG4gICAgICAgICAgICBbZG93bmxvYWRGaWxlTmFtZV09XCJibG9iVXJsXCJcbiAgICAgICAgICAgIFtvcGVuRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbdmlld0Jvb2ttYXJrXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzaG93U3Bpbm5lcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtkb3dubG9hZF09XCJ0cnVlXCJcbiAgICAgICAgPjwvbmcyLXBkZmpzLXZpZXdlcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Jyb3dzZXJQZGY+XG4gICAgICAgIDxvYmplY3RcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUGRmOyBlbHNlIEhhdGNoQmFja2dyb3VuZFwiXG4gICAgICAgICAgICBmaWxsRW1wdHlTcGFjZVxuICAgICAgICAgICAgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCJcbiAgICAgICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBzdHlsZT1cImZsZXgtZ3JvdzogMVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhXT1cInZhbHVlVXJsXCJcbiAgICAgICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZm9ybUhlaWdodCAtIDMwID4gMCA/IGZvcm1IZWlnaHQgLSAzMCArICdweCcgOiAnMTAwdmgnXCJcbiAgICAgICAgICAgIFthdHRyLmh0bWxdPVwiZmFsbGJhY2tMaW5rXCJcbiAgICAgICAgPjwvb2JqZWN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI0hhdGNoQmFja2dyb3VuZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpbmdsZUNvbnRyb2wgJiYgdmFsdWUgJiYgIXZhbHVlLklzRGVsZXRlZDsgZWxzZSBub0ZpbGVcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+XG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInNpbmdsZUZpbGVUaHVtYm5haWxVcmxcIiBbc3JjXT1cInNpbmdsZUZpbGVUaHVtYm5haWxVcmxcIiAvPlxuICAgICAgICAgICAgICAgIDxmZC1vYmplY3QtaWRlbnRpZmllcj5cbiAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUuRmlsZU5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLW9iamVjdC1pZGVudGlmaWVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRmlsZT5cbiAgICAgICAgICAgIDxkaXYgZmlsbEVtcHR5U3BhY2UgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCIgW2RvbnRVc2VUb3BCb3VuZF09XCJ0cnVlXCIgY2xhc3M9XCJoYXRjaEJhY2tncm91bmRcIj48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2dUcGw+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCIgY2xhc3M9XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGZkLXRpdGxlPmVkaXQgaW4gd29yZDwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyIGFyaWFMYWJlbD1cImNsb3NlXCIgZ2x5cGg9XCJkZWNsaW5lXCIgKGNsaWNrKT1cIm9uRGlhbG9nQ2xvc2UoKVwiPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8L2ZkLWRpYWxvZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsNEJBQTRCO0lBUHRFOztRQVVxQyxlQUFVLEdBQWtCLE1BQU0sQ0FBQztRQTJCcEUsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBUWYsbUJBQWMsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBaVF6RDtJQWhRRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIs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QVE7UUFDaEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUNPLFNBQVM7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7aUhBdlNRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDZHQUhsQixDQUFDLGFBQWEsQ0FBQyx5UkNoQzlCLHdrT0ErTEE7MkZENUphLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxtQkFBbUIsYUFHbEIsQ0FBQyxhQUFhLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHZixrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNOLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxVQUFVO3NCQUExQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBCYXJzYUFwaSxcclxuICAgIFVwbG9hZFNlcnZpY2UsXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBpc0ltYWdlLFxyXG4gICAgZ2V0SW1hZ2VQYXRoLFxyXG4gICAgZ2V0SWNvbixcclxuICAgIGdldFZhbGlkRXh0ZW5zaW9uLFxyXG4gICAgSVVwbG9hZGluZ1N0YXRlLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbFxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1wZGYtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpUGRmVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BkZlZpZXdlck9uRGVtYW5kJykgX3BkZlZpZXdlck9uRGVtYW5kOiBhbnk7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUcGwnKSBfZGlhbG9nVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4taGVpZ2h0JykgX21pbmhlaWdodDogc3RyaW5nIHwgbnVsbCA9ICc3MHZoJztcclxuICAgIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgICBmYWxsYmFja0xpbms6IGFueTtcclxuICAgIGNhbk5vdFJlbmRlclBkZjogYm9vbGVhbjtcclxuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xyXG4gICAgaGFzUGRmOiBib29sZWFuO1xyXG4gICAgcGRmT2JqZWN0OiB7XHJcbiAgICAgICAgYXV0b0VsOiB7XHJcbiAgICAgICAgICAgIHRhZzogc3RyaW5nO1xyXG4gICAgICAgICAgICBkYXRhOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcclxuICAgICAgICAgICAgd2lkdGg6IHN0cmluZztcclxuICAgICAgICAgICAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGh0bWw6IGFueTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8SVVwbG9hZGluZ1N0YXRlPjtcclxuICAgIGZpbGVzOiBGaWxlW107XHJcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xyXG4gICAgb2ZmaWNlT25saW5lOiBhbnk7XHJcbiAgICB1c2VXb3JkRWRpdG9yOiBhbnk7XHJcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcclxuICAgIGNhblJlbW92ZTogYm9vbGVhbjtcclxuICAgIGNhblVwbG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBjYW5Eb3dubG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkRlbGV0ZSA9IHRydWU7XHJcbiAgICBjYW5TYXZlID0gdHJ1ZTtcclxuICAgIHZhbGlkRXh0ZW5zaW9uOiBzdHJpbmc7XHJcbiAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXI6IEZpbGVzVmFsaWRhdGlvbkhlbHBlcjtcclxuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XHJcbiAgICBzaW5nbGVGaWxlVGh1bWJuYWlsVXJsOiBzdHJpbmc7XHJcbiAgICBwYXJlbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGJsb2JVcmw6IHN0cmluZztcclxuICAgIHBhcmFtZXRlcmVzOiBVaVBkZlZpZXdlclNldHRpbmc7XHJcbiAgICBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3RhdGUkID0gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWRpbmdTdGF0ZSQ7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucGFyYW1ldGVycz8uU2hvd01vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5oZWlnaHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCQuc3Vic2NyaWJlKChmcm9tU2VydmVyOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goZnJvbVNlcnZlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maWxlc1ZhbGlkYXRpb25IZWxwZXIgPSBuZXcgRmlsZXNWYWxpZGF0aW9uSGVscGVyKFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZUNvdW50LFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heFRvdGFsRmlsZVNpemVLYlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yXHJcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xyXG4gICAgICAgICAgICA6IGdldFZhbGlkRXh0ZW5zaW9uKHRoaXMuU2V0dGluZy5WYWxpZEV4dGVuc2lvbnMpO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRoaXMuU2V0dGluZy5WaWV3VHlwZSA9PT0gJ1NpbmdsZUZpbGVDb250cm9sJztcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGZvcm1IZWlnaHQgJiYgIWZvcm1IZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkVkaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xyXG4gICAgfVxyXG4gICAgb25WaWV3KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09PVmlldycsIGUpO1xyXG4gICAgfVxyXG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEb3dubG9hZCcpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRUb1NlcnZlcihmaWxlcyk7XHJcbiAgICB9XHJcbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEZWxldGUnKTtcclxuICAgIH1cclxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPREVkaXQnKTtcclxuICAgIH1cclxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG5cclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcclxuICAgIH1cclxuICAgIG9uUmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XHJcbiAgICB9XHJcbiAgICBEb3dubG9hZEZpbGVJZChmaWxlSWQsIHZpZXdJbkJyb3dzZXIsIGNvbnZlcnRUbywgZm9yT2N4LCBpc09mZmljZU9ubGluZSk6IHZvaWQge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBCYXJzYUFwaS5VbC5Mb2FkaW5nTWFzay5NYXNrKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH0sIDApO1xyXG5cclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uRmlsZS5Eb3dubG9hZEZpbGVDb250ZW50LmJpbmQodGhpcykoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgICAgICAgIGZpbGVVcmw6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB2aWV3SW5Ccm93c2VyLFxyXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxyXG4gICAgICAgICAgICAgICAgaXNPZmZpY2VPbmxpbmUsXHJcbiAgICAgICAgICAgICAgICBmb3JPY3hcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVNYXNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcclxuICAgICAgICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBvbk9wZW5QcmV2aWV3SW5EaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RwbCwge1xyXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgZnVsbFNjcmVlbjogdHJ1ZSxcclxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21hcCcsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ2Nob29zZSBsb2NhdGlvbicsXHJcbiAgICAgICAgICAgIGZvY3VzVHJhcHBlZDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25EaWFsb2dDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBibG9iID0gQmFyc2FBcGkuQ29tbW9uLkZpbGUuQjY0dG9CbG9iKHJlc3BvbnNlLmNvbnRlbnQsIHJlc3BvbnNlLmNvbnRlbnRUeXBlKTtcclxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XHJcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wZGZWaWV3ZXJPbkRlbWFuZC5wZGZTcmMgPSB0aGlzLmJsb2JVcmw7IC8vIHBkZlNyYyBjYW4gYmUgQmxvYiBvciBVaW50OEFycmF5XHJcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlVXJsID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLmJsb2JVcmwpO1xyXG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfdXBsb2FkVG9TZXJ2ZXIoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGZhbHNlKTtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxyXG4gICAgICAgICAgICAnQ29tbW9uLkZpbGUuSXNBZ2VudEFjdGl2ZScsXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyLkluaXQuYmluZChCYXJzYUFwaS5Db21tb24uQWdlbnRIZWxwZXIpXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJc0FjdGl2ZSA9IHJlc3VsdCA9PT0gJ09LJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGFnZW50SXNBY3RpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU9yUmVhZG9ubHkkLnN1YnNjcmliZSgoZGlzYWJsZU9yUmVhZG9ubHkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FuU2F2ZSA9IHRoaXMuY2FuU2F2ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gIUJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0MCA9IGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRG93bmxvYWQgPSAhdGhpcy5TZXR0aW5nLklzV29yZFZpZXdlciB8fCAoIWlzQWdlbnRBY3RpdmUgJiYgZWRpdDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhblVwbG9hZCA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuUmVtb3ZlID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XHJcbiAgICAgICAgICAgIHRoaXMudXNlV29yZEVkaXRvciA9IGhhc1ZhbHVlICYmIGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbW1hbmRDbGlja0hhbmRsZXIoaXRlbUlkLCBrZXlib2FyZEV2ZW50Pyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGl0ZW1JZDtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnQ29tbWFuZFJlcXVlc3QnLCB0aGlzLCBjb21tYW5kSWQsIGZpbGVJZCwga2V5Ym9hcmRFdmVudCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZpY2VPbmxpbmUgPSBmcm9tU2VydmVyID09PSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcclxuICAgICAgICBpZiAoIWZpbGVJZCB8fCBmaWxlcy5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVzLklzRGVsZXRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmFsbGJhY2tMaW5rID0gYNin2YXaqdin2YYg2YbZhdin24zYtCDZgdin24zZhCDYr9ixINin24zZhiDZhdix2YjYsdqv2LEg2YjYrNmI2K8g2YbYr9in2LHYry5cclxuICAgICAgICAg2KjYsdin24wg2KjYp9iyINqp2LHYr9mGINmB2KfbjNmEINin2LIg2YTbjNmG2qkg2LLbjNixINin2LPYqtmB2KfYr9mHINqp2YbbjNivOiAgPC9icj4gPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICAgZmlsZUlkLFxyXG4gICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiDYqNi12YjYsdiqINin2LXZhNuMPC9hPmA7XHJcblxyXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcclxuICAgICAgICAgICAgLy8gY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLy8gICAgIGZhbGxiYWNrTGluazogdGhpcy5mYWxsYmFja0xpbmssXHJcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdmlldzogJ0ZpdEgnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHNjcm9sbGJhcjogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBzdGF0dXNiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBtZXNzYWdlczogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XHJcbiAgICAgICAgICAgIGNvbnZlcnRUbyA9ICdwZGYsZG9jLGRvY3gsd29yZCcuaW5kZXhPZihmaWxlcy5UeXBlKSA+IC0xID8gJ3BkZicgOiBjb252ZXJ0VG87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkRvd25sb2FkRmlsZUlkKGZpbGVJZCwgdHJ1ZSwgY29udmVydFRvLCBudWxsLCBvZmZpY2VPbmxpbmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuTm90UmVuZGVyUGRmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaWNGaWxlTmFtZScsICd4JyArIEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldE5ld01ldGFHdWlkKCkgKyAnOzs7JyArIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuU2V0dGluZy5WaWV3VHlwZSAhPT0gJ0xpbmVhckxpc3RCb3gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChyZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpcmVDb250ZXh0RXZlbnQoJ0NoYW5nZScsIHRoaXMuY29udGV4dCwgcmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVNpbmdsZUNvbnRyb2wodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNJbWFnZSh2YWwuVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRmlsZVRodW1ibmFpbFVybCA9IGdldEljb24odmFsLlR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2hpZGVNYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBCYXJzYUFwaS5VbC5Mb2FkaW5nTWFzay5Vbm1hc2sodGhpcy5fZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBVaVBkZlZpZXdlclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIFNob3dNb2RlOiBzdHJpbmc7IC8vIDI9IGJ1dHRvbm1vZGUgMT1kZWZhdWx0XHJcbiAgICBIaWRlRGVsZXRlOiBib29sZWFuO1xyXG4gICAgSGlkZUF0dGFjaDogYm9vbGVhbjtcclxuICAgIEhpZGVSZWZyZXNoOiBib29sZWFuO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKnVudGlsSW5WaWV3PVwiZWxcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInBhcmFtZXRlcnM/LlNob3dNb2RlXCI+XHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJzInXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyOyBjb250ZXh0OiB7IGRpYWxvZ01vZGU6IHRydWUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9vbGJhciBsZXQtZGlhbG9nTW9kZT1cImRpYWxvZ01vZGVcIj5cclxuICAgIDxmZC10b29sYmFyXHJcbiAgICAgICAgW2NsYXNzLmRpYWxvZ01vZGVdPVwiZGlhbG9nTW9kZVwiXHJcbiAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxyXG4gICAgICAgIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCJcclxuICAgICAgICAqbmdJZj1cIihkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYykgIT09IHRydWVcIlxyXG4gICAgPlxyXG4gICAgICAgIDxmZC1maWxlLXVwbG9hZGVyXHJcbiAgICAgICAgICAgICN1cGxvYWRlclxyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbkxhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJ2YWxpZEV4dGVuc2lvblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiKGNvbnRlbnREZW5zaXR5JCB8IGFzeW5jKSEhXCJcclxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhcGFyYW1ldGVycz8uSGlkZURlbGV0ZVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkRlbGV0ZSAmJiB2YWx1ZSlcIlxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXBhcmFtZXRlcnM/LkhpZGVBdHRhY2hcIlxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGdseXBoPVwiYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXBsb2FkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZGVyLm9wZW4oKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2FuRWRpdFwiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJlZGl0XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdCgpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJ1c2VXb3JkRWRpdG9yXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBnbHlwaD1cImRvYy1hdHRhY2htZW50XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbldvcmQoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJvZmZpY2VPbmxpbmVcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwiZG9jLWF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ09mZmljZU9ubGluZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25PZmZpY2VPbmxpbmUoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJkaWFsb2dNb2RlXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ3Nob3cnXCJcclxuICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidsb3cnXCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ1ZpZXcnIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5QcmV2aWV3SW5EaWFsb2coKVwiXHJcbiAgICAgICAgICAgIGJvZHlDbGlja1xyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY2FuRG93bmxvYWRcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCInZG93bmxvYWQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ0Rvd25sb2FkJyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZCgpXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXBhcmFtZXRlcnM/LkhpZGVSZWZyZXNoXCJcclxuICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidsb3cnXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiZGlhbG9nTW9kZSA/IG51bGwgOiAncmVmcmVzaCdcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiIWRpYWxvZ01vZGUgPyAnJyA6ICgnUmVmcmVzaCcgfCBiYmJUcmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIih1cGxvYWRpbmdTdGF0ZSQgfCBhc3luYyk/LnVwbG9hZGluZyA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XHJcbiAgICA8L2ZkLXRvb2xiYXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcHJldmlldz5cclxuICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImlzTW9iaWxlOyBlbHNlIGJyb3dzZXJQZGZcIlxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiIWJsb2JVcmwgPyAnLjA2MjVyZW0gc29saWQgdmFyKC0tc2FwR3JvdXBfVGl0bGVCb3JkZXJDb2xvciknIDogbnVsbFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoNzB2aCAtIDQwcHgpOyBwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZzItcGRmanMtdmlld2VyXHJcbiAgICAgICAgICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICAgICAgICAgIFtjb250YWluZXJEb21dPVwiZm9ybUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICNwZGZWaWV3ZXJPbkRlbWFuZFxyXG4gICAgICAgICAgICBbZXh0ZXJuYWxXaW5kb3ddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZG93bmxvYWRGaWxlTmFtZV09XCJibG9iVXJsXCJcclxuICAgICAgICAgICAgW29wZW5GaWxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW3ZpZXdCb29rbWFya109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtzaG93U3Bpbm5lcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2Rvd25sb2FkXT1cInRydWVcIlxyXG4gICAgICAgID48L25nMi1wZGZqcy12aWV3ZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYnJvd3NlclBkZj5cclxuICAgICAgICA8b2JqZWN0XHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUGRmOyBlbHNlIEhhdGNoQmFja2dyb3VuZFwiXHJcbiAgICAgICAgICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICAgICAgICAgIFtjb250YWluZXJEb21dPVwiZm9ybUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxXCJcclxuICAgICAgICAgICAgW2F0dHIuZGF0YV09XCJ2YWx1ZVVybFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImZvcm1IZWlnaHQgLSAzMCA+IDAgPyBmb3JtSGVpZ2h0IC0gMzAgKyAncHgnIDogJzEwMHZoJ1wiXHJcbiAgICAgICAgICAgIFthdHRyLmh0bWxdPVwiZmFsbGJhY2tMaW5rXCJcclxuICAgICAgICA+PC9vYmplY3Q+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjSGF0Y2hCYWNrZ3JvdW5kPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVDb250cm9sICYmIHZhbHVlICYmICF2YWx1ZS5Jc0RlbGV0ZWQ7IGVsc2Ugbm9GaWxlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwic2luZ2xlRmlsZVRodW1ibmFpbFVybFwiIFtzcmNdPVwic2luZ2xlRmlsZVRodW1ibmFpbFVybFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZmQtb2JqZWN0LWlkZW50aWZpZXI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUuRmlsZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZmQtb2JqZWN0LWlkZW50aWZpZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GaWxlPlxyXG4gICAgICAgICAgICA8ZGl2IGZpbGxFbXB0eVNwYWNlIFtjb250YWluZXJEb21dPVwiZm9ybUNvbnRhaW5lclwiIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiIGNsYXNzPVwiaGF0Y2hCYWNrZ3JvdW5kXCI+PC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI2RpYWxvZ1RwbD5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiIGNsYXNzPVwidmVydGljYWxcIj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZkVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgZmQtdGl0bGU+ZWRpdCBpbiB3b3JkPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKClcIj48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJldmlld1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XHJcbiAgICA8L2ZkLWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -79,13 +79,13 @@ export class UiPictureFileComponent extends FieldBaseComponent {
79
79
  }
80
80
  }
81
81
  UiPictureFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPictureFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
82
- UiPictureFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPictureFileComponent, selector: "bsu-ui-picture-file", inputs: { imageUrl: "imageUrl", sizeMode: "sizeMode" }, providers: [UploadService], usesInheritance: true, ngImport: i0, template: "<div\n [style.max-height.px]=\"Setting.SizeMode === '2' ? null : layoutInfo.ControlBounds.height\"\n [class.no-inlineEdit]=\"!inlineEdit\"\n [style.min-height.px]=\"!value && !inlineEdit ? null : 140\"\n [class.inlineEdit]=\"inlineEdit\"\n>\n <div *ngIf=\"!((disableOrReadonly$ | async) === true || Setting.IsReadOnly === true)\">\n <fd-toolbar [fdType]=\"'transparent'\">\n <fd-file-uploader\n #uploader\n fd-toolbar-item\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'uploader_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n [accept]=\"validExtensions\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n <button\n fd-toolbar-item\n fd-button\n [disabled]=\"this.value && value?.IsDeleted !== true\"\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n class=\"delete\"\n fd-button\n fd-toolbar-item\n [disabled]=\"!this.value || value?.IsDeleted\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onFileDeleted(uploader)\"\n ></button>\n <ng-container\n *ngTemplateOutlet=\"\n loadingTpl;\n context: {\n uploadingState: uploadingState$ | async\n }\n \"\n >\n </ng-container>\n </fd-toolbar>\n </div>\n <div\n *ngIf=\"!inlineEdit; else avatarTemplate\"\n [style.max-height.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.height : null\"\n [style.max-width.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.width : null\"\n [class.centerImage]=\"Setting.SizeMode === '3'\"\n >\n <bsu-mask *ngIf=\"value && imageUrl\" [top]=\"'0px'\"></bsu-mask>\n <img\n *ngIf=\"(value && imageUrl) || Setting.HasDefaultPicture\"\n imgLazy\n [imgLazy]=\"imageUrl\"\n [src]=\"imageUrl\"\n [ngClass]=\"Setting.SizeMode === '1' ? 'cover' : 'contain'\"\n [style.height.px]=\"Setting.SizeMode !== '2' ? layoutInfo.ControlBounds.height : null\"\n />\n </div>\n <ng-template #avatarTemplate>\n <fd-avatar [size]=\"'m'\" [image]=\"imageUrl\"></fd-avatar>\n </ng-template>\n</div>\n<ng-template #loadingTpl let-uploadingState=\"uploadingState\">\n <ng-container *ngIf=\"uploadingState && uploadingState.state !== 'Complete' && uploadingState.uploading\">\n <fd-slider\n [(ngModel)]=\"uploadingState.progress\"\n [name]=\"'slider_' + id\"\n fd-toolbar-item\n [id]=\"id + '1'\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n >\n </fd-slider>\n <button\n *ngIf=\"uploadingState.state === 'Uploading'\"\n fd-toolbar-item\n fd-button\n glyph=\"stop\"\n fdType=\"transparent\"\n (click)=\"onTerminate()\"\n ></button>\n <button\n *ngIf=\"uploadingState.state === 'Error'\"\n fd-toolbar-item\n fd-button\n glyph=\"refresh\"\n [fdType]=\"'transparent'\"\n (click)=\"onRetry()\"\n ></button>\n </ng-container>\n</ng-template>\n", styles: [":host{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;overflow:hidden;margin-bottom:.25rem;margin-top:.1875rem}:host ::ng-deep .fd-slider__handle{display:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}img{width:100%}.pic-wrapper{background-repeat:no-repeat;background-position:center}.cover{max-width:100%;max-height:100%;min-height:100%;width:100%;height:100%;background-size:cover}.contain{max-width:100%;max-height:100%;min-height:100%;width:auto;height:100%;background-size:contain}.no-inlineEdit{width:100%;position:relative;display:flex;flex-direction:column}.inlineEdit{width:100%;position:relative;display:flex;flex-direction:row-reverse;align-items:flex-end;justify-content:flex-start}.centerImage{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i4.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i8.SliderComponent, selector: "fd-slider", inputs: ["id", "class", "ariaLabelledBy", "ariaLabel", "min", "max", "step", "jump", "tickmarksBetweenLabels", "mode", "showTicks", "showTicksLabels", "customValues", "tooltipMode", "hideProgressBar", "disabled", "singleSliderCurrentValuePrefix", "rangeSliderHandle1CurrentValuePrefix", "rangeSliderHandle2CurrentValuePrefix", "value"] }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ UiPictureFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPictureFileComponent, selector: "bsu-ui-picture-file", inputs: { imageUrl: "imageUrl", sizeMode: "sizeMode" }, providers: [UploadService], usesInheritance: true, ngImport: i0, template: "<div\r\n [style.max-height.px]=\"Setting.SizeMode === '2' ? null : layoutInfo.ControlBounds.height\"\r\n [class.no-inlineEdit]=\"!inlineEdit\"\r\n [style.min-height.px]=\"!value && !inlineEdit ? null : 140\"\r\n [class.inlineEdit]=\"inlineEdit\"\r\n>\r\n <div *ngIf=\"!((disableOrReadonly$ | async) === true || Setting.IsReadOnly === true)\">\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <fd-file-uploader\r\n #uploader\r\n fd-toolbar-item\r\n [style.display]=\"'none'\"\r\n [id]=\"id\"\r\n [name]=\"'uploader_' + id\"\r\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [accept]=\"validExtensions\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [disabled]=\"this.value && value?.IsDeleted !== true\"\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n <button\r\n class=\"delete\"\r\n fd-button\r\n fd-toolbar-item\r\n [disabled]=\"!this.value || value?.IsDeleted\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onFileDeleted(uploader)\"\r\n ></button>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n loadingTpl;\r\n context: {\r\n uploadingState: uploadingState$ | async\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-toolbar>\r\n </div>\r\n <div\r\n *ngIf=\"!inlineEdit; else avatarTemplate\"\r\n [style.max-height.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.height : null\"\r\n [style.max-width.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.width : null\"\r\n [class.centerImage]=\"Setting.SizeMode === '3'\"\r\n >\r\n <bsu-mask *ngIf=\"value && imageUrl\" [top]=\"'0px'\"></bsu-mask>\r\n <img\r\n *ngIf=\"(value && imageUrl) || Setting.HasDefaultPicture\"\r\n imgLazy\r\n [imgLazy]=\"imageUrl\"\r\n [src]=\"imageUrl\"\r\n [ngClass]=\"Setting.SizeMode === '1' ? 'cover' : 'contain'\"\r\n [style.height.px]=\"Setting.SizeMode !== '2' ? layoutInfo.ControlBounds.height : null\"\r\n />\r\n </div>\r\n <ng-template #avatarTemplate>\r\n <fd-avatar [size]=\"'m'\" [image]=\"imageUrl\"></fd-avatar>\r\n </ng-template>\r\n</div>\r\n<ng-template #loadingTpl let-uploadingState=\"uploadingState\">\r\n <ng-container *ngIf=\"uploadingState && uploadingState.state !== 'Complete' && uploadingState.uploading\">\r\n <fd-slider\r\n [(ngModel)]=\"uploadingState.progress\"\r\n [name]=\"'slider_' + id\"\r\n fd-toolbar-item\r\n [id]=\"id + '1'\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [step]=\"1\"\r\n >\r\n </fd-slider>\r\n <button\r\n *ngIf=\"uploadingState.state === 'Uploading'\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"stop\"\r\n fdType=\"transparent\"\r\n (click)=\"onTerminate()\"\r\n ></button>\r\n <button\r\n *ngIf=\"uploadingState.state === 'Error'\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"refresh\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onRetry()\"\r\n ></button>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [":host{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;overflow:hidden;margin-bottom:.25rem;margin-top:.1875rem}:host ::ng-deep .fd-slider__handle{display:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}img{width:100%}.pic-wrapper{background-repeat:no-repeat;background-position:center}.cover{max-width:100%;max-height:100%;min-height:100%;width:100%;height:100%;background-size:cover}.contain{max-width:100%;max-height:100%;min-height:100%;width:auto;height:100%;background-size:contain}.no-inlineEdit{width:100%;position:relative;display:flex;flex-direction:column}.inlineEdit{width:100%;position:relative;display:flex;flex-direction:row-reverse;align-items:flex-end;justify-content:flex-start}.centerImage{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "component", type: i4.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i8.SliderComponent, selector: "fd-slider", inputs: ["id", "class", "ariaLabelledBy", "ariaLabel", "min", "max", "step", "jump", "tickmarksBetweenLabels", "mode", "showTicks", "showTicksLabels", "customValues", "tooltipMode", "hideProgressBar", "disabled", "singleSliderCurrentValuePrefix", "rangeSliderHandle1CurrentValuePrefix", "rangeSliderHandle2CurrentValuePrefix", "value"] }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPictureFileComponent, decorators: [{
84
84
  type: Component,
85
- args: [{ selector: 'bsu-ui-picture-file', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<div\n [style.max-height.px]=\"Setting.SizeMode === '2' ? null : layoutInfo.ControlBounds.height\"\n [class.no-inlineEdit]=\"!inlineEdit\"\n [style.min-height.px]=\"!value && !inlineEdit ? null : 140\"\n [class.inlineEdit]=\"inlineEdit\"\n>\n <div *ngIf=\"!((disableOrReadonly$ | async) === true || Setting.IsReadOnly === true)\">\n <fd-toolbar [fdType]=\"'transparent'\">\n <fd-file-uploader\n #uploader\n fd-toolbar-item\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'uploader_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n [accept]=\"validExtensions\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n <button\n fd-toolbar-item\n fd-button\n [disabled]=\"this.value && value?.IsDeleted !== true\"\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n class=\"delete\"\n fd-button\n fd-toolbar-item\n [disabled]=\"!this.value || value?.IsDeleted\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onFileDeleted(uploader)\"\n ></button>\n <ng-container\n *ngTemplateOutlet=\"\n loadingTpl;\n context: {\n uploadingState: uploadingState$ | async\n }\n \"\n >\n </ng-container>\n </fd-toolbar>\n </div>\n <div\n *ngIf=\"!inlineEdit; else avatarTemplate\"\n [style.max-height.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.height : null\"\n [style.max-width.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.width : null\"\n [class.centerImage]=\"Setting.SizeMode === '3'\"\n >\n <bsu-mask *ngIf=\"value && imageUrl\" [top]=\"'0px'\"></bsu-mask>\n <img\n *ngIf=\"(value && imageUrl) || Setting.HasDefaultPicture\"\n imgLazy\n [imgLazy]=\"imageUrl\"\n [src]=\"imageUrl\"\n [ngClass]=\"Setting.SizeMode === '1' ? 'cover' : 'contain'\"\n [style.height.px]=\"Setting.SizeMode !== '2' ? layoutInfo.ControlBounds.height : null\"\n />\n </div>\n <ng-template #avatarTemplate>\n <fd-avatar [size]=\"'m'\" [image]=\"imageUrl\"></fd-avatar>\n </ng-template>\n</div>\n<ng-template #loadingTpl let-uploadingState=\"uploadingState\">\n <ng-container *ngIf=\"uploadingState && uploadingState.state !== 'Complete' && uploadingState.uploading\">\n <fd-slider\n [(ngModel)]=\"uploadingState.progress\"\n [name]=\"'slider_' + id\"\n fd-toolbar-item\n [id]=\"id + '1'\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n >\n </fd-slider>\n <button\n *ngIf=\"uploadingState.state === 'Uploading'\"\n fd-toolbar-item\n fd-button\n glyph=\"stop\"\n fdType=\"transparent\"\n (click)=\"onTerminate()\"\n ></button>\n <button\n *ngIf=\"uploadingState.state === 'Error'\"\n fd-toolbar-item\n fd-button\n glyph=\"refresh\"\n [fdType]=\"'transparent'\"\n (click)=\"onRetry()\"\n ></button>\n </ng-container>\n</ng-template>\n", styles: [":host{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;overflow:hidden;margin-bottom:.25rem;margin-top:.1875rem}:host ::ng-deep .fd-slider__handle{display:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}img{width:100%}.pic-wrapper{background-repeat:no-repeat;background-position:center}.cover{max-width:100%;max-height:100%;min-height:100%;width:100%;height:100%;background-size:cover}.contain{max-width:100%;max-height:100%;min-height:100%;width:auto;height:100%;background-size:contain}.no-inlineEdit{width:100%;position:relative;display:flex;flex-direction:column}.inlineEdit{width:100%;position:relative;display:flex;flex-direction:row-reverse;align-items:flex-end;justify-content:flex-start}.centerImage{display:flex;justify-content:center}\n"] }]
85
+ args: [{ selector: 'bsu-ui-picture-file', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<div\r\n [style.max-height.px]=\"Setting.SizeMode === '2' ? null : layoutInfo.ControlBounds.height\"\r\n [class.no-inlineEdit]=\"!inlineEdit\"\r\n [style.min-height.px]=\"!value && !inlineEdit ? null : 140\"\r\n [class.inlineEdit]=\"inlineEdit\"\r\n>\r\n <div *ngIf=\"!((disableOrReadonly$ | async) === true || Setting.IsReadOnly === true)\">\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <fd-file-uploader\r\n #uploader\r\n fd-toolbar-item\r\n [style.display]=\"'none'\"\r\n [id]=\"id\"\r\n [name]=\"'uploader_' + id\"\r\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [accept]=\"validExtensions\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [disabled]=\"this.value && value?.IsDeleted !== true\"\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n <button\r\n class=\"delete\"\r\n fd-button\r\n fd-toolbar-item\r\n [disabled]=\"!this.value || value?.IsDeleted\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onFileDeleted(uploader)\"\r\n ></button>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n loadingTpl;\r\n context: {\r\n uploadingState: uploadingState$ | async\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-toolbar>\r\n </div>\r\n <div\r\n *ngIf=\"!inlineEdit; else avatarTemplate\"\r\n [style.max-height.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.height : null\"\r\n [style.max-width.px]=\"Setting.SizeMode === '0' ? layoutInfo.ControlBounds.width : null\"\r\n [class.centerImage]=\"Setting.SizeMode === '3'\"\r\n >\r\n <bsu-mask *ngIf=\"value && imageUrl\" [top]=\"'0px'\"></bsu-mask>\r\n <img\r\n *ngIf=\"(value && imageUrl) || Setting.HasDefaultPicture\"\r\n imgLazy\r\n [imgLazy]=\"imageUrl\"\r\n [src]=\"imageUrl\"\r\n [ngClass]=\"Setting.SizeMode === '1' ? 'cover' : 'contain'\"\r\n [style.height.px]=\"Setting.SizeMode !== '2' ? layoutInfo.ControlBounds.height : null\"\r\n />\r\n </div>\r\n <ng-template #avatarTemplate>\r\n <fd-avatar [size]=\"'m'\" [image]=\"imageUrl\"></fd-avatar>\r\n </ng-template>\r\n</div>\r\n<ng-template #loadingTpl let-uploadingState=\"uploadingState\">\r\n <ng-container *ngIf=\"uploadingState && uploadingState.state !== 'Complete' && uploadingState.uploading\">\r\n <fd-slider\r\n [(ngModel)]=\"uploadingState.progress\"\r\n [name]=\"'slider_' + id\"\r\n fd-toolbar-item\r\n [id]=\"id + '1'\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [step]=\"1\"\r\n >\r\n </fd-slider>\r\n <button\r\n *ngIf=\"uploadingState.state === 'Uploading'\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"stop\"\r\n fdType=\"transparent\"\r\n (click)=\"onTerminate()\"\r\n ></button>\r\n <button\r\n *ngIf=\"uploadingState.state === 'Error'\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"refresh\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onRetry()\"\r\n ></button>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [":host{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;overflow:hidden;margin-bottom:.25rem;margin-top:.1875rem}:host ::ng-deep .fd-slider__handle{display:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}img{width:100%}.pic-wrapper{background-repeat:no-repeat;background-position:center}.cover{max-width:100%;max-height:100%;min-height:100%;width:100%;height:100%;background-size:cover}.contain{max-width:100%;max-height:100%;min-height:100%;width:auto;height:100%;background-size:contain}.no-inlineEdit{width:100%;position:relative;display:flex;flex-direction:column}.inlineEdit{width:100%;position:relative;display:flex;flex-direction:row-reverse;align-items:flex-end;justify-content:flex-start}.centerImage{display:flex;justify-content:center}\n"] }]
86
86
  }], propDecorators: { imageUrl: [{
87
87
  type: Input
88
88
  }], sizeMode: [{
89
89
  type: Input
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGljdHVyZS1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLXBpY3R1cmUtZmlsZS91aS1waWN0dXJlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGljdHVyZS1maWxlL3VpLXBpY3R1cmUtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0YsT0FBTyxFQUNILGtCQUFrQixFQUNsQixRQUFRLEVBQ1IsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsYUFBYSxFQUVoQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVN2RSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBUDlEOztRQVVJLFVBQUssR0FBVyxFQUFFLENBQUM7S0FrRnRCO0lBOUVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFD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LENBQUM7Z0JBQ3ZCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDeEMsT0FBTztpQkFDVjtnQkFDRCxNQUFNLEtBQUssR0FBRztvQkFDVixHQUFHLE9BQU87b0JBQ1YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN6QixDQUFDO2dCQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN4RDtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs7bUhBcEZRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHNHQUZwQixDQUFDLGFBQWEsQ0FBQyxpRENyQjlCLHl6SEFvR0E7MkZEN0VhLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGFBQWEsQ0FBQzs4QkFHakIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgZ2V0VmFsaWRFeHRlbnNpb24sXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBJbWFnZU1pbWVUeXBlLFxyXG4gICAgSVVwbG9hZGluZ1N0YXRlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBleGhhdXN0TWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGljdHVyZS1maWxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1waWN0dXJlLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktcGljdHVyZS1maWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVBpY3R1cmVGaWxlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgaW1hZ2VVcmw6IGFueTtcclxuICAgIEBJbnB1dCgpIHNpemVNb2RlOiBhbnk7XHJcbiAgICBmaWxlczogRmlsZVtdID0gW107XHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8SVVwbG9hZGluZ1N0YXRlPjtcclxuICAgIHZhbGlkRXh0ZW5zaW9uczogYW55O1xyXG4gICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXI7XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3RhdGUkID0gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWRpbmdTdGF0ZSQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0Lm9uKHtcclxuICAgICAgICAgICAgRGlzcGFseUltYWdlOiB0aGlzLl9kaXNwbGF5SW1hZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VVcmwgPSB0aGlzLmNvbnRleHQuaW1hZ2VVcmw7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udGV4dC5fdmFsdWU7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbnMgPSBnZXRWYWxpZEV4dGVuc2lvbih0aGlzLlNldHRpbmcuVmFsaWRFeHRlbnNpb25zKSB8fCBJbWFnZU1pbWVUeXBlO1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gbmV3IEZpbGVzVmFsaWRhdGlvbkhlbHBlcihcclxuICAgICAgICAgICAgMSxcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heEZpbGVTaXplS2IsXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlU2l6ZUtiXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdEaXNwbGF5SW1hZ2UnLCB0aGlzLl9kaXNwbGF5SW1hZ2UpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIG9uRmlsZURlbGV0ZWQodXBsb2FkZXJDb21wb25lbnQ6IEZpbGVVcGxvYWRlckNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHVwbG9hZGVyQ29tcG9uZW50LmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnQ2hhbmdlJywgdGhpcy5jb250ZXh0LCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRvd25sb2FkRmlsZSgpOiB2b2lkIHtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uRmlsZS5PcGVuRmlsZSh0aGlzLnZhbHVlLkZpbGVJZCwgZmFsc2UsIHRoaXMsIHRydWUsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJldHJ5KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZCh0aGlzLmZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRlcm1pbmF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRTZXJ2aWNlLmNhbmNlbGF0aW9uJC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2Rpc3BsYXlJbWFnZShpbWFnZVVybCwgc2l6ZU1vZGUsIHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9IGltYWdlVXJsO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNpemVNb2RlID0gc2l6ZU1vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBsb2FkKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICBvZih0cnVlKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51cGxvYWRGaWxlKGZpbGVzKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cGxvYWRTZXJ2aWNlLmNvbXByZXNzRmlsZXMkKGZpbGVzKS5waXBlKFxyXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhOiBGb3JtRGF0YSkgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLlNldHRpbmcuQ29udHJvbEZpZWxkRGVmSWQpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljdHVyZSA9IHJlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaWN0dXJlLkVycm9yTXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuTXNnLkVycm9yKHBpY3R1cmUuRXJyb3JNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBpY3R1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlkOiBwaWN0dXJlLkZpbGVJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnQ2hhbmdlJywgdGhpcy5jb250ZXh0LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiU2V0dGluZy5TaXplTW9kZSA9PT0gJzInID8gbnVsbCA6IGxheW91dEluZm8uQ29udHJvbEJvdW5kcy5oZWlnaHRcIlxuICAgIFtjbGFzcy5uby1pbmxpbmVFZGl0XT1cIiFpbmxpbmVFZGl0XCJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCIhdmFsdWUgJiYgIWlubGluZUVkaXQgPyBudWxsIDogMTQwXCJcbiAgICBbY2xhc3MuaW5saW5lRWRpdF09XCJpbmxpbmVFZGl0XCJcbj5cbiAgICA8ZGl2ICpuZ0lmPVwiISgoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlIHx8IFNldHRpbmcuSXNSZWFkT25seSA9PT0gdHJ1ZSlcIj5cbiAgICAgICAgPGZkLXRvb2xiYXIgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCI+XG4gICAgICAgICAgICA8ZmQtZmlsZS11cGxvYWRlclxuICAgICAgICAgICAgICAgICN1cGxvYWRlclxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCIndXBsb2FkZXJfJyArIGlkXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uQXJpYUxhYmVsXT1cIidBdHRhY2hQaWN0dXJlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2FjY2VwdF09XCJ2YWxpZEV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2VkKT1cIm9uRmlsZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZkLWZpbGUtdXBsb2FkZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRoaXMudmFsdWUgJiYgdmFsdWU/LklzRGVsZXRlZCAhPT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJhdHRhY2htZW50XCJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRoaXMudmFsdWUgfHwgdmFsdWU/LklzRGVsZXRlZFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsZURlbGV0ZWQodXBsb2FkZXIpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nVHBsO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmdTdGF0ZTogdXBsb2FkaW5nU3RhdGUkIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC10b29sYmFyPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaW5saW5lRWRpdDsgZWxzZSBhdmF0YXJUZW1wbGF0ZVwiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIlNldHRpbmcuU2l6ZU1vZGUgPT09ICcwJyA/IGxheW91dEluZm8uQ29udHJvbEJvdW5kcy5oZWlnaHQgOiBudWxsXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJTZXR0aW5nLlNpemVNb2RlID09PSAnMCcgPyBsYXlvdXRJbmZvLkNvbnRyb2xCb3VuZHMud2lkdGggOiBudWxsXCJcbiAgICAgICAgW2NsYXNzLmNlbnRlckltYWdlXT1cIlNldHRpbmcuU2l6ZU1vZGUgPT09ICczJ1wiXG4gICAgPlxuICAgICAgICA8YnN1LW1hc2sgKm5nSWY9XCJ2YWx1ZSAmJiBpbWFnZVVybFwiIFt0b3BdPVwiJzBweCdcIj48L2JzdS1tYXNrPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cIih2YWx1ZSAmJiBpbWFnZVVybCkgfHwgU2V0dGluZy5IYXNEZWZhdWx0UGljdHVyZVwiXG4gICAgICAgICAgICBpbWdMYXp5XG4gICAgICAgICAgICBbaW1nTGF6eV09XCJpbWFnZVVybFwiXG4gICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlNldHRpbmcuU2l6ZU1vZGUgPT09ICcxJyA/ICdjb3ZlcicgOiAnY29udGFpbidcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJTZXR0aW5nLlNpemVNb2RlICE9PSAnMicgPyBsYXlvdXRJbmZvLkNvbnRyb2xCb3VuZHMuaGVpZ2h0IDogbnVsbFwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNhdmF0YXJUZW1wbGF0ZT5cbiAgICAgICAgPGZkLWF2YXRhciBbc2l6ZV09XCInbSdcIiBbaW1hZ2VdPVwiaW1hZ2VVcmxcIj48L2ZkLWF2YXRhcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGwgbGV0LXVwbG9hZGluZ1N0YXRlPVwidXBsb2FkaW5nU3RhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkaW5nU3RhdGUgJiYgdXBsb2FkaW5nU3RhdGUuc3RhdGUgIT09ICdDb21wbGV0ZScgJiYgdXBsb2FkaW5nU3RhdGUudXBsb2FkaW5nXCI+XG4gICAgICAgIDxmZC1zbGlkZXJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidXBsb2FkaW5nU3RhdGUucHJvZ3Jlc3NcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ3NsaWRlcl8nICsgaWRcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbaWRdPVwiaWQgKyAnMSdcIlxuICAgICAgICAgICAgW21pbl09XCIwXCJcbiAgICAgICAgICAgIFttYXhdPVwiMTAwXCJcbiAgICAgICAgICAgIFtzdGVwXT1cIjFcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2xpZGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInVwbG9hZGluZ1N0YXRlLnN0YXRlID09PSAnVXBsb2FkaW5nJ1wiXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZ2x5cGg9XCJzdG9wXCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblRlcm1pbmF0ZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInVwbG9hZGluZ1N0YXRlLnN0YXRlID09PSAnRXJyb3InXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cInJlZnJlc2hcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJldHJ5KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGljdHVyZS1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLXBpY3R1cmUtZmlsZS91aS1waWN0dXJlLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGljdHVyZS1maWxlL3VpLXBpY3R1cmUtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0YsT0FBTyxFQUNILGtCQUFrQixFQUNsQixRQUFRLEVBQ1IsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsYUFBYSxFQUVoQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVN2RSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBUDlEOztRQVVJLFVBQUssR0FBVyxFQUFFLENBQUM7S0FrRnRCO0lBOUVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFD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LENBQUM7Z0JBQ3ZCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDeEMsT0FBTztpQkFDVjtnQkFDRCxNQUFNLEtBQUssR0FBRztvQkFDVixHQUFHLE9BQU87b0JBQ1YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN6QixDQUFDO2dCQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN4RDtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs7bUhBcEZRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHNHQUZwQixDQUFDLGFBQWEsQ0FBQyxpRENyQjlCLGlnSUFvR0E7MkZEN0VhLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGFBQWEsQ0FBQzs4QkFHakIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgZ2V0VmFsaWRFeHRlbnNpb24sXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBJbWFnZU1pbWVUeXBlLFxyXG4gICAgSVVwbG9hZGluZ1N0YXRlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBleGhhdXN0TWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGljdHVyZS1maWxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1waWN0dXJlLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktcGljdHVyZS1maWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVBpY3R1cmVGaWxlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgaW1hZ2VVcmw6IGFueTtcclxuICAgIEBJbnB1dCgpIHNpemVNb2RlOiBhbnk7XHJcbiAgICBmaWxlczogRmlsZVtdID0gW107XHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8SVVwbG9hZGluZ1N0YXRlPjtcclxuICAgIHZhbGlkRXh0ZW5zaW9uczogYW55O1xyXG4gICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXI7XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3RhdGUkID0gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWRpbmdTdGF0ZSQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0Lm9uKHtcclxuICAgICAgICAgICAgRGlzcGFseUltYWdlOiB0aGlzLl9kaXNwbGF5SW1hZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VVcmwgPSB0aGlzLmNvbnRleHQuaW1hZ2VVcmw7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udGV4dC5fdmFsdWU7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbnMgPSBnZXRWYWxpZEV4dGVuc2lvbih0aGlzLlNldHRpbmcuVmFsaWRFeHRlbnNpb25zKSB8fCBJbWFnZU1pbWVUeXBlO1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gbmV3IEZpbGVzVmFsaWRhdGlvbkhlbHBlcihcclxuICAgICAgICAgICAgMSxcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heEZpbGVTaXplS2IsXHJcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlU2l6ZUtiXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdEaXNwbGF5SW1hZ2UnLCB0aGlzLl9kaXNwbGF5SW1hZ2UpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIG9uRmlsZURlbGV0ZWQodXBsb2FkZXJDb21wb25lbnQ6IEZpbGVVcGxvYWRlckNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHVwbG9hZGVyQ29tcG9uZW50LmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnQ2hhbmdlJywgdGhpcy5jb250ZXh0LCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRvd25sb2FkRmlsZSgpOiB2b2lkIHtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uRmlsZS5PcGVuRmlsZSh0aGlzLnZhbHVlLkZpbGVJZCwgZmFsc2UsIHRoaXMsIHRydWUsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJldHJ5KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZCh0aGlzLmZpbGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRlcm1pbmF0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRTZXJ2aWNlLmNhbmNlbGF0aW9uJC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2Rpc3BsYXlJbWFnZShpbWFnZVVybCwgc2l6ZU1vZGUsIHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9IGltYWdlVXJsO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNpemVNb2RlID0gc2l6ZU1vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBsb2FkKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICBvZih0cnVlKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51cGxvYWRGaWxlKGZpbGVzKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cGxvYWRTZXJ2aWNlLmNvbXByZXNzRmlsZXMkKGZpbGVzKS5waXBlKFxyXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhOiBGb3JtRGF0YSkgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLlNldHRpbmcuQ29udHJvbEZpZWxkRGVmSWQpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljdHVyZSA9IHJlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaWN0dXJlLkVycm9yTXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuTXNnLkVycm9yKHBpY3R1cmUuRXJyb3JNc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBpY3R1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlkOiBwaWN0dXJlLkZpbGVJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnQ2hhbmdlJywgdGhpcy5jb250ZXh0LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJTZXR0aW5nLlNpemVNb2RlID09PSAnMicgPyBudWxsIDogbGF5b3V0SW5mby5Db250cm9sQm91bmRzLmhlaWdodFwiXHJcbiAgICBbY2xhc3Mubm8taW5saW5lRWRpdF09XCIhaW5saW5lRWRpdFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCIhdmFsdWUgJiYgIWlubGluZUVkaXQgPyBudWxsIDogMTQwXCJcclxuICAgIFtjbGFzcy5pbmxpbmVFZGl0XT1cImlubGluZUVkaXRcIlxyXG4+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiISgoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlIHx8IFNldHRpbmcuSXNSZWFkT25seSA9PT0gdHJ1ZSlcIj5cclxuICAgICAgICA8ZmQtdG9vbGJhciBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIj5cclxuICAgICAgICAgICAgPGZkLWZpbGUtdXBsb2FkZXJcclxuICAgICAgICAgICAgICAgICN1cGxvYWRlclxyXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIid1cGxvYWRlcl8nICsgaWRcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBdHRhY2hQaWN0dXJlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFthY2NlcHRdPVwidmFsaWRFeHRlbnNpb25zXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2ZkLWZpbGUtdXBsb2FkZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy52YWx1ZSAmJiB2YWx1ZT8uSXNEZWxldGVkICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgIGdseXBoPVwiYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZGVyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdGhpcy52YWx1ZSB8fCB2YWx1ZT8uSXNEZWxldGVkXCJcclxuICAgICAgICAgICAgICAgIGdseXBoPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWxlRGVsZXRlZCh1cGxvYWRlcilcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1RwbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGluZ1N0YXRlOiB1cGxvYWRpbmdTdGF0ZSQgfCBhc3luY1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhaW5saW5lRWRpdDsgZWxzZSBhdmF0YXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiU2V0dGluZy5TaXplTW9kZSA9PT0gJzAnID8gbGF5b3V0SW5mby5Db250cm9sQm91bmRzLmhlaWdodCA6IG51bGxcIlxyXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiU2V0dGluZy5TaXplTW9kZSA9PT0gJzAnID8gbGF5b3V0SW5mby5Db250cm9sQm91bmRzLndpZHRoIDogbnVsbFwiXHJcbiAgICAgICAgW2NsYXNzLmNlbnRlckltYWdlXT1cIlNldHRpbmcuU2l6ZU1vZGUgPT09ICczJ1wiXHJcbiAgICA+XHJcbiAgICAgICAgPGJzdS1tYXNrICpuZ0lmPVwidmFsdWUgJiYgaW1hZ2VVcmxcIiBbdG9wXT1cIicwcHgnXCI+PC9ic3UtbWFzaz5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKHZhbHVlICYmIGltYWdlVXJsKSB8fCBTZXR0aW5nLkhhc0RlZmF1bHRQaWN0dXJlXCJcclxuICAgICAgICAgICAgaW1nTGF6eVxyXG4gICAgICAgICAgICBbaW1nTGF6eV09XCJpbWFnZVVybFwiXHJcbiAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJTZXR0aW5nLlNpemVNb2RlID09PSAnMScgPyAnY292ZXInIDogJ2NvbnRhaW4nXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJTZXR0aW5nLlNpemVNb2RlICE9PSAnMicgPyBsYXlvdXRJbmZvLkNvbnRyb2xCb3VuZHMuaGVpZ2h0IDogbnVsbFwiXHJcbiAgICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNhdmF0YXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZmQtYXZhdGFyIFtzaXplXT1cIidtJ1wiIFtpbWFnZV09XCJpbWFnZVVybFwiPjwvZmQtYXZhdGFyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbCBsZXQtdXBsb2FkaW5nU3RhdGU9XCJ1cGxvYWRpbmdTdGF0ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGluZ1N0YXRlICYmIHVwbG9hZGluZ1N0YXRlLnN0YXRlICE9PSAnQ29tcGxldGUnICYmIHVwbG9hZGluZ1N0YXRlLnVwbG9hZGluZ1wiPlxyXG4gICAgICAgIDxmZC1zbGlkZXJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1cGxvYWRpbmdTdGF0ZS5wcm9ncmVzc1wiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIidzbGlkZXJfJyArIGlkXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIFtpZF09XCJpZCArICcxJ1wiXHJcbiAgICAgICAgICAgIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgIFttYXhdPVwiMTAwXCJcclxuICAgICAgICAgICAgW3N0ZXBdPVwiMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvZmQtc2xpZGVyPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRpbmdTdGF0ZS5zdGF0ZSA9PT0gJ1VwbG9hZGluZydcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwic3RvcFwiXHJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGVybWluYXRlKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwidXBsb2FkaW5nU3RhdGUuc3RhdGUgPT09ICdFcnJvcidcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwicmVmcmVzaFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJldHJ5KClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=