UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

44 lines 16.9 kB
import { Component, Inject, Optional, } from '@angular/core'; import { NAE_TAB_DATA, NetgrifPaginatorIntl, AbstractTaskListPaginationComponent, NAE_TASK_CONTENT_SERVICE_TYPE, TaskContentServiceType } from '@netgrif/components-core'; import { MatPaginatorIntl } from '@angular/material/paginator'; import * as i0 from "@angular/core"; import * as i1 from "@netgrif/components-core"; import * as i2 from "@angular/router"; import * as i3 from "@angular/common"; import * as i4 from "@ngbracket/ngx-layout"; import * as i5 from "@ngbracket/ngx-layout/extended"; import * as i6 from "@angular/material/expansion"; import * as i7 from "@angular/material/icon"; import * as i8 from "@angular/material/paginator"; import * as i9 from "@angular/material/progress-spinner"; import * as i10 from "../../../panel/task-panel/task-panel.component"; import * as i11 from "@ngx-translate/core"; export class TaskListPaginationComponent extends AbstractTaskListPaginationComponent { _taskViewService; _log; route; constructor(_taskViewService, _log, injectedTabData, route) { super(_taskViewService, _log, injectedTabData, route); this._taskViewService = _taskViewService; this._log = _log; this.route = route; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskListPaginationComponent, deps: [{ token: i1.TaskViewService }, { token: i1.LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TaskListPaginationComponent, selector: "nc-task-list-pagination", providers: [ { provide: MatPaginatorIntl, useClass: NetgrifPaginatorIntl }, { provide: NAE_TASK_CONTENT_SERVICE_TYPE, useValue: TaskContentServiceType.SINGLE } ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex>\n <ng-container *ngIf=\"tasks$ | async as tasks\">\n\n <div *ngIf=\"(loading$ | async) === false && tasks.length === 0\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n fxFlex>\n <mat-icon color=\"accent\">check_box</mat-icon>\n <span class=\"font-size-20\">{{ 'tasks.view.noTasksSatisfyingThisFilter' | translate }}</span>\n </div>\n\n <mat-accordion [multi]=\"allowMultiOpen\" class=\"full-width\" >\n <div class=\"fix-padding\">\n <nc-task-panel #panel\n [textEllipsis]=\"textEllipsis\"\n *ngFor=\"let task of tasks;\n let first = first;\n let last = last;\n trackBy: trackBy\"\n [taskPanelData]=\"task\" [selectedHeaders$]=\"selectedHeaders$\" [first]=\"first\" [last]=\"last\"\n [forceLoadDataOnOpen]=\"forceLoadDataOnOpen\"\n [responsiveBody]=\"responsiveBody\"\n (taskEvent)=\"emitTaskEvent($event)\"\n (panelRefOutput)=\"addToPanelRefs(task, $event)\"\n [showMoreMenu]=\"showMoreMenu\"\n [preventExpand]=\"preventExpand\"\n class=\"panel-expanded-spacing\" [ngClass]=\"{'single-task-fix': tasks.length === 1 && panel.isExpanded()}\">\n </nc-task-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n </div>\n </div>\n </mat-accordion>\n <mat-paginator [length]=\"length\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" color=\"primary\" [disabled]=\"disabled\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onPageChanged($event)\" showFirstLastButtons>\n </mat-paginator>\n </ng-container>\n</div>\n", styles: [".font-size-20{font-size:20px}.full-width{width:100%}.full-height{height:100%}.fix-padding{padding:0 1px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.TaskPanelComponent, selector: "nc-task-panel" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskListPaginationComponent, decorators: [{ type: Component, args: [{ selector: 'nc-task-list-pagination', providers: [ { provide: MatPaginatorIntl, useClass: NetgrifPaginatorIntl }, { provide: NAE_TASK_CONTENT_SERVICE_TYPE, useValue: TaskContentServiceType.SINGLE } ], template: "<div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex>\n <ng-container *ngIf=\"tasks$ | async as tasks\">\n\n <div *ngIf=\"(loading$ | async) === false && tasks.length === 0\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n fxFlex>\n <mat-icon color=\"accent\">check_box</mat-icon>\n <span class=\"font-size-20\">{{ 'tasks.view.noTasksSatisfyingThisFilter' | translate }}</span>\n </div>\n\n <mat-accordion [multi]=\"allowMultiOpen\" class=\"full-width\" >\n <div class=\"fix-padding\">\n <nc-task-panel #panel\n [textEllipsis]=\"textEllipsis\"\n *ngFor=\"let task of tasks;\n let first = first;\n let last = last;\n trackBy: trackBy\"\n [taskPanelData]=\"task\" [selectedHeaders$]=\"selectedHeaders$\" [first]=\"first\" [last]=\"last\"\n [forceLoadDataOnOpen]=\"forceLoadDataOnOpen\"\n [responsiveBody]=\"responsiveBody\"\n (taskEvent)=\"emitTaskEvent($event)\"\n (panelRefOutput)=\"addToPanelRefs(task, $event)\"\n [showMoreMenu]=\"showMoreMenu\"\n [preventExpand]=\"preventExpand\"\n class=\"panel-expanded-spacing\" [ngClass]=\"{'single-task-fix': tasks.length === 1 && panel.isExpanded()}\">\n </nc-task-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n </div>\n </div>\n </mat-accordion>\n <mat-paginator [length]=\"length\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" color=\"primary\" [disabled]=\"disabled\"\n [pageSizeOptions]=\"pageSizeOptions\" (page)=\"onPageChanged($event)\" showFirstLastButtons>\n </mat-paginator>\n </ng-container>\n</div>\n", styles: [".font-size-20{font-size:20px}.full-width{width:100%}.full-height{height:100%}.fix-padding{padding:0 1px}\n"] }] }], ctorParameters: () => [{ type: i1.TaskViewService }, { type: i1.LoggerService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_TAB_DATA] }] }, { type: i2.ActivatedRoute }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvdmlldy90YXNrLXZpZXcvdGFzay1wYW5lbC1saXN0LXBhZ2luYXRpb24vdGFzay1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvdmlldy90YXNrLXZpZXcvdGFzay1wYW5lbC1saXN0LXBhZ2luYXRpb24vdGFzay1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxZQUFZLEVBRVosb0JBQW9CLEVBQ3BCLG1DQUFtQyxFQUFFLDZCQUE2QixFQUFFLHNCQUFzQixFQUM3RixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBVzdELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQ0FBbUM7SUFDMUQ7SUFDQTtJQUVBO0lBSHRCLFlBQXNCLGdCQUFpQyxFQUNqQyxJQUFtQixFQUNLLGVBQWdDLEVBQ3hELEtBQXNCO1FBQ3hDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSnBDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUVuQixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUU1QyxDQUFDO3dHQU5RLDJCQUEyQiw4RUFHSixZQUFZOzRGQUhuQywyQkFBMkIsa0RBTHpCO1lBQ1AsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFDO1lBQzNELEVBQUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUM7U0FDcEYsaURDdkJMLDZpRUFxQ0E7OzRGRFphLDJCQUEyQjtrQkFUdkMsU0FBUzsrQkFDSSx5QkFBeUIsYUFHeEI7d0JBQ1AsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFDO3dCQUMzRCxFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxFQUFDO3FCQUNwRjs7MEJBS1ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSW5qZWN0ZWRUYWJEYXRhLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgTkFFX1RBQl9EQVRBLFxuICAgIFRhc2tWaWV3U2VydmljZSxcbiAgICBOZXRncmlmUGFnaW5hdG9ySW50bCxcbiAgICBBYnN0cmFjdFRhc2tMaXN0UGFnaW5hdGlvbkNvbXBvbmVudCwgTkFFX1RBU0tfQ09OVEVOVF9TRVJWSUNFX1RZUEUsIFRhc2tDb250ZW50U2VydmljZVR5cGVcbn0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdFBhZ2luYXRvckludGx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtdGFzay1saXN0LXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YXNrLWxpc3QtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IE1hdFBhZ2luYXRvckludGwsIHVzZUNsYXNzOiBOZXRncmlmUGFnaW5hdG9ySW50bH0sXG4gICAgICAgIHtwcm92aWRlOiBOQUVfVEFTS19DT05URU5UX1NFUlZJQ0VfVFlQRSwgdXNlVmFsdWU6IFRhc2tDb250ZW50U2VydmljZVR5cGUuU0lOR0xFfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RUYXNrTGlzdFBhZ2luYXRpb25Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdGFza1ZpZXdTZXJ2aWNlOiBUYXNrVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfVEFCX0RBVEEpIGluamVjdGVkVGFiRGF0YTogSW5qZWN0ZWRUYWJEYXRhLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgIHN1cGVyKF90YXNrVmlld1NlcnZpY2UsIF9sb2csIGluamVjdGVkVGFiRGF0YSwgcm91dGUpO1xuICAgIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YXNrcyQgfCBhc3luYyBhcyB0YXNrc1wiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIobG9hZGluZyQgfCBhc3luYykgPT09IGZhbHNlICYmIHRhc2tzLmxlbmd0aCA9PT0gMFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxuICAgICAgICAgICAgIGZ4RmxleD5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiPmNoZWNrX2JveDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS0yMFwiPnt7ICd0YXNrcy52aWV3Lm5vVGFza3NTYXRpc2Z5aW5nVGhpc0ZpbHRlcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxtYXQtYWNjb3JkaW9uIFttdWx0aV09XCJhbGxvd011bHRpT3BlblwiIGNsYXNzPVwiZnVsbC13aWR0aFwiID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXgtcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxuYy10YXNrLXBhbmVsICNwYW5lbFxuICAgICAgICAgICAgICAgICAgICBbdGV4dEVsbGlwc2lzXT1cInRleHRFbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YXNrIG9mIHRhc2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgICAgICAgW3Rhc2tQYW5lbERhdGFdPVwidGFza1wiIFtzZWxlY3RlZEhlYWRlcnMkXT1cInNlbGVjdGVkSGVhZGVycyRcIiBbZmlyc3RdPVwiZmlyc3RcIiBbbGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlTG9hZERhdGFPbk9wZW5dPVwiZm9yY2VMb2FkRGF0YU9uT3BlblwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNwb25zaXZlQm9keV09XCJyZXNwb25zaXZlQm9keVwiXG4gICAgICAgICAgICAgICAgICAgICh0YXNrRXZlbnQpPVwiZW1pdFRhc2tFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHBhbmVsUmVmT3V0cHV0KT1cImFkZFRvUGFuZWxSZWZzKHRhc2ssICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd01vcmVNZW51XT1cInNob3dNb3JlTWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2ZW50RXhwYW5kXT1cInByZXZlbnRFeHBhbmRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhbmVsLWV4cGFuZGVkLXNwYWNpbmdcIiBbbmdDbGFzc109XCJ7J3NpbmdsZS10YXNrLWZpeCc6IHRhc2tzLmxlbmd0aCA9PT0gMSAmJiBwYW5lbC5pc0V4cGFuZGVkKCl9XCI+XG4gICAgICAgICAgICAgICAgPC9uYy10YXNrLXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmckIHwgYXN5bmNcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjUyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XG4gICAgICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwibGVuZ3RoXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIChwYWdlKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiIHNob3dGaXJzdExhc3RCdXR0b25zPlxuICAgICAgICA8L21hdC1wYWdpbmF0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==