nira-falcon 1.0.23 → 1.0.24

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.
@@ -245,7 +245,7 @@ export class CoreTableComponent {
245
245
  .toLowerCase()
246
246
  .includes(columnSchema.columnFilter.toString().toLowerCase());
247
247
  }
248
- else if (columnSchema.type === this.columnsTypes.SHAMSI_DATE) {
248
+ else if (columnSchema.type === this.columnsTypes.DATE) {
249
249
  if (columnSchema.columnFilter === '') {
250
250
  result = true;
251
251
  }
@@ -287,11 +287,11 @@ export class CoreTableComponent {
287
287
  .substring(2, 2 + length);
288
288
  }
289
289
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTableComponent, deps: [{ token: i1.NgxIndexedDBService }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
290
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreTableComponent, selector: "core-table", inputs: { key: "key", columnsSchema: "columnsSchema", columnsSchemaRightClick: "columnsSchemaRightClick", tableData: "tableData", responsive: "responsive", canSelectFirstItem: "canSelectFirstItem", loading: "loading", canFilter: "canFilter", styleFilter: "styleFilter", rowSelector: "rowSelector" }, outputs: { onItemRightClick: "onItemRightClick", onColumnClicked: "onColumnClicked", onColumnValueChanged: "onColumnValueChanged", onItemSelected: "onItemSelected" }, host: { listeners: { "document:keydown": "handleEnter($event)" } }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "userMenu", first: true, predicate: ["userMenu"], descendants: true }], ngImport: i0, template: "<div class=\"p-2 overflow-x-auto relative\">\r\n <table\r\n #table\r\n tabindex=\"0\"\r\n *ngIf=\"!isRunningOnSmallScreen || !responsive; else smallDeviceCard\"\r\n >\r\n <tr>\r\n <th\r\n class=\"cursor-pointer text-center\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [ngStyle]=\"{ width: column?.width + 'px' }\"\r\n >\r\n <div\r\n class=\"grid\"\r\n [ngClass]=\"[canFilter ? 'grid-rows-2' : 'grid-rows-1']\"\r\n >\r\n <span\r\n class=\"p-2 relative\"\r\n (click)=\"sortByHeader(column)\"\r\n [ngStyle]=\"{\r\n minWidth:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? column.data.length * 30 + 'px'\r\n : '',\r\n display:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'inline-block'\r\n : '',\r\n }\"\r\n >{{ column.label }}\r\n <app-sort-down-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'asc'\r\n \"\r\n ></app-sort-down-icon>\r\n <app-sort-up-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'desc'\r\n \"\r\n ></app-sort-up-icon>\r\n <app-sort-solid-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"sortDetail?.key !== column.key\"\r\n ></app-sort-solid-icon>\r\n </span>\r\n <core-column-date-picker\r\n *ngIf=\"canFilter && column.type == columnsTypes.SHAMSI_DATE\"\r\n [canSelectToday]=\"true\"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n >\r\n </core-column-date-picker>\r\n <core-column-input\r\n *ngIf=\"\r\n canFilter &&\r\n column.type !== columnsTypes.ACTION &&\r\n column.type !== columnsTypes.COLOR &&\r\n column.type !== columnsTypes.STATUS &&\r\n column.type !== columnsTypes.SHAMSI_DATE &&\r\n column.type !== columnsTypes.ROW_SELECTOR &&\r\n column.type !== columnsTypes.STATUS_ACTIVE &&\r\n column.type !== columnsTypes.ACTION_BUTTONS\r\n \"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n ></core-column-input>\r\n <core-column-selector\r\n *ngIf=\"\r\n (canFilter && column.type == columnsTypes.STATUS) ||\r\n (canFilter && column.type == columnsTypes.STATUS_ACTIVE)\r\n \"\r\n [titleKey]=\"'title'\"\r\n [valueKey]=\"'value'\"\r\n [items]=\"\r\n column.type == columnsTypes.STATUS\r\n ? ACTIVE_OPTIONS\r\n : YES_NO_OPTIONS\r\n \"\r\n (onItemSelected)=\"tableDataFiltered($event, column)\"\r\n ></core-column-selector>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr\r\n *ngFor=\"let data of sortedTableData; let i = index\"\r\n class=\"cursor-pointer\"\r\n [id]=\"'tableRow_' + salt + '_' + i\"\r\n [ngClass]=\"{ 'select-item': data.id === selectedItem?.id }\"\r\n (click)=\"onItemSelect(data, i, $event)\"\r\n (contextmenu)=\"onRightClick($event, data); $event.preventDefault()\"\r\n >\r\n <td\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"styleFilter ? styleFilter(data) : ''\"\r\n >\r\n <app-core-table-column-manager\r\n *ngIf=\"column.type != columnsTypes.MULTI_COLUMN; else elseBlock\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [allTableData]=\"sortedTableData\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-column-manager>\r\n <ng-template #elseBlock>\r\n <app-core-table-column-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-column-manager>\r\n </ng-template>\r\n </td>\r\n <ng-template #userMenu style=\"position: fixed\">\r\n <section class=\"user-menu\">\r\n <div\r\n class=\"w-96 text-right\"\r\n *ngFor=\"let item of columnsSchemaRightClick\"\r\n (click)=\"onRightItemClick(data, item)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </section>\r\n </ng-template>\r\n </tr>\r\n </table>\r\n <ng-template #smallDeviceCard>\r\n <div>\r\n <core-card\r\n *ngFor=\"let data of sortedTableData\"\r\n [cardClass]=\"'background-card m-4 p-4 relative'\"\r\n >\r\n <div\r\n class=\"leading-8\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'actionButtons'\r\n : column.type === columnsTypes.ROW_SELECTOR\r\n ? 'selectRow'\r\n : ''\r\n \"\r\n >\r\n <span\r\n *ngIf=\"\r\n column.type !== columnsTypes.ACTION_BUTTONS &&\r\n column.type !== columnsTypes.ROW_SELECTOR\r\n \"\r\n class=\"secondary-text-color\"\r\n >\r\n {{ column.label }} :\r\n </span>\r\n <span class=\"primary-text-color font-semibold\">\r\n <app-core-table-card-manager\r\n *ngIf=\"\r\n column.type != columnsTypes.MULTI_COLUMN;\r\n else cardManagerElseBlock\r\n \"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-card-manager>\r\n\r\n <ng-template #cardManagerElseBlock>\r\n <app-core-table-card-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-card-manager>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </core-card>\r\n </div>\r\n </ng-template>\r\n <core-table-no-content\r\n *ngIf=\"!loading\"\r\n [tableData]=\"sortedTableData\"\r\n [loading]=\"loading\"\r\n ></core-table-no-content>\r\n</div>\r\n", styles: ["table{border-collapse:collapse;width:100%;text-align:start}table:focus{outline:none}.select-item{background-color:#e3f2fd!important}.user-menu{background-color:#fafafa;font-size:10pt;z-index:1000;box-shadow:0 0 12pt #00000040;border-radius:4pt;padding:.5em 0;animation:fadeIn .1s ease-out;opacity:1;display:block}.user-menu div{cursor:pointer;text-decoration:none;color:#333;padding-inline:1.5em;padding-block:.5em;max-width:18em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu div:hover{background-color:#cccbcb48}table td,table th{padding-top:12px;padding-bottom:12px;padding-inline-start:8px}table td{font-size:small;color:var(--default-table-td-text-color)}table tr:nth-child(2n){background-color:var(--default-table-tr-child-background-color)}table tr:hover{background-color:var(--default-table-tr-hover-background-color)}table th{background-color:var(--default-table-th-background-color);text-align:start;color:#1d1d1d}.actionButtons{position:absolute;bottom:0;background:var(--default-table-action-buttons-background-color);left:0;right:0;text-align:left;border-radius:.5rem;border-top-right-radius:0;border-top-left-radius:0;padding-top:4px;padding-left:16px}.selectRow{position:absolute;left:0;top:18px}.desc-sort-icon{transform:rotate(180deg)}.sort-icon{fill:var(--default-table-sort-icon-color)}.background-card{background-color:var(--default-table-background-card-color)}.secondary-text-color{color:var(--default-table-secondary-text-color)}.primary-text-color{color:var(--default-table-primary-text-color)}\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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.CoreCardComponent, selector: "core-card", inputs: ["cardClass"] }, { kind: "component", type: i5.CoreColumnDatePickerComponent, selector: "core-column-date-picker", inputs: ["canSelectToday", "defaultDate", "inputFormControl"], outputs: ["onChange"] }, { kind: "component", type: i6.CoreColumnInputComponent, selector: "core-column-input", inputs: ["showRemoveIcon", "placeholder", "value", "type", "isDatePicker", "maxLength"], outputs: ["onChange"] }, { kind: "component", type: i7.CoreColumnSelectorComponent, selector: "core-column-selector", inputs: ["items", "titleKey", "valueKey", "label", "inputFormControl"], outputs: ["onItemSelected"] }, { kind: "component", type: i8.CoreTableCardManagerComponent, selector: "app-core-table-card-manager", inputs: ["data", "column", "allTableData", "rowSelector"], outputs: ["onColumnClicked"] }, { kind: "component", type: i9.CoreTableColumnManagerComponent, selector: "app-core-table-column-manager", inputs: ["data", "column", "allTableData", "rowSelector"], outputs: ["onColumnClicked", "onColumnValueChanged"] }, { kind: "component", type: i10.CoreTableNoContentComponent, selector: "core-table-no-content", inputs: ["tableData", "loading"] }, { kind: "component", type: i11.SortDownIconComponent, selector: "app-sort-down-icon" }, { kind: "component", type: i12.SortSolidIconComponent, selector: "app-sort-solid-icon" }, { kind: "component", type: i13.SortUpIconComponent, selector: "app-sort-up-icon" }] }); }
290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreTableComponent, selector: "core-table", inputs: { key: "key", columnsSchema: "columnsSchema", columnsSchemaRightClick: "columnsSchemaRightClick", tableData: "tableData", responsive: "responsive", canSelectFirstItem: "canSelectFirstItem", loading: "loading", canFilter: "canFilter", styleFilter: "styleFilter", rowSelector: "rowSelector" }, outputs: { onItemRightClick: "onItemRightClick", onColumnClicked: "onColumnClicked", onColumnValueChanged: "onColumnValueChanged", onItemSelected: "onItemSelected" }, host: { listeners: { "document:keydown": "handleEnter($event)" } }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "userMenu", first: true, predicate: ["userMenu"], descendants: true }], ngImport: i0, template: "<div class=\"p-2 overflow-x-auto relative\">\r\n <table\r\n #table\r\n tabindex=\"0\"\r\n *ngIf=\"!isRunningOnSmallScreen || !responsive; else smallDeviceCard\"\r\n >\r\n <tr>\r\n <th\r\n class=\"cursor-pointer text-center\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [ngStyle]=\"{ width: column?.width + 'px' }\"\r\n >\r\n <div\r\n class=\"grid\"\r\n [ngClass]=\"[canFilter ? 'grid-rows-2' : 'grid-rows-1']\"\r\n >\r\n <span\r\n class=\"p-2 relative\"\r\n (click)=\"sortByHeader(column)\"\r\n [ngStyle]=\"{\r\n minWidth:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? column.data.length * 30 + 'px'\r\n : '',\r\n display:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'inline-block'\r\n : '',\r\n }\"\r\n >{{ column.label }}\r\n <app-sort-down-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'asc'\r\n \"\r\n ></app-sort-down-icon>\r\n <app-sort-up-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'desc'\r\n \"\r\n ></app-sort-up-icon>\r\n <app-sort-solid-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"sortDetail?.key !== column.key\"\r\n ></app-sort-solid-icon>\r\n </span>\r\n <core-column-date-picker\r\n *ngIf=\"\r\n canFilter &&\r\n (column.type == columnsTypes.SHAMSI_DATE ||\r\n column.type == columnsTypes.DATE)\r\n \"\r\n [canSelectToday]=\"true\"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n >\r\n </core-column-date-picker>\r\n <core-column-input\r\n *ngIf=\"\r\n canFilter &&\r\n column.type !== columnsTypes.ACTION &&\r\n column.type !== columnsTypes.COLOR &&\r\n column.type !== columnsTypes.STATUS &&\r\n column.type !== columnsTypes.SHAMSI_DATE &&\r\n column.type !== columnsTypes.ROW_SELECTOR &&\r\n column.type !== columnsTypes.DATE &&\r\n column.type !== columnsTypes.STATUS_ACTIVE &&\r\n column.type !== columnsTypes.ACTION_BUTTONS\r\n \"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n ></core-column-input>\r\n <core-column-selector\r\n *ngIf=\"\r\n (canFilter && column.type == columnsTypes.STATUS) ||\r\n (canFilter && column.type == columnsTypes.STATUS_ACTIVE)\r\n \"\r\n [titleKey]=\"'title'\"\r\n [valueKey]=\"'value'\"\r\n [items]=\"\r\n column.type == columnsTypes.STATUS\r\n ? ACTIVE_OPTIONS\r\n : YES_NO_OPTIONS\r\n \"\r\n (onItemSelected)=\"tableDataFiltered($event, column)\"\r\n ></core-column-selector>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr\r\n *ngFor=\"let data of sortedTableData; let i = index\"\r\n class=\"cursor-pointer\"\r\n [id]=\"'tableRow_' + salt + '_' + i\"\r\n [ngClass]=\"{ 'select-item': data.id === selectedItem?.id }\"\r\n (click)=\"onItemSelect(data, i, $event)\"\r\n (contextmenu)=\"onRightClick($event, data); $event.preventDefault()\"\r\n >\r\n <td\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"styleFilter ? styleFilter(data) : ''\"\r\n >\r\n <app-core-table-column-manager\r\n *ngIf=\"column.type != columnsTypes.MULTI_COLUMN; else elseBlock\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [allTableData]=\"sortedTableData\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-column-manager>\r\n <ng-template #elseBlock>\r\n <app-core-table-column-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-column-manager>\r\n </ng-template>\r\n </td>\r\n <ng-template #userMenu style=\"position: fixed\">\r\n <section class=\"user-menu\">\r\n <div\r\n class=\"w-96 text-right\"\r\n *ngFor=\"let item of columnsSchemaRightClick\"\r\n (click)=\"onRightItemClick(data, item)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </section>\r\n </ng-template>\r\n </tr>\r\n </table>\r\n <ng-template #smallDeviceCard>\r\n <div>\r\n <core-card\r\n *ngFor=\"let data of sortedTableData\"\r\n [cardClass]=\"'background-card m-4 p-4 relative'\"\r\n >\r\n <div\r\n class=\"leading-8\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'actionButtons'\r\n : column.type === columnsTypes.ROW_SELECTOR\r\n ? 'selectRow'\r\n : ''\r\n \"\r\n >\r\n <span\r\n *ngIf=\"\r\n column.type !== columnsTypes.ACTION_BUTTONS &&\r\n column.type !== columnsTypes.ROW_SELECTOR\r\n \"\r\n class=\"secondary-text-color\"\r\n >\r\n {{ column.label }} :\r\n </span>\r\n <span class=\"primary-text-color font-semibold\">\r\n <app-core-table-card-manager\r\n *ngIf=\"\r\n column.type != columnsTypes.MULTI_COLUMN;\r\n else cardManagerElseBlock\r\n \"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-card-manager>\r\n\r\n <ng-template #cardManagerElseBlock>\r\n <app-core-table-card-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-card-manager>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </core-card>\r\n </div>\r\n </ng-template>\r\n <core-table-no-content\r\n *ngIf=\"!loading\"\r\n [tableData]=\"sortedTableData\"\r\n [loading]=\"loading\"\r\n ></core-table-no-content>\r\n</div>\r\n", styles: ["table{border-collapse:collapse;width:100%;text-align:start}table:focus{outline:none}.select-item{background-color:#e3f2fd!important}.user-menu{background-color:#fafafa;font-size:10pt;z-index:1000;box-shadow:0 0 12pt #00000040;border-radius:4pt;padding:.5em 0;animation:fadeIn .1s ease-out;opacity:1;display:block}.user-menu div{cursor:pointer;text-decoration:none;color:#333;padding-inline:1.5em;padding-block:.5em;max-width:18em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu div:hover{background-color:#cccbcb48}table td,table th{padding-top:12px;padding-bottom:12px;padding-inline-start:8px}table td{font-size:small;color:var(--default-table-td-text-color)}table tr:nth-child(2n){background-color:var(--default-table-tr-child-background-color)}table tr:hover{background-color:var(--default-table-tr-hover-background-color)}table th{background-color:var(--default-table-th-background-color);text-align:start;color:#1d1d1d}.actionButtons{position:absolute;bottom:0;background:var(--default-table-action-buttons-background-color);left:0;right:0;text-align:left;border-radius:.5rem;border-top-right-radius:0;border-top-left-radius:0;padding-top:4px;padding-left:16px}.selectRow{position:absolute;left:0;top:18px}.desc-sort-icon{transform:rotate(180deg)}.sort-icon{fill:var(--default-table-sort-icon-color)}.background-card{background-color:var(--default-table-background-card-color)}.secondary-text-color{color:var(--default-table-secondary-text-color)}.primary-text-color{color:var(--default-table-primary-text-color)}\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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.CoreCardComponent, selector: "core-card", inputs: ["cardClass"] }, { kind: "component", type: i5.CoreColumnDatePickerComponent, selector: "core-column-date-picker", inputs: ["canSelectToday", "defaultDate", "inputFormControl"], outputs: ["onChange"] }, { kind: "component", type: i6.CoreColumnInputComponent, selector: "core-column-input", inputs: ["showRemoveIcon", "placeholder", "value", "type", "isDatePicker", "maxLength"], outputs: ["onChange"] }, { kind: "component", type: i7.CoreColumnSelectorComponent, selector: "core-column-selector", inputs: ["items", "titleKey", "valueKey", "label", "inputFormControl"], outputs: ["onItemSelected"] }, { kind: "component", type: i8.CoreTableCardManagerComponent, selector: "app-core-table-card-manager", inputs: ["data", "column", "allTableData", "rowSelector"], outputs: ["onColumnClicked"] }, { kind: "component", type: i9.CoreTableColumnManagerComponent, selector: "app-core-table-column-manager", inputs: ["data", "column", "allTableData", "rowSelector"], outputs: ["onColumnClicked", "onColumnValueChanged"] }, { kind: "component", type: i10.CoreTableNoContentComponent, selector: "core-table-no-content", inputs: ["tableData", "loading"] }, { kind: "component", type: i11.SortDownIconComponent, selector: "app-sort-down-icon" }, { kind: "component", type: i12.SortSolidIconComponent, selector: "app-sort-solid-icon" }, { kind: "component", type: i13.SortUpIconComponent, selector: "app-sort-up-icon" }] }); }
291
291
  }
292
292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTableComponent, decorators: [{
293
293
  type: Component,
294
- args: [{ selector: 'core-table', template: "<div class=\"p-2 overflow-x-auto relative\">\r\n <table\r\n #table\r\n tabindex=\"0\"\r\n *ngIf=\"!isRunningOnSmallScreen || !responsive; else smallDeviceCard\"\r\n >\r\n <tr>\r\n <th\r\n class=\"cursor-pointer text-center\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [ngStyle]=\"{ width: column?.width + 'px' }\"\r\n >\r\n <div\r\n class=\"grid\"\r\n [ngClass]=\"[canFilter ? 'grid-rows-2' : 'grid-rows-1']\"\r\n >\r\n <span\r\n class=\"p-2 relative\"\r\n (click)=\"sortByHeader(column)\"\r\n [ngStyle]=\"{\r\n minWidth:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? column.data.length * 30 + 'px'\r\n : '',\r\n display:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'inline-block'\r\n : '',\r\n }\"\r\n >{{ column.label }}\r\n <app-sort-down-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'asc'\r\n \"\r\n ></app-sort-down-icon>\r\n <app-sort-up-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'desc'\r\n \"\r\n ></app-sort-up-icon>\r\n <app-sort-solid-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"sortDetail?.key !== column.key\"\r\n ></app-sort-solid-icon>\r\n </span>\r\n <core-column-date-picker\r\n *ngIf=\"canFilter && column.type == columnsTypes.SHAMSI_DATE\"\r\n [canSelectToday]=\"true\"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n >\r\n </core-column-date-picker>\r\n <core-column-input\r\n *ngIf=\"\r\n canFilter &&\r\n column.type !== columnsTypes.ACTION &&\r\n column.type !== columnsTypes.COLOR &&\r\n column.type !== columnsTypes.STATUS &&\r\n column.type !== columnsTypes.SHAMSI_DATE &&\r\n column.type !== columnsTypes.ROW_SELECTOR &&\r\n column.type !== columnsTypes.STATUS_ACTIVE &&\r\n column.type !== columnsTypes.ACTION_BUTTONS\r\n \"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n ></core-column-input>\r\n <core-column-selector\r\n *ngIf=\"\r\n (canFilter && column.type == columnsTypes.STATUS) ||\r\n (canFilter && column.type == columnsTypes.STATUS_ACTIVE)\r\n \"\r\n [titleKey]=\"'title'\"\r\n [valueKey]=\"'value'\"\r\n [items]=\"\r\n column.type == columnsTypes.STATUS\r\n ? ACTIVE_OPTIONS\r\n : YES_NO_OPTIONS\r\n \"\r\n (onItemSelected)=\"tableDataFiltered($event, column)\"\r\n ></core-column-selector>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr\r\n *ngFor=\"let data of sortedTableData; let i = index\"\r\n class=\"cursor-pointer\"\r\n [id]=\"'tableRow_' + salt + '_' + i\"\r\n [ngClass]=\"{ 'select-item': data.id === selectedItem?.id }\"\r\n (click)=\"onItemSelect(data, i, $event)\"\r\n (contextmenu)=\"onRightClick($event, data); $event.preventDefault()\"\r\n >\r\n <td\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"styleFilter ? styleFilter(data) : ''\"\r\n >\r\n <app-core-table-column-manager\r\n *ngIf=\"column.type != columnsTypes.MULTI_COLUMN; else elseBlock\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [allTableData]=\"sortedTableData\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-column-manager>\r\n <ng-template #elseBlock>\r\n <app-core-table-column-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-column-manager>\r\n </ng-template>\r\n </td>\r\n <ng-template #userMenu style=\"position: fixed\">\r\n <section class=\"user-menu\">\r\n <div\r\n class=\"w-96 text-right\"\r\n *ngFor=\"let item of columnsSchemaRightClick\"\r\n (click)=\"onRightItemClick(data, item)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </section>\r\n </ng-template>\r\n </tr>\r\n </table>\r\n <ng-template #smallDeviceCard>\r\n <div>\r\n <core-card\r\n *ngFor=\"let data of sortedTableData\"\r\n [cardClass]=\"'background-card m-4 p-4 relative'\"\r\n >\r\n <div\r\n class=\"leading-8\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'actionButtons'\r\n : column.type === columnsTypes.ROW_SELECTOR\r\n ? 'selectRow'\r\n : ''\r\n \"\r\n >\r\n <span\r\n *ngIf=\"\r\n column.type !== columnsTypes.ACTION_BUTTONS &&\r\n column.type !== columnsTypes.ROW_SELECTOR\r\n \"\r\n class=\"secondary-text-color\"\r\n >\r\n {{ column.label }} :\r\n </span>\r\n <span class=\"primary-text-color font-semibold\">\r\n <app-core-table-card-manager\r\n *ngIf=\"\r\n column.type != columnsTypes.MULTI_COLUMN;\r\n else cardManagerElseBlock\r\n \"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-card-manager>\r\n\r\n <ng-template #cardManagerElseBlock>\r\n <app-core-table-card-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-card-manager>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </core-card>\r\n </div>\r\n </ng-template>\r\n <core-table-no-content\r\n *ngIf=\"!loading\"\r\n [tableData]=\"sortedTableData\"\r\n [loading]=\"loading\"\r\n ></core-table-no-content>\r\n</div>\r\n", styles: ["table{border-collapse:collapse;width:100%;text-align:start}table:focus{outline:none}.select-item{background-color:#e3f2fd!important}.user-menu{background-color:#fafafa;font-size:10pt;z-index:1000;box-shadow:0 0 12pt #00000040;border-radius:4pt;padding:.5em 0;animation:fadeIn .1s ease-out;opacity:1;display:block}.user-menu div{cursor:pointer;text-decoration:none;color:#333;padding-inline:1.5em;padding-block:.5em;max-width:18em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu div:hover{background-color:#cccbcb48}table td,table th{padding-top:12px;padding-bottom:12px;padding-inline-start:8px}table td{font-size:small;color:var(--default-table-td-text-color)}table tr:nth-child(2n){background-color:var(--default-table-tr-child-background-color)}table tr:hover{background-color:var(--default-table-tr-hover-background-color)}table th{background-color:var(--default-table-th-background-color);text-align:start;color:#1d1d1d}.actionButtons{position:absolute;bottom:0;background:var(--default-table-action-buttons-background-color);left:0;right:0;text-align:left;border-radius:.5rem;border-top-right-radius:0;border-top-left-radius:0;padding-top:4px;padding-left:16px}.selectRow{position:absolute;left:0;top:18px}.desc-sort-icon{transform:rotate(180deg)}.sort-icon{fill:var(--default-table-sort-icon-color)}.background-card{background-color:var(--default-table-background-card-color)}.secondary-text-color{color:var(--default-table-secondary-text-color)}.primary-text-color{color:var(--default-table-primary-text-color)}\n"] }]
294
+ args: [{ selector: 'core-table', template: "<div class=\"p-2 overflow-x-auto relative\">\r\n <table\r\n #table\r\n tabindex=\"0\"\r\n *ngIf=\"!isRunningOnSmallScreen || !responsive; else smallDeviceCard\"\r\n >\r\n <tr>\r\n <th\r\n class=\"cursor-pointer text-center\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [ngStyle]=\"{ width: column?.width + 'px' }\"\r\n >\r\n <div\r\n class=\"grid\"\r\n [ngClass]=\"[canFilter ? 'grid-rows-2' : 'grid-rows-1']\"\r\n >\r\n <span\r\n class=\"p-2 relative\"\r\n (click)=\"sortByHeader(column)\"\r\n [ngStyle]=\"{\r\n minWidth:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? column.data.length * 30 + 'px'\r\n : '',\r\n display:\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'inline-block'\r\n : '',\r\n }\"\r\n >{{ column.label }}\r\n <app-sort-down-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'asc'\r\n \"\r\n ></app-sort-down-icon>\r\n <app-sort-up-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"\r\n sortDetail?.key == column.key && sortDetail?.sort === 'desc'\r\n \"\r\n ></app-sort-up-icon>\r\n <app-sort-solid-icon\r\n class=\"sort-icon w-2 h-2 inline-block absolute top-3 right-[-3px]\"\r\n *ngIf=\"sortDetail?.key !== column.key\"\r\n ></app-sort-solid-icon>\r\n </span>\r\n <core-column-date-picker\r\n *ngIf=\"\r\n canFilter &&\r\n (column.type == columnsTypes.SHAMSI_DATE ||\r\n column.type == columnsTypes.DATE)\r\n \"\r\n [canSelectToday]=\"true\"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n >\r\n </core-column-date-picker>\r\n <core-column-input\r\n *ngIf=\"\r\n canFilter &&\r\n column.type !== columnsTypes.ACTION &&\r\n column.type !== columnsTypes.COLOR &&\r\n column.type !== columnsTypes.STATUS &&\r\n column.type !== columnsTypes.SHAMSI_DATE &&\r\n column.type !== columnsTypes.ROW_SELECTOR &&\r\n column.type !== columnsTypes.DATE &&\r\n column.type !== columnsTypes.STATUS_ACTIVE &&\r\n column.type !== columnsTypes.ACTION_BUTTONS\r\n \"\r\n (onChange)=\"tableDataFiltered($event, column)\"\r\n ></core-column-input>\r\n <core-column-selector\r\n *ngIf=\"\r\n (canFilter && column.type == columnsTypes.STATUS) ||\r\n (canFilter && column.type == columnsTypes.STATUS_ACTIVE)\r\n \"\r\n [titleKey]=\"'title'\"\r\n [valueKey]=\"'value'\"\r\n [items]=\"\r\n column.type == columnsTypes.STATUS\r\n ? ACTIVE_OPTIONS\r\n : YES_NO_OPTIONS\r\n \"\r\n (onItemSelected)=\"tableDataFiltered($event, column)\"\r\n ></core-column-selector>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr\r\n *ngFor=\"let data of sortedTableData; let i = index\"\r\n class=\"cursor-pointer\"\r\n [id]=\"'tableRow_' + salt + '_' + i\"\r\n [ngClass]=\"{ 'select-item': data.id === selectedItem?.id }\"\r\n (click)=\"onItemSelect(data, i, $event)\"\r\n (contextmenu)=\"onRightClick($event, data); $event.preventDefault()\"\r\n >\r\n <td\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"styleFilter ? styleFilter(data) : ''\"\r\n >\r\n <app-core-table-column-manager\r\n *ngIf=\"column.type != columnsTypes.MULTI_COLUMN; else elseBlock\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [allTableData]=\"sortedTableData\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-column-manager>\r\n <ng-template #elseBlock>\r\n <app-core-table-column-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-column-manager>\r\n </ng-template>\r\n </td>\r\n <ng-template #userMenu style=\"position: fixed\">\r\n <section class=\"user-menu\">\r\n <div\r\n class=\"w-96 text-right\"\r\n *ngFor=\"let item of columnsSchemaRightClick\"\r\n (click)=\"onRightItemClick(data, item)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </section>\r\n </ng-template>\r\n </tr>\r\n </table>\r\n <ng-template #smallDeviceCard>\r\n <div>\r\n <core-card\r\n *ngFor=\"let data of sortedTableData\"\r\n [cardClass]=\"'background-card m-4 p-4 relative'\"\r\n >\r\n <div\r\n class=\"leading-8\"\r\n *ngFor=\"let column of activeColumnsSchema()\"\r\n [class]=\"\r\n column.type === columnsTypes.ACTION_BUTTONS\r\n ? 'actionButtons'\r\n : column.type === columnsTypes.ROW_SELECTOR\r\n ? 'selectRow'\r\n : ''\r\n \"\r\n >\r\n <span\r\n *ngIf=\"\r\n column.type !== columnsTypes.ACTION_BUTTONS &&\r\n column.type !== columnsTypes.ROW_SELECTOR\r\n \"\r\n class=\"secondary-text-color\"\r\n >\r\n {{ column.label }} :\r\n </span>\r\n <span class=\"primary-text-color font-semibold\">\r\n <app-core-table-card-manager\r\n *ngIf=\"\r\n column.type != columnsTypes.MULTI_COLUMN;\r\n else cardManagerElseBlock\r\n \"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-card-manager>\r\n\r\n <ng-template #cardManagerElseBlock>\r\n <app-core-table-card-manager\r\n *ngFor=\"let childColumn of column.columns; let i = index\"\r\n [rowSelector]=\"rowSelector\"\r\n (onColumnClicked)=\"columnClicked($event)\"\r\n [data]=\"data\"\r\n [allTableData]=\"sortedTableData\"\r\n [column]=\"childColumn\"\r\n >\r\n <span *ngIf=\"i > 0\">-</span>\r\n </app-core-table-card-manager>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </core-card>\r\n </div>\r\n </ng-template>\r\n <core-table-no-content\r\n *ngIf=\"!loading\"\r\n [tableData]=\"sortedTableData\"\r\n [loading]=\"loading\"\r\n ></core-table-no-content>\r\n</div>\r\n", styles: ["table{border-collapse:collapse;width:100%;text-align:start}table:focus{outline:none}.select-item{background-color:#e3f2fd!important}.user-menu{background-color:#fafafa;font-size:10pt;z-index:1000;box-shadow:0 0 12pt #00000040;border-radius:4pt;padding:.5em 0;animation:fadeIn .1s ease-out;opacity:1;display:block}.user-menu div{cursor:pointer;text-decoration:none;color:#333;padding-inline:1.5em;padding-block:.5em;max-width:18em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu div:hover{background-color:#cccbcb48}table td,table th{padding-top:12px;padding-bottom:12px;padding-inline-start:8px}table td{font-size:small;color:var(--default-table-td-text-color)}table tr:nth-child(2n){background-color:var(--default-table-tr-child-background-color)}table tr:hover{background-color:var(--default-table-tr-hover-background-color)}table th{background-color:var(--default-table-th-background-color);text-align:start;color:#1d1d1d}.actionButtons{position:absolute;bottom:0;background:var(--default-table-action-buttons-background-color);left:0;right:0;text-align:left;border-radius:.5rem;border-top-right-radius:0;border-top-left-radius:0;padding-top:4px;padding-left:16px}.selectRow{position:absolute;left:0;top:18px}.desc-sort-icon{transform:rotate(180deg)}.sort-icon{fill:var(--default-table-sort-icon-color)}.background-card{background-color:var(--default-table-background-card-color)}.secondary-text-color{color:var(--default-table-secondary-text-color)}.primary-text-color{color:var(--default-table-primary-text-color)}\n"] }]
295
295
  }], ctorParameters: function () { return [{ type: i1.NgxIndexedDBService }, { type: i0.ViewContainerRef }, { type: i2.Overlay }]; }, propDecorators: { key: [{
296
296
  type: Input,
297
297
  args: [{ required: false }]
@@ -339,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
339
339
  type: HostListener,
340
340
  args: ['document:keydown', ['$event']]
341
341
  }] } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS10YWJsZS9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQVEsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU9yRCxNQUFNLE9BQU8sa0JBQWtCO0lBNkI3QixJQUFJLFlBQVk7UUFDZCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsWUFDVSxTQUE4QixFQUMvQixnQkFBa0MsRUFDbEMsT0FBZ0I7UUFGZixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUMvQixxQkFB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QVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZyb21FdmVudCwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IE5neEluZGV4ZWREQlNlcnZpY2UgfSBmcm9tICduZ3gtaW5kZXhlZC1kYic7XHJcbmltcG9ydCB7IGZpbmQsIG9yZGVyQnkgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBQ1RJVkVfT1BUSU9OUywgWUVTX05PX09QVElPTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XHJcbmltcG9ydCB7IENvbHVtbnNTY2hlbWEsIFNjaGVtYVJpZ2h0Q2xpY2sgfSBmcm9tICcuL2NvcmUtdGFibGUudHlwZSc7XHJcbmltcG9ydCB7IENPTFVNTlNfVFlQRVMgfSBmcm9tICcuLi8uLi9mYWxjb25UeXBlcyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW5zU2NoZW1hOiBDb2x1bW5zU2NoZW1hW10gPSBbXTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgY29sdW1uc1NjaGVtYVJpZ2h0Q2xpY2s6IFNjaGVtYVJpZ2h0Q2xpY2tbXSA9IFtdO1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhYmxlRGF0YTogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHJlc3BvbnNpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBjYW5TZWxlY3RGaXJzdEl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBsb2FkaW5nOiBhbnk7XHJcbiAgQElucHV0KCkgY2FuRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHN0eWxlRmlsdGVyOiAoKGRhdGE6IGFueSkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgcm93U2VsZWN0b3I6IEJlaGF2aW9yU3ViamVjdDxhbnk+IHwgdW5kZWZpbmVkID1cclxuICAgIHVuZGVmaW5lZDtcclxuICBAT3V0cHV0KCkgb25JdGVtUmlnaHRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGUhOiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VzZXJNZW51JykgdXNlck1lbnUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEFDVElWRV9PUFRJT05TID0gQUNUSVZFX09QVElPTlM7XHJcbiAgWUVTX05PX09QVElPTlMgPSBZRVNfTk9fT1BUSU9OUztcclxuICBzb3J0RGV0YWlsOiB7IGtleTogc3RyaW5nOyBzb3J0OiAnYXNjJyB8ICdkZXNjJyB9IHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbTogYW55ID0gdW5kZWZpbmVkO1xyXG4gIHNvcnRlZFRhYmxlRGF0YTogYW55W10gPSBbXTtcclxuICBkYlRhYmxlRmlsdGVyOiBhbnk7XHJcbiAgaW5kZXggPSAwO1xyXG4gIHNhbHQgPSB0aGlzLnJhbmRvbVN0cmluZyg1KTtcclxuICBvdmVybGF5UmVmITogT3ZlcmxheVJlZiB8IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtSW5kZXggPSAwO1xyXG4gIGdldCBjb2x1bW5zVHlwZXMoKSB7XHJcbiAgICByZXR1cm4gQ09MVU1OU19UWVBFUztcclxuICB9XHJcbiAgZ2V0IGlzUnVubmluZ09uU21hbGxTY3JlZW4oKSB7XHJcbiAgICByZXR1cm4gVXRpbC5pc1J1bm5pbmdPblNtYWxsU2NyZWVuKCk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYlNlcnZpY2U6IE5neEluZGV4ZWREQlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVEYXRhLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zb3J0ZWRUYWJsZURhdGEgPSB2YWw7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmNhblNlbGVjdEZpcnN0SXRlbSAmJlxyXG4gICAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5zb3J0ZWRUYWJsZURhdGFbMF07XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IDA7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGU/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5rZXkpIHtcclxuICAgICAgdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAuZ2V0QnlJbmRleCgndGFibGVGaWx0ZXInLCAna2V5JywgdGhpcy5rZXkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRiVGFibGVGaWx0ZXIgPSBkYXRhO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGJUYWJsZUZpbHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlRmlsdGVyKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5TZWxlY3RGaXJzdEl0ZW0gJiYgdGhpcy5zb3J0ZWRUYWJsZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc29ydGVkVGFibGVEYXRhWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNvbHVtbnNTY2hlbWEubWFwKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICBKU09OLnBhcnNlKHRoaXMuZGJUYWJsZUZpbHRlci5jb2x1bW5zU2NoZW1hKS5mb3JFYWNoKFxyXG4gICAgICAgIChkYkNvbHVtbnNTY2hlbWE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRiQ29sdW1uc1NjaGVtYS5rZXkgPT09IGNvbHVtbi5rZXkpIHtcclxuICAgICAgICAgICAgY29sdW1uLmFjdGl2ZSA9IGRiQ29sdW1uc1NjaGVtYS5hY3RpdmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zdWIgJiYgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgc3ViITogU3Vic2NyaXB0aW9uO1xyXG4gIG9uUmlnaHRDbGljayhldmVudDogYW55LCBpdGVtOiBTY2hlbWFSaWdodENsaWNrKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WDtcclxuICAgIGNvbnN0IHkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxyXG4gICAgICAucG9zaXRpb24oKVxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh7IHgsIHkgfSlcclxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSk7XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChcclxuICAgICAgbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudXNlck1lbnUsIHRoaXMudmlld0NvbnRhaW5lclJlZiwge1xyXG4gICAgICAgICRpbXBsaWNpdDogaXRlbSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWIgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdjbGljaycpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgISF0aGlzLm92ZXJsYXlSZWYgJiZcclxuICAgICAgICAgICAgIXRoaXMub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZSgxKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcclxuICB9XHJcblxyXG4gIG9uUmlnaHRJdGVtQ2xpY2soZGF0YTogYW55LCBldmVudDogU2NoZW1hUmlnaHRDbGljaykge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGV2ZW50LmtleSwgZGF0YTogZGF0YSB9O1xyXG4gICAgdGhpcy5vbkl0ZW1SaWdodENsaWNrLmVtaXQocmVzdWx0KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRW50ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBrZXkgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xyXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudGFibGU/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgaWYgKGtleS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPT09IHRoaXMuc29ydGVkVGFibGVEYXRhLmxlbmd0aCAtIDEpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA8IHRoaXMuc29ydGVkVGFibGVEYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgrKztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5zb3J0ZWRUYWJsZURhdGFbdGhpcy5zZWxlY3RlZEl0ZW1JbmRleF07XHJcbiAgICAgICAgICBkb2N1bWVudFxyXG4gICAgICAgICAgICAuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgICAgICAgJ3RhYmxlUm93XycgKyB0aGlzLnNhbHQgKyAnXycgKyB0aGlzLnNlbGVjdGVkSXRlbUluZGV4XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIGlmIChrZXkua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleC0tO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNvcnRlZFRhYmxlRGF0YVt0aGlzLnNlbGVjdGVkSXRlbUluZGV4XTtcclxuICAgICAgICAgIGRvY3VtZW50XHJcbiAgICAgICAgICAgIC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAgICAgICAndGFibGVSb3dfJyArIHRoaXMuc2FsdCArICdfJyArIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXhcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGtleS5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGtleS5hbHRLZXkpIHtcclxuICAgICAgICBjb25zdCBhY3Rpb25CdXR0b25zOiBhbnkgPSB0aGlzLmNvbHVtbnNTY2hlbWEuZmluZChcclxuICAgICAgICAgIChzY2hlbWE6IGFueSkgPT4gc2NoZW1hLnR5cGUgPT09IENPTFVNTlNfVFlQRVMuQUNUSU9OX0JVVFRPTlNcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBhY3Rpb25CdXR0b25zLmRhdGEuZm9yRWFjaCgoYWN0aW9uQnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChhY3Rpb25CdXR0b24ua2V5Ym9hcmRTaG9ydGN1dCkge1xyXG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXHJcbiAgICAgICAgICAgICAgJ14oJyArIGFjdGlvbkJ1dHRvbi5rZXlib2FyZFNob3J0Y3V0ICsgJykkJyxcclxuICAgICAgICAgICAgICAnaSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHJlZ2V4LnRlc3Qoa2V5LmtleSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbHVtbkNsaWNrZWQoe1xyXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5zZWxlY3RlZEl0ZW0sXHJcbiAgICAgICAgICAgICAgICBrZXk6IGFjdGlvbkJ1dHRvbi5rZXksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uSXRlbVNlbGVjdChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZGF0YTtcclxuICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgfVxyXG5cclxuICBjb2x1bW5DbGlja2VkKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ29sdW1uQ2xpY2tlZC5lbWl0KHZhbCk7XHJcbiAgfVxyXG4gIGNvbHVtblZhbHVlQ2hhbmdlZCh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5vbkNvbHVtblZhbHVlQ2hhbmdlZC5lbWl0KHZhbCk7XHJcbiAgfVxyXG4gIHNvcnRCeUhlYWRlcihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc29ydERldGFpbCAmJiB0aGlzLnNvcnREZXRhaWwua2V5ID09IGNvbHVtbi5rZXkpIHtcclxuICAgICAgaWYgKHRoaXMuc29ydERldGFpbC5zb3J0ID09ICdkZXNjJykge1xyXG4gICAgICAgIHRoaXMuc29ydERldGFpbCA9IHsga2V5OiBjb2x1bW4ua2V5LCBzb3J0OiAnYXNjJyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc29ydERldGFpbCA9IHsga2V5OiBjb2x1bW4ua2V5LCBzb3J0OiAnZGVzYycgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0RGV0YWlsID0geyBrZXk6IGNvbHVtbi5rZXksIHNvcnQ6ICdhc2MnIH07XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGNvbHVtbi50eXBlID09IENPTFVNTlNfVFlQRVMuVEVYVCB8fFxyXG4gICAgICBjb2x1bW4udHlwZSA9PSBDT0xVTU5TX1RZUEVTLk5VTUJFUlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gb3JkZXJCeShcclxuICAgICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YSxcclxuICAgICAgICBbY29sdW1uLmtleV0sXHJcbiAgICAgICAgW3RoaXMuc29ydERldGFpbC5zb3J0XVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PSBDT0xVTU5TX1RZUEVTLlNFTEVDVE9SKSB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gb3JkZXJCeShcclxuICAgICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YSxcclxuICAgICAgICBbKGMpID0+IGNbY29sdW1uLmtleV1bY29sdW1uLmRhdGEua2V5XV0sXHJcbiAgICAgICAgW3RoaXMuc29ydERldGFpbC5zb3J0XVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PSBDT0xVTU5TX1RZUEVTLlNIQU1TSV9EQVRFKSB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gb3JkZXJCeShcclxuICAgICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YSxcclxuICAgICAgICBbKGMpID0+IG5ldyBEYXRlKGNbY29sdW1uLmtleV0pLmdldFRpbWUoKV0sXHJcbiAgICAgICAgW3RoaXMuc29ydERldGFpbC5zb3J0XVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlQ29sdW1uc1NjaGVtYSgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zU2NoZW1hLmZpbHRlcihcclxuICAgICAgKGNvbHVtbjogYW55KSA9PiBjb2x1bW4uYWN0aXZlID09PSB1bmRlZmluZWQgfHwgY29sdW1uLmFjdGl2ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHRhYmxlRGF0YUZpbHRlcmVkKHRleHQ6IFN0cmluZyB8IGJvb2xlYW4sIGNvbHVtbjogYW55KSB7XHJcbiAgICB0aGlzLmNvbHVtbnNTY2hlbWEubWFwKChjb2x1bW5TY2hlbWE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoY29sdW1uU2NoZW1hLmtleSA9PT0gY29sdW1uLmtleSkge1xyXG4gICAgICAgIGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIgPSB0ZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW5TY2hlbWE7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGFibGVEYXRhLnN1YnNjcmliZSgodGFibGVEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gdGFibGVEYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zU2NoZW1hLmZvckVhY2goKGNvbHVtblNjaGVtYTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbHVtblNjaGVtYS50eXBlID09PSB0aGlzLmNvbHVtbnNUeXBlcy5ST1dfU0VMRUNUT1IgfHxcclxuICAgICAgICAgICAgY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLkFDVElPTiB8fFxyXG4gICAgICAgICAgICBjb2x1bW5TY2hlbWEudHlwZSA9PT0gdGhpcy5jb2x1bW5zVHlwZXMuQUNUSU9OX0JVVFRPTlMgfHxcclxuICAgICAgICAgICAgY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlciA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICFyZXN1bHRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLlNFTEVDVE9SKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGFbY29sdW1uU2NoZW1hLmtleV1bY29sdW1uU2NoZW1hLmRhdGEua2V5XVxyXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgLmluY2x1ZGVzKGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLlNIQU1TSV9EQVRFKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5TY2hlbWEuY29sdW1uRmlsdGVyID09PSAnJykge1xyXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0ID0gZGF0YVtjb2x1bW5TY2hlbWEua2V5XVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgVXRpbC5zaGFtc2lUb01pbGFkaShcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5TY2hlbWEuY29sdW1uRmlsdGVyLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ1lZWVktTU0tREQnXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLk1VTFRJX0NPTFVNTikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBjb2x1bW5TY2hlbWEuY29sdW1ucy5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YVtpdGVtLmtleV1baXRlbS5kYXRhLmtleV1cclxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlcj8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW5TY2hlbWEudHlwZSA9PT0gdGhpcy5jb2x1bW5zVHlwZXMuU1RBVFVTKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5TY2hlbWEuY29sdW1uRmlsdGVyID09PSAnJykge1xyXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0ID0gZGF0YVtjb2x1bW5TY2hlbWEua2V5XSA9PT0gY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gZGF0YVtjb2x1bW5TY2hlbWEua2V5XVxyXG4gICAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAuaW5jbHVkZXMoY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlcj8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJhbmRvbVN0cmluZyhsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKVxyXG4gICAgICAudG9TdHJpbmcoMzYpXHJcbiAgICAgIC5zdWJzdHJpbmcoMiwgMiArIGxlbmd0aCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwLTIgb3ZlcmZsb3cteC1hdXRvIHJlbGF0aXZlXCI+XHJcbiAgPHRhYmxlXHJcbiAgICAjdGFibGVcclxuICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAqbmdJZj1cIiFpc1J1bm5pbmdPblNtYWxsU2NyZWVuIHx8ICFyZXNwb25zaXZlOyBlbHNlIHNtYWxsRGV2aWNlQ2FyZFwiXHJcbiAgPlxyXG4gICAgPHRyPlxyXG4gICAgICA8dGhcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtY2VudGVyXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGFjdGl2ZUNvbHVtbnNTY2hlbWEoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogY29sdW1uPy53aWR0aCArICdweCcgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImdyaWRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW2NhbkZpbHRlciA/ICdncmlkLXJvd3MtMicgOiAnZ3JpZC1yb3dzLTEnXVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJwLTIgcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydEJ5SGVhZGVyKGNvbHVtbilcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgbWluV2lkdGg6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gY29sdW1uc1R5cGVzLkFDVElPTl9CVVRUT05TXHJcbiAgICAgICAgICAgICAgICAgID8gY29sdW1uLmRhdGEubGVuZ3RoICogMzAgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgZGlzcGxheTpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlID09PSBjb2x1bW5zVHlwZXMuQUNUSU9OX0JVVFRPTlNcclxuICAgICAgICAgICAgICAgICAgPyAnaW5saW5lLWJsb2NrJ1xyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPnt7IGNvbHVtbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8YXBwLXNvcnQtZG93bi1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0LWljb24gdy0yIGgtMiBpbmxpbmUtYmxvY2sgYWJzb2x1dGUgdG9wLTMgcmlnaHQtWy0zcHhdXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgc29ydERldGFpbD8ua2V5ID09IGNvbHVtbi5rZXkgJiYgc29ydERldGFpbD8uc29ydCA9PT0gJ2FzYydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9hcHAtc29ydC1kb3duLWljb24+XHJcbiAgICAgICAgICAgIDxhcHAtc29ydC11cC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0LWljb24gdy0yIGgtMiBpbmxpbmUtYmxvY2sgYWJzb2x1dGUgdG9wLTMgcmlnaHQtWy0zcHhdXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgc29ydERldGFpbD8ua2V5ID09IGNvbHVtbi5rZXkgJiYgc29ydERldGFpbD8uc29ydCA9PT0gJ2Rlc2MnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvYXBwLXNvcnQtdXAtaWNvbj5cclxuICAgICAgICAgICAgPGFwcC1zb3J0LXNvbGlkLWljb25cclxuICAgICAgICAgICAgICBjbGFzcz1cInNvcnQtaWNvbiB3LTIgaC0yIGlubGluZS1ibG9jayBhYnNvbHV0ZSB0b3AtMyByaWdodC1bLTNweF1cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic29ydERldGFpbD8ua2V5ICE9PSBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgPjwvYXBwLXNvcnQtc29saWQtaWNvbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxjb3JlLWNvbHVtbi1kYXRlLXBpY2tlclxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbkZpbHRlciAmJiBjb2x1bW4udHlwZSA9PSBjb2x1bW5zVHlwZXMuU0hBTVNJX0RBVEVcIlxyXG4gICAgICAgICAgICBbY2FuU2VsZWN0VG9kYXldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChvbkNoYW5nZSk9XCJ0YWJsZURhdGFGaWx0ZXJlZCgkZXZlbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9jb3JlLWNvbHVtbi1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgIDxjb3JlLWNvbHVtbi1pbnB1dFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGNhbkZpbHRlciAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuQUNUSU9OICYmXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5DT0xPUiAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuU1RBVFVTICYmXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5TSEFNU0lfREFURSAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuUk9XX1NFTEVDVE9SICYmXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5TVEFUVVNfQUNUSVZFICYmXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5BQ1RJT05fQlVUVE9OU1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwidGFibGVEYXRhRmlsdGVyZWQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgID48L2NvcmUtY29sdW1uLWlucHV0PlxyXG4gICAgICAgICAgPGNvcmUtY29sdW1uLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKGNhbkZpbHRlciAmJiBjb2x1bW4udHlwZSA9PSBjb2x1bW5zVHlwZXMuU1RBVFVTKSB8fFxyXG4gICAgICAgICAgICAgIChjYW5GaWx0ZXIgJiYgY29sdW1uLnR5cGUgPT0gY29sdW1uc1R5cGVzLlNUQVRVU19BQ1RJVkUpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFt0aXRsZUtleV09XCIndGl0bGUnXCJcclxuICAgICAgICAgICAgW3ZhbHVlS2V5XT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICBbaXRlbXNdPVwiXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgPT0gY29sdW1uc1R5cGVzLlNUQVRVU1xyXG4gICAgICAgICAgICAgICAgPyBBQ1RJVkVfT1BUSU9OU1xyXG4gICAgICAgICAgICAgICAgOiBZRVNfTk9fT1BUSU9OU1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAob25JdGVtU2VsZWN0ZWQpPVwidGFibGVEYXRhRmlsdGVyZWQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgID48L2NvcmUtY29sdW1uLXNlbGVjdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RoPlxyXG4gICAgPC90cj5cclxuICAgIDx0clxyXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzb3J0ZWRUYWJsZURhdGE7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgW2lkXT1cIid0YWJsZVJvd18nICsgc2FsdCArICdfJyArIGlcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3QtaXRlbSc6IGRhdGEuaWQgPT09IHNlbGVjdGVkSXRlbT8uaWQgfVwiXHJcbiAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoZGF0YSwgaSwgJGV2ZW50KVwiXHJcbiAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBkYXRhKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgPlxyXG4gICAgICA8dGRcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGFjdGl2ZUNvbHVtbnNTY2hlbWEoKVwiXHJcbiAgICAgICAgW2NsYXNzXT1cInN0eWxlRmlsdGVyID8gc3R5bGVGaWx0ZXIoZGF0YSkgOiAnJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8YXBwLWNvcmUtdGFibGUtY29sdW1uLW1hbmFnZXJcclxuICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgIT0gY29sdW1uc1R5cGVzLk1VTFRJX0NPTFVNTjsgZWxzZSBlbHNlQmxvY2tcIlxyXG4gICAgICAgICAgW3Jvd1NlbGVjdG9yXT1cInJvd1NlbGVjdG9yXCJcclxuICAgICAgICAgIChvbkNvbHVtbkNsaWNrZWQpPVwiY29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChvbkNvbHVtblZhbHVlQ2hhbmdlZCk9XCJjb2x1bW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbYWxsVGFibGVEYXRhXT1cInNvcnRlZFRhYmxlRGF0YVwiXHJcbiAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICA+PC9hcHAtY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cclxuICAgICAgICAgIDxhcHAtY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlclxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGRDb2x1bW4gb2YgY29sdW1uLmNvbHVtbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbcm93U2VsZWN0b3JdPVwicm93U2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAob25Db2x1bW5DbGlja2VkKT1cImNvbHVtbkNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICBbYWxsVGFibGVEYXRhXT1cInNvcnRlZFRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY2hpbGRDb2x1bW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgPiAwXCI+LTwvc3Bhbj5cclxuICAgICAgICAgIDwvYXBwLWNvcmUtdGFibGUtY29sdW1uLW1hbmFnZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC90ZD5cclxuICAgICAgPG5nLXRlbXBsYXRlICN1c2VyTWVudSBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidXNlci1tZW51XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidy05NiB0ZXh0LXJpZ2h0XCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29sdW1uc1NjaGVtYVJpZ2h0Q2xpY2tcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25SaWdodEl0ZW1DbGljayhkYXRhLCBpdGVtKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdHI+XHJcbiAgPC90YWJsZT5cclxuICA8bmctdGVtcGxhdGUgI3NtYWxsRGV2aWNlQ2FyZD5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxjb3JlLWNhcmRcclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzb3J0ZWRUYWJsZURhdGFcIlxyXG4gICAgICAgIFtjYXJkQ2xhc3NdPVwiJ2JhY2tncm91bmQtY2FyZCBtLTQgcC00IHJlbGF0aXZlJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxlYWRpbmctOFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGFjdGl2ZUNvbHVtbnNTY2hlbWEoKVwiXHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbi50eXBlID09PSBjb2x1bW5zVHlwZXMuQUNUSU9OX0JVVFRPTlNcclxuICAgICAgICAgICAgICA/ICdhY3Rpb25CdXR0b25zJ1xyXG4gICAgICAgICAgICAgIDogY29sdW1uLnR5cGUgPT09IGNvbHVtbnNUeXBlcy5ST1dfU0VMRUNUT1JcclxuICAgICAgICAgICAgICAgID8gJ3NlbGVjdFJvdydcclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBjb2x1bW4udHlwZSAhPT0gY29sdW1uc1R5cGVzLkFDVElPTl9CVVRUT05TICYmXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5ST1dfU0VMRUNUT1JcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWNvbmRhcnktdGV4dC1jb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fSA6XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW1hcnktdGV4dC1jb2xvciBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgIDxhcHAtY29yZS10YWJsZS1jYXJkLW1hbmFnZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT0gY29sdW1uc1R5cGVzLk1VTFRJX0NPTFVNTjtcclxuICAgICAgICAgICAgICAgIGVsc2UgY2FyZE1hbmFnZXJFbHNlQmxvY2tcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtyb3dTZWxlY3Rvcl09XCJyb3dTZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgKG9uQ29sdW1uQ2xpY2tlZCk9XCJjb2x1bW5DbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgIFthbGxUYWJsZURhdGFdPVwic29ydGVkVGFibGVEYXRhXCJcclxuICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hcHAtY29yZS10YWJsZS1jYXJkLW1hbmFnZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhcmRNYW5hZ2VyRWxzZUJsb2NrPlxyXG4gICAgICAgICAgICAgIDxhcHAtY29yZS10YWJsZS1jYXJkLW1hbmFnZXJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZENvbHVtbiBvZiBjb2x1bW4uY29sdW1uczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbcm93U2VsZWN0b3JdPVwicm93U2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgKG9uQ29sdW1uQ2xpY2tlZCk9XCJjb2x1bW5DbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsVGFibGVEYXRhXT1cInNvcnRlZFRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNoaWxkQ29sdW1uXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgPiAwXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2FwcC1jb3JlLXRhYmxlLWNhcmQtbWFuYWdlcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jb3JlLWNhcmQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxjb3JlLXRhYmxlLW5vLWNvbnRlbnRcclxuICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxyXG4gICAgW3RhYmxlRGF0YV09XCJzb3J0ZWRUYWJsZURhdGFcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgPjwvY29yZS10YWJsZS1uby1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS10YWJsZS9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQVEsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU9yRCxNQUFNLE9BQU8sa0JBQWtCO0lBNkI3QixJQUFJLFlBQVk7UUFDZCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsWUFDVSxTQUE4QixFQUMvQixnQkFBa0MsRUFDbEMsT0FBZ0I7UUFGZixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFwQ0Usa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBQ25DLDRCQUF1QixHQUF1QixFQUFFLENBQUM7UUFDbEQsY0FBUyxHQUNsQyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUNMLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXZELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFUixnQkFBVyxHQUNyQyxTQUFTLENBQUM7UUFDRixxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHakUsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFFaEMsaUJBQVksR0FBUSxTQUFTLENBQUM7UUFDOUIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFNUIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFNBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVCLHNCQUFpQixHQUFHLENBQUMsQ0FBQztJQVduQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7WUFDM0IsSUFDRSxJQUFJLENBQUMsa0JBQWtCO2dCQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFDL0I7Z0JBQ0EsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO29CQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDbEM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFNBQVM7aUJBQ1gsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDMUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQ2xELENBQUMsZUFBb0IsRUFBRSxFQUFFO2dCQUN2QixJQUFJLGVBQWUsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDdEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO2lCQUN4QztZQUNILENBQUMsQ0FDRixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLElBQXNCO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2xDLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQzdCLGFBQWEsQ0FBQztZQUNiO2dCQUNFLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNoQjtTQUNGLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDcEMsZ0JBQWdCO1lBQ2hCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtTQUN0RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDcEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkQsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBYSxRQUFRLEVBQUUsT0FBTyxDQUFDO2FBQ2hELElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1lBQ2hELE9BQU8sQ0FDTCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7Z0JBQ2pCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUN0RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsS0FBdUI7UUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDdEIsTUFBTSxHQUFHLEdBQUcsS0FBc0IsQ0FBQztRQUNuQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDeEQsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtnQkFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFBRSxPQUFPO2dCQUN2RSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ2pFLFFBQVE7eUJBQ0wsY0FBYyxDQUNiLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQ3ZEO3dCQUNELEVBQUUsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO2FBQ1I7aUJBQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssQ0FBQztvQkFBRSxPQUFPO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ2pFLFFBQVE7eUJBQ0wsY0FBYyxDQUNiLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQ3ZEO3dCQUNELEVBQUUsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO2FBQ1I7aUJBQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87YUFDUjtpQkFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE1BQU0sYUFBYSxHQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNoRCxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsY0FBYyxDQUM5RCxDQUFDO2dCQUVGLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO29CQUMvQyxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQ3RCLElBQUksR0FBRyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUMzQyxHQUFHLENBQ0osQ0FBQzt3QkFDRixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDO2dDQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0NBQ3ZCLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRzs2QkFDdEIsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO2FBQ1I7U0FDRjtJQUNILENBQUM7SUFDRCxZQUFZLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxLQUFZO1FBQ2pELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVE7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELGtCQUFrQixDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDeEQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNyRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsSUFDRSxNQUFNLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLE1BQU0sRUFDbkM7WUFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FDNUIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQ1osQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUN2QixDQUFDO1NBQ0g7YUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FDNUIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FDdkIsQ0FBQztTQUNIO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQzVCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUMxQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ3ZCLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQzlELENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBc0IsRUFBRSxNQUFXO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQzNDLElBQUksWUFBWSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNuQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNsQztZQUNELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtvQkFDL0MsSUFDRSxZQUFZLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWTt3QkFDcEQsWUFBWSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07d0JBQzlDLFlBQVksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjO3dCQUN0RCxZQUFZLENBQUMsWUFBWSxLQUFLLFNBQVM7d0JBQ3ZDLENBQUMsTUFBTSxFQUNQO3dCQUNBLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO3dCQUNwRCxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzs2QkFDbkQsV0FBVyxFQUFFOzZCQUNiLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7cUJBQ2pFO3lCQUFNLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTt3QkFDdkQsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTs0QkFDcEMsTUFBTSxHQUFHLElBQUksQ0FBQzt5QkFDZjs2QkFBTTs0QkFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7aUNBQzVCLFdBQVcsRUFBRTtpQ0FDYixRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FDakIsWUFBWSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFDcEMsWUFBWSxDQUNiLENBQ0YsQ0FBQzt5QkFDTDtxQkFDRjt5QkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUU7d0JBQy9ELE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOzRCQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUNBQ2pDLFdBQVcsRUFBRTtpQ0FDYixRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUNwRSxDQUFDLENBQUMsQ0FBQztxQkFDSjt5QkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7d0JBQ3pELElBQUksWUFBWSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7NEJBQ3BDLE1BQU0sR0FBRyxJQUFJLENBQUM7eUJBQ2Y7NkJBQU07NEJBQ0wsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssWUFBWSxDQUFDLFlBQVksQ0FBQzt5QkFDL0Q7cUJBQ0Y7eUJBQU07d0JBQ0wsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDOzZCQUM1QixRQUFRLEVBQUU7NkJBQ1YsV0FBVyxFQUFFOzZCQUNiLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7cUJBQ25FO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFO2FBQ2pCLFFBQVEsQ0FBQyxFQUFFLENBQUM7YUFDWixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQTlUVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixnd0JDM0IvQixnK09Bc01BOzs0RkQzS2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLFlBQVk7K0pBS00sR0FBRztzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0csdUJBQXVCO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDQyxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFRyxVQUFVO3NCQUFyQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDRSxrQkFBa0I7c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNDLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixTQUFTO3NCQUFqQixLQUFLO2dCQUNzQixXQUFXO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDRSxXQUFXO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFFaEIsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ2EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNLLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkE0SHJCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZyb21FdmVudCwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IE5neEluZGV4ZWREQlNlcnZpY2UgfSBmcm9tICduZ3gtaW5kZXhlZC1kYic7XHJcbmltcG9ydCB7IGZpbmQsIG9yZGVyQnkgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBQ1RJVkVfT1BUSU9OUywgWUVTX05PX09QVElPTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XHJcbmltcG9ydCB7IENvbHVtbnNTY2hlbWEsIFNjaGVtYVJpZ2h0Q2xpY2sgfSBmcm9tICcuL2NvcmUtdGFibGUudHlwZSc7XHJcbmltcG9ydCB7IENPTFVNTlNfVFlQRVMgfSBmcm9tICcuLi8uLi9mYWxjb25UeXBlcyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW5zU2NoZW1hOiBDb2x1bW5zU2NoZW1hW10gPSBbXTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgY29sdW1uc1NjaGVtYVJpZ2h0Q2xpY2s6IFNjaGVtYVJpZ2h0Q2xpY2tbXSA9IFtdO1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhYmxlRGF0YTogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHJlc3BvbnNpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBjYW5TZWxlY3RGaXJzdEl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBsb2FkaW5nOiBhbnk7XHJcbiAgQElucHV0KCkgY2FuRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHN0eWxlRmlsdGVyOiAoKGRhdGE6IGFueSkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgcm93U2VsZWN0b3I6IEJlaGF2aW9yU3ViamVjdDxhbnk+IHwgdW5kZWZpbmVkID1cclxuICAgIHVuZGVmaW5lZDtcclxuICBAT3V0cHV0KCkgb25JdGVtUmlnaHRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGUhOiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VzZXJNZW51JykgdXNlck1lbnUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEFDVElWRV9PUFRJT05TID0gQUNUSVZFX09QVElPTlM7XHJcbiAgWUVTX05PX09QVElPTlMgPSBZRVNfTk9fT1BUSU9OUztcclxuICBzb3J0RGV0YWlsOiB7IGtleTogc3RyaW5nOyBzb3J0OiAnYXNjJyB8ICdkZXNjJyB9IHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbTogYW55ID0gdW5kZWZpbmVkO1xyXG4gIHNvcnRlZFRhYmxlRGF0YTogYW55W10gPSBbXTtcclxuICBkYlRhYmxlRmlsdGVyOiBhbnk7XHJcbiAgaW5kZXggPSAwO1xyXG4gIHNhbHQgPSB0aGlzLnJhbmRvbVN0cmluZyg1KTtcclxuICBvdmVybGF5UmVmITogT3ZlcmxheVJlZiB8IG51bGw7XHJcbiAgc2VsZWN0ZWRJdGVtSW5kZXggPSAwO1xyXG4gIGdldCBjb2x1bW5zVHlwZXMoKSB7XHJcbiAgICByZXR1cm4gQ09MVU1OU19UWVBFUztcclxuICB9XHJcbiAgZ2V0IGlzUnVubmluZ09uU21hbGxTY3JlZW4oKSB7XHJcbiAgICByZXR1cm4gVXRpbC5pc1J1bm5pbmdPblNtYWxsU2NyZWVuKCk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYlNlcnZpY2U6IE5neEluZGV4ZWREQlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5LFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5zdWJzY3JpYmUoKHZhbDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gdmFsO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jYW5TZWxlY3RGaXJzdEl0ZW0gJiZcclxuICAgICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc29ydGVkVGFibGVEYXRhWzBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSAwO1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMua2V5KSB7XHJcbiAgICAgIHRoaXMuZGJTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJ5SW5kZXgoJ3RhYmxlRmlsdGVyJywgJ2tleScsIHRoaXMua2V5KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYlRhYmxlRmlsdGVyID0gZGF0YTtcclxuICAgICAgICAgIGlmICh0aGlzLmRiVGFibGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZUZpbHRlcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuU2VsZWN0Rmlyc3RJdGVtICYmIHRoaXMuc29ydGVkVGFibGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNvcnRlZFRhYmxlRGF0YVswXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRhYmxlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5jb2x1bW5zU2NoZW1hLm1hcCgoY29sdW1uOiBhbnkpID0+IHtcclxuICAgICAgSlNPTi5wYXJzZSh0aGlzLmRiVGFibGVGaWx0ZXIuY29sdW1uc1NjaGVtYSkuZm9yRWFjaChcclxuICAgICAgICAoZGJDb2x1bW5zU2NoZW1hOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChkYkNvbHVtbnNTY2hlbWEua2V5ID09PSBjb2x1bW4ua2V5KSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5hY3RpdmUgPSBkYkNvbHVtbnNTY2hlbWEuYWN0aXZlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBjb2x1bW47XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLnN1YiAmJiB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdWIhOiBTdWJzY3JpcHRpb247XHJcbiAgb25SaWdodENsaWNrKGV2ZW50OiBhbnksIGl0ZW06IFNjaGVtYVJpZ2h0Q2xpY2spIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHsgeCwgeSB9KVxyXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKFxyXG4gICAgICBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy51c2VyTWVudSwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB7XHJcbiAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxyXG4gICAgICB9KSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWIgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdjbGljaycpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgISF0aGlzLm92ZXJsYXlSZWYgJiZcclxuICAgICAgICAgICAgIXRoaXMub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgfVxyXG5cclxuICBvblJpZ2h0SXRlbUNsaWNrKGRhdGE6IGFueSwgZXZlbnQ6IFNjaGVtYVJpZ2h0Q2xpY2spIHtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHsga2V5OiBldmVudC5rZXksIGRhdGE6IGRhdGEgfTtcclxuICAgIHRoaXMub25JdGVtUmlnaHRDbGljay5lbWl0KHJlc3VsdCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qga2V5ID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcclxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGlmIChrZXkua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID09PSB0aGlzLnNvcnRlZFRhYmxlRGF0YS5sZW5ndGggLSAxKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPCB0aGlzLnNvcnRlZFRhYmxlRGF0YS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4Kys7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc29ydGVkVGFibGVEYXRhW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdO1xyXG4gICAgICAgICAgZG9jdW1lbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgICAgICAgICd0YWJsZVJvd18nICsgdGhpcy5zYWx0ICsgJ18nICsgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGtleS5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID09PSAwKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4LS07XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc29ydGVkVGFibGVEYXRhW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdO1xyXG4gICAgICAgICAgZG9jdW1lbnRcclxuICAgICAgICAgICAgLmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgICAgICAgICd0YWJsZVJvd18nICsgdGhpcy5zYWx0ICsgJ18nICsgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGtleS5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGtleS5hbHRLZXkpIHtcclxuICAgICAgICBjb25zdCBhY3Rpb25CdXR0b25zOiBhbnkgPSB0aGlzLmNvbHVtbnNTY2hlbWEuZmluZChcclxuICAgICAgICAgIChzY2hlbWE6IGFueSkgPT4gc2NoZW1hLnR5cGUgPT09IENPTFVNTlNfVFlQRVMuQUNUSU9OX0JVVFRPTlMsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgYWN0aW9uQnV0dG9ucy5kYXRhLmZvckVhY2goKGFjdGlvbkJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYWN0aW9uQnV0dG9uLmtleWJvYXJkU2hvcnRjdXQpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICAgICAgICdeKCcgKyBhY3Rpb25CdXR0b24ua2V5Ym9hcmRTaG9ydGN1dCArICcpJCcsXHJcbiAgICAgICAgICAgICAgJ2knLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAocmVnZXgudGVzdChrZXkua2V5KSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29sdW1uQ2xpY2tlZCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnNlbGVjdGVkSXRlbSxcclxuICAgICAgICAgICAgICAgIGtleTogYWN0aW9uQnV0dG9uLmtleSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb25JdGVtU2VsZWN0KGRhdGE6IGFueSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkYXRhO1xyXG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICB9XHJcblxyXG4gIGNvbHVtbkNsaWNrZWQodmFsOiBhbnkpIHtcclxuICAgIHRoaXMub25Db2x1bW5DbGlja2VkLmVtaXQodmFsKTtcclxuICB9XHJcbiAgY29sdW1uVmFsdWVDaGFuZ2VkKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ29sdW1uVmFsdWVDaGFuZ2VkLmVtaXQodmFsKTtcclxuICB9XHJcbiAgc29ydEJ5SGVhZGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zb3J0RGV0YWlsICYmIHRoaXMuc29ydERldGFpbC5rZXkgPT0gY29sdW1uLmtleSkge1xyXG4gICAgICBpZiAodGhpcy5zb3J0RGV0YWlsLnNvcnQgPT0gJ2Rlc2MnKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0RGV0YWlsID0geyBrZXk6IGNvbHVtbi5rZXksIHNvcnQ6ICdhc2MnIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zb3J0RGV0YWlsID0geyBrZXk6IGNvbHVtbi5rZXksIHNvcnQ6ICdkZXNjJyB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnREZXRhaWwgPSB7IGtleTogY29sdW1uLmtleSwgc29ydDogJ2FzYycgfTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgY29sdW1uLnR5cGUgPT0gQ09MVU1OU19UWVBFUy5URVhUIHx8XHJcbiAgICAgIGNvbHVtbi50eXBlID09IENPTFVNTlNfVFlQRVMuTlVNQkVSXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zb3J0ZWRUYWJsZURhdGEgPSBvcmRlckJ5KFxyXG4gICAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhLFxyXG4gICAgICAgIFtjb2x1bW4ua2V5XSxcclxuICAgICAgICBbdGhpcy5zb3J0RGV0YWlsLnNvcnRdLFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PSBDT0xVTU5TX1RZUEVTLlNFTEVDVE9SKSB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gb3JkZXJCeShcclxuICAgICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YSxcclxuICAgICAgICBbKGMpID0+IGNbY29sdW1uLmtleV1bY29sdW1uLmRhdGEua2V5XV0sXHJcbiAgICAgICAgW3RoaXMuc29ydERldGFpbC5zb3J0XSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT0gQ09MVU1OU19UWVBFUy5TSEFNU0lfREFURSkge1xyXG4gICAgICB0aGlzLnNvcnRlZFRhYmxlRGF0YSA9IG9yZGVyQnkoXHJcbiAgICAgICAgdGhpcy5zb3J0ZWRUYWJsZURhdGEsXHJcbiAgICAgICAgWyhjKSA9PiBuZXcgRGF0ZShjW2NvbHVtbi5rZXldKS5nZXRUaW1lKCldLFxyXG4gICAgICAgIFt0aGlzLnNvcnREZXRhaWwuc29ydF0sXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmVDb2x1bW5zU2NoZW1hKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbnNTY2hlbWEuZmlsdGVyKFxyXG4gICAgICAoY29sdW1uOiBhbnkpID0+IGNvbHVtbi5hY3RpdmUgPT09IHVuZGVmaW5lZCB8fCBjb2x1bW4uYWN0aXZlLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHRhYmxlRGF0YUZpbHRlcmVkKHRleHQ6IFN0cmluZyB8IGJvb2xlYW4sIGNvbHVtbjogYW55KSB7XHJcbiAgICB0aGlzLmNvbHVtbnNTY2hlbWEubWFwKChjb2x1bW5TY2hlbWE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoY29sdW1uU2NoZW1hLmtleSA9PT0gY29sdW1uLmtleSkge1xyXG4gICAgICAgIGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIgPSB0ZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW5TY2hlbWE7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGFibGVEYXRhLnN1YnNjcmliZSgodGFibGVEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuc29ydGVkVGFibGVEYXRhID0gdGFibGVEYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zU2NoZW1hLmZvckVhY2goKGNvbHVtblNjaGVtYTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbHVtblNjaGVtYS50eXBlID09PSB0aGlzLmNvbHVtbnNUeXBlcy5ST1dfU0VMRUNUT1IgfHxcclxuICAgICAgICAgICAgY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLkFDVElPTiB8fFxyXG4gICAgICAgICAgICBjb2x1bW5TY2hlbWEudHlwZSA9PT0gdGhpcy5jb2x1bW5zVHlwZXMuQUNUSU9OX0JVVFRPTlMgfHxcclxuICAgICAgICAgICAgY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlciA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICFyZXN1bHRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLlNFTEVDVE9SKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGFbY29sdW1uU2NoZW1hLmtleV1bY29sdW1uU2NoZW1hLmRhdGEua2V5XVxyXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgLmluY2x1ZGVzKGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLkRBVEUpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIgPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXN1bHQgPSBkYXRhW2NvbHVtblNjaGVtYS5rZXldXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgICBVdGlsLnNoYW1zaVRvTWlsYWRpKFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICAnWVlZWS1NTS1ERCcsXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtblNjaGVtYS50eXBlID09PSB0aGlzLmNvbHVtbnNUeXBlcy5NVUxUSV9DT0xVTU4pIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gY29sdW1uU2NoZW1hLmNvbHVtbnMuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbaXRlbS5rZXldW2l0ZW0uZGF0YS5rZXldXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXI/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uU2NoZW1hLnR5cGUgPT09IHRoaXMuY29sdW1uc1R5cGVzLlNUQVRVUykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uU2NoZW1hLmNvbHVtbkZpbHRlciA9PT0gJycpIHtcclxuICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGRhdGFbY29sdW1uU2NoZW1hLmtleV0gPT09IGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGFbY29sdW1uU2NoZW1hLmtleV1cclxuICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgLmluY2x1ZGVzKGNvbHVtblNjaGVtYS5jb2x1bW5GaWx0ZXI/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByYW5kb21TdHJpbmcobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKClcclxuICAgICAgLnRvU3RyaW5nKDM2KVxyXG4gICAgICAuc3Vic3RyaW5nKDIsIDIgKyBsZW5ndGgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicC0yIG92ZXJmbG93LXgtYXV0byByZWxhdGl2ZVwiPlxyXG4gIDx0YWJsZVxyXG4gICAgI3RhYmxlXHJcbiAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgKm5nSWY9XCIhaXNSdW5uaW5nT25TbWFsbFNjcmVlbiB8fCAhcmVzcG9uc2l2ZTsgZWxzZSBzbWFsbERldmljZUNhcmRcIlxyXG4gID5cclxuICAgIDx0cj5cclxuICAgICAgPHRoXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBhY3RpdmVDb2x1bW5zU2NoZW1hKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGNvbHVtbj8ud2lkdGggKyAncHgnIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJncmlkXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltjYW5GaWx0ZXIgPyAnZ3JpZC1yb3dzLTInIDogJ2dyaWQtcm93cy0xJ11cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwicC0yIHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRCeUhlYWRlcihjb2x1bW4pXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgIG1pbldpZHRoOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLnR5cGUgPT09IGNvbHVtbnNUeXBlcy5BQ1RJT05fQlVUVE9OU1xyXG4gICAgICAgICAgICAgICAgICA/IGNvbHVtbi5kYXRhLmxlbmd0aCAqIDMwICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIGRpc3BsYXk6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gY29sdW1uc1R5cGVzLkFDVElPTl9CVVRUT05TXHJcbiAgICAgICAgICAgICAgICAgID8gJ2lubGluZS1ibG9jaydcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID57eyBjb2x1bW4ubGFiZWwgfX1cclxuICAgICAgICAgICAgPGFwcC1zb3J0LWRvd24taWNvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHctMiBoLTIgaW5saW5lLWJsb2NrIGFic29sdXRlIHRvcC0zIHJpZ2h0LVstM3B4XVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHNvcnREZXRhaWw/LmtleSA9PSBjb2x1bW4ua2V5ICYmIHNvcnREZXRhaWw/LnNvcnQgPT09ICdhc2MnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvYXBwLXNvcnQtZG93bi1pY29uPlxyXG4gICAgICAgICAgICA8YXBwLXNvcnQtdXAtaWNvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uIHctMiBoLTIgaW5saW5lLWJsb2NrIGFic29sdXRlIHRvcC0zIHJpZ2h0LVstM3B4XVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHNvcnREZXRhaWw/LmtleSA9PSBjb2x1bW4ua2V5ICYmIHNvcnREZXRhaWw/LnNvcnQgPT09ICdkZXNjJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2FwcC1zb3J0LXVwLWljb24+XHJcbiAgICAgICAgICAgIDxhcHAtc29ydC1zb2xpZC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0LWljb24gdy0yIGgtMiBpbmxpbmUtYmxvY2sgYWJzb2x1dGUgdG9wLTMgcmlnaHQtWy0zcHhdXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNvcnREZXRhaWw/LmtleSAhPT0gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgID48L2FwcC1zb3J0LXNvbGlkLWljb24+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8Y29yZS1jb2x1bW4tZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBjYW5GaWx0ZXIgJiZcclxuICAgICAgICAgICAgICAoY29sdW1uLnR5cGUgPT0gY29sdW1uc1R5cGVzLlNIQU1TSV9EQVRFIHx8XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4udHlwZSA9PSBjb2x1bW5zVHlwZXMuREFURSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW2NhblNlbGVjdFRvZGF5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwidGFibGVEYXRhRmlsdGVyZWQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvY29yZS1jb2x1bW4tZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICA8Y29yZS1jb2x1bW4taW5wdXRcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBjYW5GaWx0ZXIgJiZcclxuICAgICAgICAgICAgICBjb2x1bW4udHlwZSAhPT0gY29sdW1uc1R5cGVzLkFDVElPTiAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuQ09MT1IgJiZcclxuICAgICAgICAgICAgICBjb2x1bW4udHlwZSAhPT0gY29sdW1uc1R5cGVzLlNUQVRVUyAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuU0hBTVNJX0RBVEUgJiZcclxuICAgICAgICAgICAgICBjb2x1bW4udHlwZSAhPT0gY29sdW1uc1R5cGVzLlJPV19TRUxFQ1RPUiAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuREFURSAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuU1RBVFVTX0FDVElWRSAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuQUNUSU9OX0JVVFRPTlNcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cInRhYmxlRGF0YUZpbHRlcmVkKCRldmVudCwgY29sdW1uKVwiXHJcbiAgICAgICAgICA+PC9jb3JlLWNvbHVtbi1pbnB1dD5cclxuICAgICAgICAgIDxjb3JlLWNvbHVtbi1zZWxlY3RvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIChjYW5GaWx0ZXIgJiYgY29sdW1uLnR5cGUgPT0gY29sdW1uc1R5cGVzLlNUQVRVUykgfHxcclxuICAgICAgICAgICAgICAoY2FuRmlsdGVyICYmIGNvbHVtbi50eXBlID09IGNvbHVtbnNUeXBlcy5TVEFUVVNfQUNUSVZFKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbdGl0bGVLZXldPVwiJ3RpdGxlJ1wiXHJcbiAgICAgICAgICAgIFt2YWx1ZUtleV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgW2l0ZW1zXT1cIlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlID09IGNvbHVtbnNUeXBlcy5TVEFUVVNcclxuICAgICAgICAgICAgICAgID8gQUNUSVZFX09QVElPTlNcclxuICAgICAgICAgICAgICAgIDogWUVTX05PX09QVElPTlNcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKG9uSXRlbVNlbGVjdGVkKT1cInRhYmxlRGF0YUZpbHRlcmVkKCRldmVudCwgY29sdW1uKVwiXHJcbiAgICAgICAgICA+PC9jb3JlLWNvbHVtbi1zZWxlY3Rvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgICA8dHJcclxuICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc29ydGVkVGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIFtpZF09XCIndGFibGVSb3dfJyArIHNhbHQgKyAnXycgKyBpXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0LWl0ZW0nOiBkYXRhLmlkID09PSBzZWxlY3RlZEl0ZW0/LmlkIH1cIlxyXG4gICAgICAoY2xpY2spPVwib25JdGVtU2VsZWN0KGRhdGEsIGksICRldmVudClcIlxyXG4gICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZGF0YSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgID5cclxuICAgICAgPHRkXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBhY3RpdmVDb2x1bW5zU2NoZW1hKClcIlxyXG4gICAgICAgIFtjbGFzc109XCJzdHlsZUZpbHRlciA/IHN0eWxlRmlsdGVyKGRhdGEpIDogJydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGFwcC1jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyXHJcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlICE9IGNvbHVtbnNUeXBlcy5NVUxUSV9DT0xVTU47IGVsc2UgZWxzZUJsb2NrXCJcclxuICAgICAgICAgIFtyb3dTZWxlY3Rvcl09XCJyb3dTZWxlY3RvclwiXHJcbiAgICAgICAgICAob25Db2x1bW5DbGlja2VkKT1cImNvbHVtbkNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25Db2x1bW5WYWx1ZUNoYW5nZWQpPVwiY29sdW1uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgW2FsbFRhYmxlRGF0YV09XCJzb3J0ZWRUYWJsZURhdGFcIlxyXG4gICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgPjwvYXBwLWNvcmUtdGFibGUtY29sdW1uLW1hbmFnZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XHJcbiAgICAgICAgICA8YXBwLWNvcmUtdGFibGUtY29sdW1uLW1hbmFnZXJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkQ29sdW1uIG9mIGNvbHVtbi5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3Jvd1NlbGVjdG9yXT1cInJvd1NlbGVjdG9yXCJcclxuICAgICAgICAgICAgKG9uQ29sdW1uQ2xpY2tlZCk9XCJjb2x1bW5DbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgW2FsbFRhYmxlRGF0YV09XCJzb3J0ZWRUYWJsZURhdGFcIlxyXG4gICAgICAgICAgICBbY29sdW1uXT1cImNoaWxkQ29sdW1uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpID4gMFwiPi08L3NwYW4+XHJcbiAgICAgICAgICA8L2FwcC1jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlck1lbnUgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWRcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInVzZXItbWVudVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInctOTYgdGV4dC1yaWdodFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVtbnNTY2hlbWFSaWdodENsaWNrXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmlnaHRJdGVtQ2xpY2soZGF0YSwgaXRlbSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGFibGU+XHJcbiAgPG5nLXRlbXBsYXRlICNzbWFsbERldmljZUNhcmQ+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8Y29yZS1jYXJkXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc29ydGVkVGFibGVEYXRhXCJcclxuICAgICAgICBbY2FyZENsYXNzXT1cIidiYWNrZ3JvdW5kLWNhcmQgbS00IHAtNCByZWxhdGl2ZSdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsZWFkaW5nLThcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBhY3RpdmVDb2x1bW5zU2NoZW1hKClcIlxyXG4gICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICBjb2x1bW4udHlwZSA9PT0gY29sdW1uc1R5cGVzLkFDVElPTl9CVVRUT05TXHJcbiAgICAgICAgICAgICAgPyAnYWN0aW9uQnV0dG9ucydcclxuICAgICAgICAgICAgICA6IGNvbHVtbi50eXBlID09PSBjb2x1bW5zVHlwZXMuUk9XX1NFTEVDVE9SXHJcbiAgICAgICAgICAgICAgICA/ICdzZWxlY3RSb3cnXHJcbiAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgY29sdW1uLnR5cGUgIT09IGNvbHVtbnNUeXBlcy5BQ1RJT05fQlVUVE9OUyAmJlxyXG4gICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9PSBjb2x1bW5zVHlwZXMuUk9XX1NFTEVDVE9SXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2Vjb25kYXJ5LXRleHQtY29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb2x1bW4ubGFiZWwgfX0gOlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmltYXJ5LXRleHQtY29sb3IgZm9udC1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICA8YXBwLWNvcmUtdGFibGUtY2FyZC1tYW5hZ2VyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlICE9IGNvbHVtbnNUeXBlcy5NVUxUSV9DT0xVTU47XHJcbiAgICAgICAgICAgICAgICBlbHNlIGNhcmRNYW5hZ2VyRWxzZUJsb2NrXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbcm93U2VsZWN0b3JdPVwicm93U2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAgIChvbkNvbHVtbkNsaWNrZWQpPVwiY29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICBbYWxsVGFibGVEYXRhXT1cInNvcnRlZFRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvYXBwLWNvcmUtdGFibGUtY2FyZC1tYW5hZ2VyPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjYXJkTWFuYWdlckVsc2VCbG9jaz5cclxuICAgICAgICAgICAgICA8YXBwLWNvcmUtdGFibGUtY2FyZC1tYW5hZ2VyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGRDb2x1bW4gb2YgY29sdW1uLmNvbHVtbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd1NlbGVjdG9yXT1cInJvd1NlbGVjdG9yXCJcclxuICAgICAgICAgICAgICAgIChvbkNvbHVtbkNsaWNrZWQpPVwiY29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgW2FsbFRhYmxlRGF0YV09XCJzb3J0ZWRUYWJsZURhdGFcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjaGlsZENvbHVtblwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpID4gMFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9hcHAtY29yZS10YWJsZS1jYXJkLW1hbmFnZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY29yZS1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8Y29yZS10YWJsZS1uby1jb250ZW50XHJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcclxuICAgIFt0YWJsZURhdGFdPVwic29ydGVkVGFibGVEYXRhXCJcclxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gID48L2NvcmUtdGFibGUtbm8tY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS9jb3JlLXRhYmxlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDT0xVTU5TX1RZUEVTIH0gZnJvbSAnLi4vLi4vZmFsY29uVHlwZXMnO1xyXG5cclxudHlwZSBDb2x1bW5UeXBlVGV4dCA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlRFWFQ7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBjb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGRhdGE/OiB7XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgdHJ1ZSBhbmQgbnVtYmVycyB0dXJuIHRvIHBlcnNpYW4gRGlnaXRzICovXHJcbiAgICBlbkRpZ2l0c1RvRmE6IGJvb2xlYW47XHJcbiAgfTtcclxufTtcclxudHlwZSBDb2x1bW5UeXBlU2hhbXNpRGF0ZSA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlNIQU1TSV9EQVRFO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBkYXRhPzoge1xyXG4gICAgZGF0ZUZvcm1hdDogc3RyaW5nO1xyXG4gIH07XHJcbn07XHJcbnR5cGUgQ29sdW1uVHlwZURhdGUgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5EQVRFO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBkYXRhPzoge1xyXG4gICAgZGF0ZUZvcm1hdDogc3RyaW5nO1xyXG4gIH07XHJcbn07XHJcbnR5cGUgQ29sdW1uVHlwZVNlbGVjdG9yID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuU0VMRUNUT1I7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGRhdGE6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gIH07XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGZhbHNlO1xyXG59O1xyXG50eXBlIENvbHVtblR5cGVTZWxlY3RvckVkaXRhYmxlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuU0VMRUNUT1I7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGRhdGE6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICAgIGVkaXRhYmxlRGF0YTogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgfTtcclxuICBjb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlOiB0cnVlO1xyXG59O1xyXG50eXBlIENvbHVtblR5cGVTdGF0dXMgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5TVEFUVVMgfCBDT0xVTU5TX1RZUEVTLlNUQVRVU19BQ1RJVkU7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcclxufTtcclxudHlwZSBDb2x1bW5UeXBlQ29sb3IgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5DT0xPUjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgZWRpdGFibGU/OiBib29sZWFuO1xyXG59O1xyXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlQWN0aW9uID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuQUNUSU9OO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICB0aXRsZTogc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZUFjdGlvbkJ1dHRvbnMgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5BQ1RJT05fQlVUVE9OUztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgZGF0YToge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgZmlsdGVyPzogYW55O1xyXG4gICAgY29tcG9uZW50OiBhbnk7XHJcbiAgICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nO1xyXG4gICAgY2hhbmdlSWNvbj86IHtcclxuICAgICAgY29tcG9uZW50OiBhbnk7XHJcbiAgICAgIGtleTogc3RyaW5nO1xyXG4gICAgfTtcclxuICB9W107XHJcbn07XHJcbmV4cG9ydCB0eXBlIENvbHVtblR5cGVOdW1iZXIgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5OVU1CRVI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBjb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGNhbkNvbG9yZnVsTnVtYmVyPzogYm9vbGVhbjtcclxuICBkYXRhPzoge1xyXG4gICAgLyoqIGRlZmF1bHQgdmFsdWUgaXMgIHRydWUgYW5kIG51bWJlcnMgdHVybiB0byBwZXJzaWFuIERpZ2l0cyAqL1xyXG4gICAgZW5EaWdpdHNUb0ZhPzogYm9vbGVhbjtcclxuICAgIC8qKiBkZWZhdWx0IHZhbHVlIGlzICB0cnVlICAgKi9cclxuICAgIGNhblNob3dUb21hbkluVG9vbFRpcD86IGJvb2xlYW47XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgZmFsc2UgICovXHJcbiAgICBjYW5TaG93SVJSPzogYm9vbGVhbjtcclxuICAgIC8qKiBkZWZhdWx0IHZhbHVlIGlzICB0cnVlICAgKi9cclxuICAgIGNhblNwbGl0TnVtYmVycz86IGJvb2xlYW47XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgdHJ1ZSAgICovXHJcbiAgICBjYW5TaG93V29yZEluVG9vbFRpcD86IGJvb2xlYW47XHJcbiAgfTtcclxufTtcclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZVBlbGFrID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuUEVMQUs7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG59O1xyXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlRGV0YWlsVmlld2VyRm9yUmVwb3J0ID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuTlVNQkVSO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBkYXRhPzoge1xyXG4gICAgZGV0YWlsVmlld2Vyczogc3RyaW5nW107XHJcbiAgICBrZXlUeXBlOiBzdHJpbmc7XHJcbiAgICBvbkNsaWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlUm93U2VsZWN0b3IgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5ST1dfU0VMRUNUT1I7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGRhdGE6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlTXVsdGlDb2x1bW4gPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5NVUxUSV9DT0xVTU47XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGNvbHVtbnM6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdHlwZTogQ09MVU1OU19UWVBFUy5TRUxFQ1RPUjtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIGtleTogc3RyaW5nO1xyXG4gICAgfTtcclxuICB9W107XHJcbn07XHJcbmV4cG9ydCB0eXBlIENvbHVtbnNTY2hlbWEgPVxyXG4gIHwgQ29sdW1uVHlwZVRleHRcclxuICB8IENvbHVtblR5cGVTZWxlY3RvclxyXG4gIHwgQ29sdW1uVHlwZVNlbGVjdG9yRWRpdGFibGVcclxuICB8IENvbHVtblR5cGVTdGF0dXNcclxuICB8IENvbHVtblR5cGVDb2xvclxyXG4gIHwgQ29sdW1uVHlwZUFjdGlvblxyXG4gIHwgQ29sdW1uVHlwZUFjdGlvbkJ1dHRvbnNcclxuICB8IENvbHVtblR5cGVOdW1iZXJcclxuICB8IENvbHVtblR5cGVSb3dTZWxlY3RvclxyXG4gIHwgQ29sdW1uVHlwZU11bHRpQ29sdW1uXHJcbiAgfCBDb2x1bW5UeXBlUGVsYWtcclxuICB8IENvbHVtblR5cGVTaGFtc2lEYXRlXHJcbiAgfCBDb2x1bW5UeXBlRGF0ZTtcclxuXHJcbmV4cG9ydCB0eXBlIFNjaGVtYVJpZ2h0Q2xpY2sgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxufTtcclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS9jb3JlLXRhYmxlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDT0xVTU5TX1RZUEVTIH0gZnJvbSAnLi4vLi4vZmFsY29uVHlwZXMnO1xyXG5cclxudHlwZSBDb2x1bW5UeXBlVGV4dCA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlRFWFQ7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBjb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGRhdGE/OiB7XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgdHJ1ZSBhbmQgbnVtYmVycyB0dXJuIHRvIHBlcnNpYW4gRGlnaXRzICovXHJcbiAgICBlbkRpZ2l0c1RvRmE6IGJvb2xlYW47XHJcbiAgfTtcclxufTtcclxudHlwZSBDb2x1bW5UeXBlUHJlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuUFJFO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBkYXRhPzoge1xyXG4gICAgLyoqIGRlZmF1bHQgdmFsdWUgaXMgIHRydWUgYW5kIG51bWJlcnMgdHVybiB0byBwZXJzaWFuIERpZ2l0cyAqL1xyXG4gICAgZW5EaWdpdHNUb0ZhOiBib29sZWFuO1xyXG4gIH07XHJcbn07XHJcbnR5cGUgQ29sdW1uVHlwZVNoYW1zaURhdGUgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdHlwZTogQ09MVU1OU19UWVBFUy5TSEFNU0lfREFURTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XHJcbiAgZWRpdGFibGU/OiBib29sZWFuO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgZGF0YT86IHtcclxuICAgIGRhdGVGb3JtYXQ6IHN0cmluZztcclxuICB9O1xyXG59O1xyXG50eXBlIENvbHVtblR5cGVEYXRlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuREFURTtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XHJcbiAgZWRpdGFibGU/OiBib29sZWFuO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgZGF0YT86IHtcclxuICAgIGRhdGVGb3JtYXQ6IHN0cmluZztcclxuICB9O1xyXG59O1xyXG50eXBlIENvbHVtblR5cGVTZWxlY3RvciA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlNFTEVDVE9SO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBkYXRhOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICB9O1xyXG4gIGNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XHJcbiAgZWRpdGFibGU/OiBmYWxzZTtcclxufTtcclxudHlwZSBDb2x1bW5UeXBlU2VsZWN0b3JFZGl0YWJsZSA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlNFTEVDVE9SO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBkYXRhOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgICBlZGl0YWJsZURhdGE6IE9ic2VydmFibGU8YW55W10+O1xyXG4gIH07XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZTogdHJ1ZTtcclxufTtcclxudHlwZSBDb2x1bW5UeXBlU3RhdHVzID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuU1RBVFVTIHwgQ09MVU1OU19UWVBFUy5TVEFUVVNfQUNUSVZFO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbn07XHJcbnR5cGUgQ29sdW1uVHlwZUNvbG9yID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuQ09MT1I7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcclxufTtcclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZUFjdGlvbiA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLkFDVElPTjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgdGl0bGU6IHN0cmluZztcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENvbHVtblR5cGVBY3Rpb25CdXR0b25zID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuQUNUSU9OX0JVVFRPTlM7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBhY3RpdmU/OiBib29sZWFuO1xyXG4gIHdpZHRoPzogbnVtYmVyO1xyXG4gIGRhdGE6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGZpbHRlcj86IGFueTtcclxuICAgIGNvbXBvbmVudDogYW55O1xyXG4gICAga2V5Ym9hcmRTaG9ydGN1dD86IHN0cmluZztcclxuICAgIGNoYW5nZUljb24/OiB7XHJcbiAgICAgIGNvbXBvbmVudDogYW55O1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgIH07XHJcbiAgfVtdO1xyXG59O1xyXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlTnVtYmVyID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuTlVNQkVSO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgY29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBjYW5Db2xvcmZ1bE51bWJlcj86IGJvb2xlYW47XHJcbiAgZGF0YT86IHtcclxuICAgIC8qKiBkZWZhdWx0IHZhbHVlIGlzICB0cnVlIGFuZCBudW1iZXJzIHR1cm4gdG8gcGVyc2lhbiBEaWdpdHMgKi9cclxuICAgIGVuRGlnaXRzVG9GYT86IGJvb2xlYW47XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgdHJ1ZSAgICovXHJcbiAgICBjYW5TaG93VG9tYW5JblRvb2xUaXA/OiBib29sZWFuO1xyXG4gICAgLyoqIGRlZmF1bHQgdmFsdWUgaXMgIGZhbHNlICAqL1xyXG4gICAgY2FuU2hvd0lSUj86IGJvb2xlYW47XHJcbiAgICAvKiogZGVmYXVsdCB2YWx1ZSBpcyAgdHJ1ZSAgICovXHJcbiAgICBjYW5TcGxpdE51bWJlcnM/OiBib29sZWFuO1xyXG4gICAgLyoqIGRlZmF1bHQgdmFsdWUgaXMgIHRydWUgICAqL1xyXG4gICAgY2FuU2hvd1dvcmRJblRvb2xUaXA/OiBib29sZWFuO1xyXG4gIH07XHJcbn07XHJcbmV4cG9ydCB0eXBlIENvbHVtblR5cGVQZWxhayA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLlBFTEFLO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxufTtcclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZURldGFpbFZpZXdlckZvclJlcG9ydCA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiBDT0xVTU5TX1RZUEVTLk5VTUJFUjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGFjdGl2ZT86IGJvb2xlYW47XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgZGF0YT86IHtcclxuICAgIGRldGFpbFZpZXdlcnM6IHN0cmluZ1tdO1xyXG4gICAga2V5VHlwZTogc3RyaW5nO1xyXG4gICAgb25DbGljazogKGRhdGE6IGFueSkgPT4gdm9pZDtcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZVJvd1NlbGVjdG9yID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuUk9XX1NFTEVDVE9SO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICB3aWR0aD86IG51bWJlcjtcclxuICBkYXRhOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZU11bHRpQ29sdW1uID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHR5cGU6IENPTFVNTlNfVFlQRVMuTVVMVElfQ09MVU1OO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBjb2x1bW5zOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHR5cGU6IENPTFVNTlNfVFlQRVMuU0VMRUNUT1I7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgZGF0YToge1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgIH07XHJcbiAgfVtdO1xyXG59O1xyXG5leHBvcnQgdHlwZSBDb2x1bW5zU2NoZW1hID1cclxuICB8IENvbHVtblR5cGVUZXh0XHJcbiAgfCBDb2x1bW5UeXBlUHJlXHJcbiAgfCBDb2x1bW5UeXBlU2VsZWN0b3JcclxuICB8IENvbHVtblR5cGVTZWxlY3RvckVkaXRhYmxlXHJcbiAgfCBDb2x1bW5UeXBlU3RhdHVzXHJcbiAgfCBDb2x1bW5UeXBlQ29sb3JcclxuICB8IENvbHVtblR5cGVBY3Rpb25cclxuICB8IENvbHVtblR5cGVBY3Rpb25CdXR0b25zXHJcbiAgfCBDb2x1bW5UeXBlTnVtYmVyXHJcbiAgfCBDb2x1bW5UeXBlUm93U2VsZWN0b3JcclxuICB8IENvbHVtblR5cGVNdWx0aUNvbHVtblxyXG4gIHwgQ29sdW1uVHlwZVBlbGFrXHJcbiAgfCBDb2x1bW5UeXBlU2hhbXNpRGF0ZVxyXG4gIHwgQ29sdW1uVHlwZURhdGU7XHJcblxyXG5leHBvcnQgdHlwZSBTY2hlbWFSaWdodENsaWNrID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbn07XHJcbiJdfQ==
@@ -7,16 +7,17 @@ import * as i3 from "../core-table-color-column/core-table-color-column.componen
7
7
  import * as i4 from "../core-table-action-buttons-column/core-table-action-buttons-column.component";
8
8
  import * as i5 from "../core-table-action-column/core-table-action-column.component";
9
9
  import * as i6 from "../core-table-text-column/core-table-text-column.component";
10
- import * as i7 from "../core-table-number-column/core-table-number-column.component";
11
- import * as i8 from "../core-table-selector-column/core-table-selector-column.component";
12
- import * as i9 from "../core-table-row-selector-column/core-table-row-selector-column.component";
13
- import * as i10 from "../core-table-shamsi-date/core-table-shamsi-date.component";
14
- import * as i11 from "../core-table-date/core-table-date.component";
15
- import * as i12 from "../core-table-status-column/core-table-status-column.component";
16
- import * as i13 from "../../../utils/directives/table-detail-viewer-manager.directive";
17
- import * as i14 from "../core-table-status-active-column/core-table-status-active-column.component";
18
- import * as i15 from "../core-row-pelak/core-row-pelak.component";
19
- import * as i16 from "../core-table-detail-viewer-for-report/core-table-detail-viewer-for-report.component";
10
+ import * as i7 from "../core-table-pre-column/core-table-pre-column.component";
11
+ import * as i8 from "../core-table-number-column/core-table-number-column.component";
12
+ import * as i9 from "../core-table-selector-column/core-table-selector-column.component";
13
+ import * as i10 from "../core-table-row-selector-column/core-table-row-selector-column.component";
14
+ import * as i11 from "../core-table-shamsi-date/core-table-shamsi-date.component";
15
+ import * as i12 from "../core-table-date/core-table-date.component";
16
+ import * as i13 from "../core-table-status-column/core-table-status-column.component";
17
+ import * as i14 from "../../../utils/directives/table-detail-viewer-manager.directive";
18
+ import * as i15 from "../core-table-status-active-column/core-table-status-active-column.component";
19
+ import * as i16 from "../core-row-pelak/core-row-pelak.component";
20
+ import * as i17 from "../core-table-detail-viewer-for-report/core-table-detail-viewer-for-report.component";
20
21
  export class CoreTableColumnManagerComponent {
21
22
  get columnsTypes() {
22
23
  return COLUMNS_TYPES;
@@ -69,11 +70,11 @@ export class CoreTableColumnManagerComponent {
69
70
  };
70
71
  }
71
72
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTableColumnManagerComponent, deps: [{ token: i1.NiraSnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreTableColumnManagerComponent, selector: "app-core-table-column-manager", inputs: { data: "data", column: "column", allTableData: "allTableData", rowSelector: "rowSelector" }, outputs: { onColumnClicked: "onColumnClicked", onColumnValueChanged: "onColumnValueChanged" }, ngImport: i0, template: "<container-element [ngSwitch]=\"column.type\">\r\n <ng-content></ng-content>\r\n\r\n <app-core-table-row-selector-column\r\n *ngSwitchCase=\"columnsTypes.ROW_SELECTOR\"\r\n [rowSelector]=\"rowSelector\"\r\n [data]=\"data\"\r\n [allTableData]=\"allTableData\"\r\n [column]=\"column\"\r\n ></app-core-table-row-selector-column>\r\n <app-core-table-status-active-column\r\n *ngSwitchCase=\"columnsTypes.STATUS_ACTIVE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n ></app-core-table-status-active-column>\r\n\r\n <app-core-table-status-column\r\n *ngSwitchCase=\"columnsTypes.STATUS\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-status-column>\r\n <app-core-table-action-column\r\n *ngSwitchCase=\"columnsTypes.ACTION\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-column>\r\n <app-core-table-action-buttons-column\r\n *ngSwitchCase=\"columnsTypes.ACTION_BUTTONS\"\r\n (onClick)=\"clicked($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-buttons-column>\r\n <app-core-table-shamsi-date\r\n *ngSwitchCase=\"columnsTypes.SHAMSI_DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-shamsi-date>\r\n <app-core-table-date\r\n *ngSwitchCase=\"columnsTypes.DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-date>\r\n\r\n <core-table-color-column\r\n *ngSwitchCase=\"columnsTypes.COLOR\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-color-column>\r\n <app-core-row-pelak\r\n *ngSwitchCase=\"columnsTypes.PELAK\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-row-pelak>\r\n <core-table-detail-viewer-for-report\r\n *ngSwitchCase=\"columnsTypes.DETAIL_VIEWER_FOR_REPORT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-detail-viewer-for-report>\r\n\r\n <core-table-text-column\r\n *ngSwitchCase=\"columnsTypes.TEXT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-text-column>\r\n\r\n <core-table-number-column\r\n *ngSwitchCase=\"columnsTypes.NUMBER\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-number-column>\r\n\r\n <core-table-selector-column\r\n *ngSwitchCase=\"columnsTypes.SELECTOR\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(\r\n column.detailViewer,\r\n getSelectorData(\r\n data[column.key.split('.')[0]],\r\n column.detailViewer?.key\r\n )\r\n )\r\n \"\r\n >\r\n </core-table-selector-column>\r\n</container-element>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.CoreTableColorColumnComponent, selector: "core-table-color-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i4.CoreTableActionButtonsColumnComponent, selector: "app-core-table-action-buttons-column", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i5.CoreTableActionColumnComponent, selector: "app-core-table-action-column", inputs: ["data", "column"] }, { kind: "component", type: i6.CoreTableTextColumnComponent, selector: "core-table-text-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i7.CoreTableNumberColumnComponent, selector: "core-table-number-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i8.CoreTableSelectorColumnComponent, selector: "core-table-selector-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i9.CoreTableRowSelectorColumnComponent, selector: "app-core-table-row-selector-column", inputs: ["data", "column", "allTableData", "rowSelector"] }, { kind: "component", type: i10.CoreTableShamsiDateComponent, selector: "app-core-table-shamsi-date", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i11.CoreTableDateComponent, selector: "app-core-table-date", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i12.CoreTableStatusColumnComponent, selector: "app-core-table-status-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "directive", type: i13.TableDetailViewerManagerDirective, selector: "[tableDetailViewerManager]", inputs: ["detailViewerData"] }, { kind: "component", type: i14.CoreTableStatusActiveColumnComponent, selector: "app-core-table-status-active-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i15.CoreRowPelakComponent, selector: "app-core-row-pelak", inputs: ["data", "column"] }, { kind: "component", type: i16.CoreTableDetailViewerForReportComponent, selector: "core-table-detail-viewer-for-report", inputs: ["data", "column"] }] }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreTableColumnManagerComponent, selector: "app-core-table-column-manager", inputs: { data: "data", column: "column", allTableData: "allTableData", rowSelector: "rowSelector" }, outputs: { onColumnClicked: "onColumnClicked", onColumnValueChanged: "onColumnValueChanged" }, ngImport: i0, template: "<container-element [ngSwitch]=\"column.type\">\r\n <ng-content></ng-content>\r\n\r\n <app-core-table-row-selector-column\r\n *ngSwitchCase=\"columnsTypes.ROW_SELECTOR\"\r\n [rowSelector]=\"rowSelector\"\r\n [data]=\"data\"\r\n [allTableData]=\"allTableData\"\r\n [column]=\"column\"\r\n ></app-core-table-row-selector-column>\r\n <app-core-table-status-active-column\r\n *ngSwitchCase=\"columnsTypes.STATUS_ACTIVE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n ></app-core-table-status-active-column>\r\n\r\n <app-core-table-status-column\r\n *ngSwitchCase=\"columnsTypes.STATUS\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-status-column>\r\n <app-core-table-action-column\r\n *ngSwitchCase=\"columnsTypes.ACTION\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-column>\r\n <app-core-table-action-buttons-column\r\n *ngSwitchCase=\"columnsTypes.ACTION_BUTTONS\"\r\n (onClick)=\"clicked($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-buttons-column>\r\n <app-core-table-shamsi-date\r\n *ngSwitchCase=\"columnsTypes.SHAMSI_DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-shamsi-date>\r\n <app-core-table-date\r\n *ngSwitchCase=\"columnsTypes.DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-date>\r\n\r\n <core-table-color-column\r\n *ngSwitchCase=\"columnsTypes.COLOR\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-color-column>\r\n <app-core-row-pelak\r\n *ngSwitchCase=\"columnsTypes.PELAK\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-row-pelak>\r\n <core-table-detail-viewer-for-report\r\n *ngSwitchCase=\"columnsTypes.DETAIL_VIEWER_FOR_REPORT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-detail-viewer-for-report>\r\n\r\n <core-table-text-column\r\n *ngSwitchCase=\"columnsTypes.TEXT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-text-column>\r\n\r\n <core-table-pre-column\r\n *ngSwitchCase=\"columnsTypes.PRE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-pre-column>\r\n\r\n <core-table-number-column\r\n *ngSwitchCase=\"columnsTypes.NUMBER\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-number-column>\r\n\r\n <core-table-selector-column\r\n *ngSwitchCase=\"columnsTypes.SELECTOR\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(\r\n column.detailViewer,\r\n getSelectorData(\r\n data[column.key.split('.')[0]],\r\n column.detailViewer?.key\r\n )\r\n )\r\n \"\r\n >\r\n </core-table-selector-column>\r\n</container-element>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.CoreTableColorColumnComponent, selector: "core-table-color-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i4.CoreTableActionButtonsColumnComponent, selector: "app-core-table-action-buttons-column", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i5.CoreTableActionColumnComponent, selector: "app-core-table-action-column", inputs: ["data", "column"] }, { kind: "component", type: i6.CoreTableTextColumnComponent, selector: "core-table-text-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i7.CoreTablePreColumnComponent, selector: "core-table-pre-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i8.CoreTableNumberColumnComponent, selector: "core-table-number-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i9.CoreTableSelectorColumnComponent, selector: "core-table-selector-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i10.CoreTableRowSelectorColumnComponent, selector: "app-core-table-row-selector-column", inputs: ["data", "column", "allTableData", "rowSelector"] }, { kind: "component", type: i11.CoreTableShamsiDateComponent, selector: "app-core-table-shamsi-date", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i12.CoreTableDateComponent, selector: "app-core-table-date", inputs: ["data", "column"], outputs: ["onClick"] }, { kind: "component", type: i13.CoreTableStatusColumnComponent, selector: "app-core-table-status-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "directive", type: i14.TableDetailViewerManagerDirective, selector: "[tableDetailViewerManager]", inputs: ["detailViewerData"] }, { kind: "component", type: i15.CoreTableStatusActiveColumnComponent, selector: "app-core-table-status-active-column", inputs: ["data", "column"], outputs: ["onColumnValueChanged"] }, { kind: "component", type: i16.CoreRowPelakComponent, selector: "app-core-row-pelak", inputs: ["data", "column"] }, { kind: "component", type: i17.CoreTableDetailViewerForReportComponent, selector: "core-table-detail-viewer-for-report", inputs: ["data", "column"] }] }); }
73
74
  }
74
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTableColumnManagerComponent, decorators: [{
75
76
  type: Component,
76
- args: [{ selector: 'app-core-table-column-manager', template: "<container-element [ngSwitch]=\"column.type\">\r\n <ng-content></ng-content>\r\n\r\n <app-core-table-row-selector-column\r\n *ngSwitchCase=\"columnsTypes.ROW_SELECTOR\"\r\n [rowSelector]=\"rowSelector\"\r\n [data]=\"data\"\r\n [allTableData]=\"allTableData\"\r\n [column]=\"column\"\r\n ></app-core-table-row-selector-column>\r\n <app-core-table-status-active-column\r\n *ngSwitchCase=\"columnsTypes.STATUS_ACTIVE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n ></app-core-table-status-active-column>\r\n\r\n <app-core-table-status-column\r\n *ngSwitchCase=\"columnsTypes.STATUS\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-status-column>\r\n <app-core-table-action-column\r\n *ngSwitchCase=\"columnsTypes.ACTION\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-column>\r\n <app-core-table-action-buttons-column\r\n *ngSwitchCase=\"columnsTypes.ACTION_BUTTONS\"\r\n (onClick)=\"clicked($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-buttons-column>\r\n <app-core-table-shamsi-date\r\n *ngSwitchCase=\"columnsTypes.SHAMSI_DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-shamsi-date>\r\n <app-core-table-date\r\n *ngSwitchCase=\"columnsTypes.DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-date>\r\n\r\n <core-table-color-column\r\n *ngSwitchCase=\"columnsTypes.COLOR\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-color-column>\r\n <app-core-row-pelak\r\n *ngSwitchCase=\"columnsTypes.PELAK\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-row-pelak>\r\n <core-table-detail-viewer-for-report\r\n *ngSwitchCase=\"columnsTypes.DETAIL_VIEWER_FOR_REPORT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-detail-viewer-for-report>\r\n\r\n <core-table-text-column\r\n *ngSwitchCase=\"columnsTypes.TEXT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-text-column>\r\n\r\n <core-table-number-column\r\n *ngSwitchCase=\"columnsTypes.NUMBER\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-number-column>\r\n\r\n <core-table-selector-column\r\n *ngSwitchCase=\"columnsTypes.SELECTOR\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(\r\n column.detailViewer,\r\n getSelectorData(\r\n data[column.key.split('.')[0]],\r\n column.detailViewer?.key\r\n )\r\n )\r\n \"\r\n >\r\n </core-table-selector-column>\r\n</container-element>\r\n" }]
77
+ args: [{ selector: 'app-core-table-column-manager', template: "<container-element [ngSwitch]=\"column.type\">\r\n <ng-content></ng-content>\r\n\r\n <app-core-table-row-selector-column\r\n *ngSwitchCase=\"columnsTypes.ROW_SELECTOR\"\r\n [rowSelector]=\"rowSelector\"\r\n [data]=\"data\"\r\n [allTableData]=\"allTableData\"\r\n [column]=\"column\"\r\n ></app-core-table-row-selector-column>\r\n <app-core-table-status-active-column\r\n *ngSwitchCase=\"columnsTypes.STATUS_ACTIVE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n ></app-core-table-status-active-column>\r\n\r\n <app-core-table-status-column\r\n *ngSwitchCase=\"columnsTypes.STATUS\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-status-column>\r\n <app-core-table-action-column\r\n *ngSwitchCase=\"columnsTypes.ACTION\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-column>\r\n <app-core-table-action-buttons-column\r\n *ngSwitchCase=\"columnsTypes.ACTION_BUTTONS\"\r\n (onClick)=\"clicked($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-table-action-buttons-column>\r\n <app-core-table-shamsi-date\r\n *ngSwitchCase=\"columnsTypes.SHAMSI_DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-shamsi-date>\r\n <app-core-table-date\r\n *ngSwitchCase=\"columnsTypes.DATE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n >\r\n </app-core-table-date>\r\n\r\n <core-table-color-column\r\n *ngSwitchCase=\"columnsTypes.COLOR\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-color-column>\r\n <app-core-row-pelak\r\n *ngSwitchCase=\"columnsTypes.PELAK\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></app-core-row-pelak>\r\n <core-table-detail-viewer-for-report\r\n *ngSwitchCase=\"columnsTypes.DETAIL_VIEWER_FOR_REPORT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n ></core-table-detail-viewer-for-report>\r\n\r\n <core-table-text-column\r\n *ngSwitchCase=\"columnsTypes.TEXT\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-text-column>\r\n\r\n <core-table-pre-column\r\n *ngSwitchCase=\"columnsTypes.PRE\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-pre-column>\r\n\r\n <core-table-number-column\r\n *ngSwitchCase=\"columnsTypes.NUMBER\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(column.detailViewer, data[column.detailViewer?.key])\r\n \"\r\n >\r\n </core-table-number-column>\r\n\r\n <core-table-selector-column\r\n *ngSwitchCase=\"columnsTypes.SELECTOR\"\r\n [data]=\"data\"\r\n [column]=\"column\"\r\n (onColumnValueChanged)=\"columnValueChanged($event)\"\r\n tableDetailViewerManager\r\n [detailViewerData]=\"\r\n combinedData(\r\n column.detailViewer,\r\n getSelectorData(\r\n data[column.key.split('.')[0]],\r\n column.detailViewer?.key\r\n )\r\n )\r\n \"\r\n >\r\n </core-table-selector-column>\r\n</container-element>\r\n" }]
77
78
  }], ctorParameters: function () { return [{ type: i1.NiraSnackBarService }]; }, propDecorators: { data: [{
78
79
  type: Input,
79
80
  args: [{ required: true }]
@@ -91,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
91
92
  }], onColumnValueChanged: [{
92
93
  type: Output
93
94
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS10YWJsZS9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyL2NvcmUtdGFibGUtY29sdW1uLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPbEQsTUFBTSxPQUFPLCtCQUErQjtJQVMxQyxJQUFJLFlBQVk7UUFDZCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBUnpCLGdCQUFXLEdBQ3JDLFNBQVMsQ0FBQztRQUNGLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFLZixDQUFDO0lBQ3pELGVBQWUsQ0FBQyxJQUFTLEVBQUUsR0FBVztRQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdkIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sT0FBTyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUNELG1CQUFtQixDQUFDLE1BQVcsRUFBRSxJQUFZO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtZQUFFLE9BQU87UUFDcEMsU0FBUyxDQUFDLFNBQVM7YUFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQzthQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3pDLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBUTtRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxHQUFRO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFlBQVksQ0FBQyxZQUFpQixFQUFFLElBQVM7UUFDdkMsT0FBTztZQUNMLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztJQUNKLENBQUM7K0dBcERVLCtCQUErQjttR0FBL0IsK0JBQStCLDBRQ1Y1QyxxMEdBMEdBOzs0RkRoR2EsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLCtCQUErQjswR0FLZCxJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxZQUFZO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRyxXQUFXO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFFaEIsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOaXJhU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnbmlyYS1zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ09MVU1OU19UWVBFUyB9IGZyb20gJy4uLy4uL2ZhbGNvblR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvcmUtdGFibGUtY29sdW1uLW1hbmFnZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb2x1bW5NYW5hZ2VyQ29tcG9uZW50IHtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBkYXRhITogYW55O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbHVtbiE6IGFueTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhbGxUYWJsZURhdGEhOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIHJvd1NlbGVjdG9yOiBCZWhhdmlvclN1YmplY3Q8YW55PiB8IHVuZGVmaW5lZCA9XHJcbiAgICB1bmRlZmluZWQ7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZ2V0IGNvbHVtbnNUeXBlcygpIHtcclxuICAgIHJldHVybiBDT0xVTU5TX1RZUEVTO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5pcmFTbmFja0JhcjogTmlyYVNuYWNrQmFyU2VydmljZSkge31cclxuICBnZXRTZWxlY3RvckRhdGEoZGF0YTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgaWYgKCFrZXkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgcmV0dXJuIGRhdGFba2V5XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdEYXRhID0gZGF0YTtcclxuICAgICAgc3BsaXQuZm9yRWFjaCgobmV3S2V5KSA9PiB7XHJcbiAgICAgICAgbmV3RGF0YSA9IG5ld0RhdGFbbmV3S2V5XTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0YTtcclxuICAgIH1cclxuICB9XHJcbiAgb25UZXh0Q29sdW1uQ2xpY2tlZChjb2x1bW46IGFueSwgZGF0YTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWNvbHVtbi5jb3B5VG9DbGlwYm9hcmQpIHJldHVybjtcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcclxuICAgICAgLndyaXRlVGV4dChkYXRhKVxyXG4gICAgICAudGhlbigoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMubmlyYVNuYWNrQmFyLnNob3coJ9io2Kcg2YXZiNmB2YLbjNiqINqp2b7bjCDYtNivJywge1xyXG4gICAgICAgICAgc3RhdHVzQ2xhc3M6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xyXG4gIH1cclxuICBjbGlja2VkKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ29sdW1uQ2xpY2tlZC5lbWl0KHZhbCk7XHJcbiAgfVxyXG4gIGNvbHVtblZhbHVlQ2hhbmdlZCh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5vbkNvbHVtblZhbHVlQ2hhbmdlZC5lbWl0KHZhbCk7XHJcbiAgfVxyXG4gIGNvbWJpbmVkRGF0YShkZXRhaWxWaWV3ZXI6IGFueSwgZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZXRhaWxWaWV3ZXI6IGRldGFpbFZpZXdlcixcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxjb250YWluZXItZWxlbWVudCBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIj5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG4gIDxhcHAtY29yZS10YWJsZS1yb3ctc2VsZWN0b3ItY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlJPV19TRUxFQ1RPUlwiXHJcbiAgICBbcm93U2VsZWN0b3JdPVwicm93U2VsZWN0b3JcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbYWxsVGFibGVEYXRhXT1cImFsbFRhYmxlRGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPjwvYXBwLWNvcmUtdGFibGUtcm93LXNlbGVjdG9yLWNvbHVtbj5cclxuICA8YXBwLWNvcmUtdGFibGUtc3RhdHVzLWFjdGl2ZS1jb2x1bW5cclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuU1RBVFVTX0FDVElWRVwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgIChvbkNvbHVtblZhbHVlQ2hhbmdlZCk9XCJjb2x1bW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgPjwvYXBwLWNvcmUtdGFibGUtc3RhdHVzLWFjdGl2ZS1jb2x1bW4+XHJcblxyXG4gIDxhcHAtY29yZS10YWJsZS1zdGF0dXMtY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlNUQVRVU1wiXHJcbiAgICAob25Db2x1bW5WYWx1ZUNoYW5nZWQpPVwiY29sdW1uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPjwvYXBwLWNvcmUtdGFibGUtc3RhdHVzLWNvbHVtbj5cclxuICA8YXBwLWNvcmUtdGFibGUtYWN0aW9uLWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5BQ1RJT05cIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPjwvYXBwLWNvcmUtdGFibGUtYWN0aW9uLWNvbHVtbj5cclxuICA8YXBwLWNvcmUtdGFibGUtYWN0aW9uLWJ1dHRvbnMtY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLkFDVElPTl9CVVRUT05TXCJcclxuICAgIChvbkNsaWNrKT1cImNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICA+PC9hcHAtY29yZS10YWJsZS1hY3Rpb24tYnV0dG9ucy1jb2x1bW4+XHJcbiAgPGFwcC1jb3JlLXRhYmxlLXNoYW1zaS1kYXRlXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlNIQU1TSV9EQVRFXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID5cclxuICA8L2FwcC1jb3JlLXRhYmxlLXNoYW1zaS1kYXRlPlxyXG4gIDxhcHAtY29yZS10YWJsZS1kYXRlXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLkRBVEVcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPlxyXG4gIDwvYXBwLWNvcmUtdGFibGUtZGF0ZT5cclxuXHJcbiAgPGNvcmUtdGFibGUtY29sb3ItY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLkNPTE9SXCJcclxuICAgIChvbkNvbHVtblZhbHVlQ2hhbmdlZCk9XCJjb2x1bW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICA+PC9jb3JlLXRhYmxlLWNvbG9yLWNvbHVtbj5cclxuICA8YXBwLWNvcmUtcm93LXBlbGFrXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlBFTEFLXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID48L2FwcC1jb3JlLXJvdy1wZWxhaz5cclxuICA8Y29yZS10YWJsZS1kZXRhaWwtdmlld2VyLWZvci1yZXBvcnRcclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuREVUQUlMX1ZJRVdFUl9GT1JfUkVQT1JUXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID48L2NvcmUtdGFibGUtZGV0YWlsLXZpZXdlci1mb3ItcmVwb3J0PlxyXG5cclxuICA8Y29yZS10YWJsZS10ZXh0LWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5URVhUXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIHRhYmxlRGV0YWlsVmlld2VyTWFuYWdlclxyXG4gICAgW2RldGFpbFZpZXdlckRhdGFdPVwiXHJcbiAgICAgIGNvbWJpbmVkRGF0YShjb2x1bW4uZGV0YWlsVmlld2VyLCBkYXRhW2NvbHVtbi5kZXRhaWxWaWV3ZXI/LmtleV0pXHJcbiAgICBcIlxyXG4gID5cclxuICA8L2NvcmUtdGFibGUtdGV4dC1jb2x1bW4+XHJcblxyXG4gIDxjb3JlLXRhYmxlLW51bWJlci1jb2x1bW5cclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuTlVNQkVSXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIHRhYmxlRGV0YWlsVmlld2VyTWFuYWdlclxyXG4gICAgW2RldGFpbFZpZXdlckRhdGFdPVwiXHJcbiAgICAgIGNvbWJpbmVkRGF0YShjb2x1bW4uZGV0YWlsVmlld2VyLCBkYXRhW2NvbHVtbi5kZXRhaWxWaWV3ZXI/LmtleV0pXHJcbiAgICBcIlxyXG4gID5cclxuICA8L2NvcmUtdGFibGUtbnVtYmVyLWNvbHVtbj5cclxuXHJcbiAgPGNvcmUtdGFibGUtc2VsZWN0b3ItY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlNFTEVDVE9SXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIHRhYmxlRGV0YWlsVmlld2VyTWFuYWdlclxyXG4gICAgW2RldGFpbFZpZXdlckRhdGFdPVwiXHJcbiAgICAgIGNvbWJpbmVkRGF0YShcclxuICAgICAgICBjb2x1bW4uZGV0YWlsVmlld2VyLFxyXG4gICAgICAgIGdldFNlbGVjdG9yRGF0YShcclxuICAgICAgICAgIGRhdGFbY29sdW1uLmtleS5zcGxpdCgnLicpWzBdXSxcclxuICAgICAgICAgIGNvbHVtbi5kZXRhaWxWaWV3ZXI/LmtleVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgXCJcclxuICA+XHJcbiAgPC9jb3JlLXRhYmxlLXNlbGVjdG9yLWNvbHVtbj5cclxuPC9jb250YWluZXItZWxlbWVudD5cclxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS10YWJsZS9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyL2NvcmUtdGFibGUtY29sdW1uLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci9jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2xELE1BQU0sT0FBTywrQkFBK0I7SUFTMUMsSUFBSSxZQUFZO1FBQ2QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUNELFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQVJ6QixnQkFBVyxHQUNyQyxTQUFTLENBQUM7UUFDRixvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBS2YsQ0FBQztJQUN6RCxlQUFlLENBQUMsSUFBUyxFQUFFLEdBQVc7UUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNMLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3ZCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtJQUNILENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxNQUFXLEVBQUUsSUFBWTtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBQ3BDLFNBQVMsQ0FBQyxTQUFTO2FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUM7YUFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUN6QyxXQUFXLEVBQUUsU0FBUztnQkFDdEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQVE7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsR0FBUTtRQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxZQUFZLENBQUMsWUFBaUIsRUFBRSxJQUFTO1FBQ3ZDLE9BQU87WUFDTCxZQUFZLEVBQUUsWUFBWTtZQUMxQixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7SUFDSixDQUFDOytHQXBEVSwrQkFBK0I7bUdBQS9CLCtCQUErQiwwUUNWNUMscXJIQXNIQTs7NEZENUdhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSwrQkFBK0I7MEdBS2QsSUFBSTtzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsWUFBWTtzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0csV0FBVztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBRWhCLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmlyYVNuYWNrQmFyU2VydmljZSB9IGZyb20gJ25pcmEtc25hY2stYmFyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENPTFVNTlNfVFlQRVMgfSBmcm9tICcuLi8uLi9mYWxjb25UeXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jb3JlLXRhYmxlLWNvbHVtbi1tYW5hZ2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS1jb2x1bW4tbWFuYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVRhYmxlQ29sdW1uTWFuYWdlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YSE6IGFueTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW4hOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYWxsVGFibGVEYXRhITogYW55O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSByb3dTZWxlY3RvcjogQmVoYXZpb3JTdWJqZWN0PGFueT4gfCB1bmRlZmluZWQgPVxyXG4gICAgdW5kZWZpbmVkO1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGdldCBjb2x1bW5zVHlwZXMoKSB7XHJcbiAgICByZXR1cm4gQ09MVU1OU19UWVBFUztcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuaXJhU25hY2tCYXI6IE5pcmFTbmFja0JhclNlcnZpY2UpIHt9XHJcbiAgZ2V0U2VsZWN0b3JEYXRhKGRhdGE6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGNvbnN0IHNwbGl0ID0ga2V5LnNwbGl0KCcuJyk7XHJcbiAgICBpZiAoc3BsaXQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBkYXRhW2tleV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbmV3RGF0YSA9IGRhdGE7XHJcbiAgICAgIHNwbGl0LmZvckVhY2goKG5ld0tleSkgPT4ge1xyXG4gICAgICAgIG5ld0RhdGEgPSBuZXdEYXRhW25ld0tleV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVGV4dENvbHVtbkNsaWNrZWQoY29sdW1uOiBhbnksIGRhdGE6IHN0cmluZykge1xyXG4gICAgaWYgKCFjb2x1bW4uY29weVRvQ2xpcGJvYXJkKSByZXR1cm47XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkXHJcbiAgICAgIC53cml0ZVRleHQoZGF0YSlcclxuICAgICAgLnRoZW4oKGUpID0+IHtcclxuICAgICAgICB0aGlzLm5pcmFTbmFja0Jhci5zaG93KCfYqNinINmF2YjZgdmC24zYqiDaqdm+24wg2LTYrycsIHtcclxuICAgICAgICAgIHN0YXR1c0NsYXNzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKGUpKTtcclxuICB9XHJcbiAgY2xpY2tlZCh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5vbkNvbHVtbkNsaWNrZWQuZW1pdCh2YWwpO1xyXG4gIH1cclxuICBjb2x1bW5WYWx1ZUNoYW5nZWQodmFsOiBhbnkpIHtcclxuICAgIHRoaXMub25Db2x1bW5WYWx1ZUNoYW5nZWQuZW1pdCh2YWwpO1xyXG4gIH1cclxuICBjb21iaW5lZERhdGEoZGV0YWlsVmlld2VyOiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGV0YWlsVmlld2VyOiBkZXRhaWxWaWV3ZXIsXHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8Y29udGFpbmVyLWVsZW1lbnQgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuICA8YXBwLWNvcmUtdGFibGUtcm93LXNlbGVjdG9yLWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5ST1dfU0VMRUNUT1JcIlxyXG4gICAgW3Jvd1NlbGVjdG9yXT1cInJvd1NlbGVjdG9yXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2FsbFRhYmxlRGF0YV09XCJhbGxUYWJsZURhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID48L2FwcC1jb3JlLXRhYmxlLXJvdy1zZWxlY3Rvci1jb2x1bW4+XHJcbiAgPGFwcC1jb3JlLXRhYmxlLXN0YXR1cy1hY3RpdmUtY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlNUQVRVU19BQ1RJVkVcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAob25Db2x1bW5WYWx1ZUNoYW5nZWQpPVwiY29sdW1uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gID48L2FwcC1jb3JlLXRhYmxlLXN0YXR1cy1hY3RpdmUtY29sdW1uPlxyXG5cclxuICA8YXBwLWNvcmUtdGFibGUtc3RhdHVzLWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5TVEFUVVNcIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID48L2FwcC1jb3JlLXRhYmxlLXN0YXR1cy1jb2x1bW4+XHJcbiAgPGFwcC1jb3JlLXRhYmxlLWFjdGlvbi1jb2x1bW5cclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuQUNUSU9OXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID48L2FwcC1jb3JlLXRhYmxlLWFjdGlvbi1jb2x1bW4+XHJcbiAgPGFwcC1jb3JlLXRhYmxlLWFjdGlvbi1idXR0b25zLWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5BQ1RJT05fQlVUVE9OU1wiXHJcbiAgICAob25DbGljayk9XCJjbGlja2VkKCRldmVudClcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPjwvYXBwLWNvcmUtdGFibGUtYWN0aW9uLWJ1dHRvbnMtY29sdW1uPlxyXG4gIDxhcHAtY29yZS10YWJsZS1zaGFtc2ktZGF0ZVxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5TSEFNU0lfREFURVwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICA+XHJcbiAgPC9hcHAtY29yZS10YWJsZS1zaGFtc2ktZGF0ZT5cclxuICA8YXBwLWNvcmUtdGFibGUtZGF0ZVxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5EQVRFXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gID5cclxuICA8L2FwcC1jb3JlLXRhYmxlLWRhdGU+XHJcblxyXG4gIDxjb3JlLXRhYmxlLWNvbG9yLWNvbHVtblxyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5DT0xPUlwiXHJcbiAgICAob25Db2x1bW5WYWx1ZUNoYW5nZWQpPVwiY29sdW1uVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgPjwvY29yZS10YWJsZS1jb2xvci1jb2x1bW4+XHJcbiAgPGFwcC1jb3JlLXJvdy1wZWxha1xyXG4gICAgKm5nU3dpdGNoQ2FzZT1cImNvbHVtbnNUeXBlcy5QRUxBS1wiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICA+PC9hcHAtY29yZS1yb3ctcGVsYWs+XHJcbiAgPGNvcmUtdGFibGUtZGV0YWlsLXZpZXdlci1mb3ItcmVwb3J0XHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLkRFVEFJTF9WSUVXRVJfRk9SX1JFUE9SVFwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICA+PC9jb3JlLXRhYmxlLWRldGFpbC12aWV3ZXItZm9yLXJlcG9ydD5cclxuXHJcbiAgPGNvcmUtdGFibGUtdGV4dC1jb2x1bW5cclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuVEVYVFwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgIChvbkNvbHVtblZhbHVlQ2hhbmdlZCk9XCJjb2x1bW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICB0YWJsZURldGFpbFZpZXdlck1hbmFnZXJcclxuICAgIFtkZXRhaWxWaWV3ZXJEYXRhXT1cIlxyXG4gICAgICBjb21iaW5lZERhdGEoY29sdW1uLmRldGFpbFZpZXdlciwgZGF0YVtjb2x1bW4uZGV0YWlsVmlld2VyPy5rZXldKVxyXG4gICAgXCJcclxuICA+XHJcbiAgPC9jb3JlLXRhYmxlLXRleHQtY29sdW1uPlxyXG5cclxuICA8Y29yZS10YWJsZS1wcmUtY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlBSRVwiXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgIChvbkNvbHVtblZhbHVlQ2hhbmdlZCk9XCJjb2x1bW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICB0YWJsZURldGFpbFZpZXdlck1hbmFnZXJcclxuICAgIFtkZXRhaWxWaWV3ZXJEYXRhXT1cIlxyXG4gICAgICBjb21iaW5lZERhdGEoY29sdW1uLmRldGFpbFZpZXdlciwgZGF0YVtjb2x1bW4uZGV0YWlsVmlld2VyPy5rZXldKVxyXG4gICAgXCJcclxuICA+XHJcbiAgPC9jb3JlLXRhYmxlLXByZS1jb2x1bW4+XHJcblxyXG4gIDxjb3JlLXRhYmxlLW51bWJlci1jb2x1bW5cclxuICAgICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5zVHlwZXMuTlVNQkVSXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIHRhYmxlRGV0YWlsVmlld2VyTWFuYWdlclxyXG4gICAgW2RldGFpbFZpZXdlckRhdGFdPVwiXHJcbiAgICAgIGNvbWJpbmVkRGF0YShjb2x1bW4uZGV0YWlsVmlld2VyLCBkYXRhW2NvbHVtbi5kZXRhaWxWaWV3ZXI/LmtleV0pXHJcbiAgICBcIlxyXG4gID5cclxuICA8L2NvcmUtdGFibGUtbnVtYmVyLWNvbHVtbj5cclxuXHJcbiAgPGNvcmUtdGFibGUtc2VsZWN0b3ItY29sdW1uXHJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uc1R5cGVzLlNFTEVDVE9SXCJcclxuICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgKG9uQ29sdW1uVmFsdWVDaGFuZ2VkKT1cImNvbHVtblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIHRhYmxlRGV0YWlsVmlld2VyTWFuYWdlclxyXG4gICAgW2RldGFpbFZpZXdlckRhdGFdPVwiXHJcbiAgICAgIGNvbWJpbmVkRGF0YShcclxuICAgICAgICBjb2x1bW4uZGV0YWlsVmlld2VyLFxyXG4gICAgICAgIGdldFNlbGVjdG9yRGF0YShcclxuICAgICAgICAgIGRhdGFbY29sdW1uLmtleS5zcGxpdCgnLicpWzBdXSxcclxuICAgICAgICAgIGNvbHVtbi5kZXRhaWxWaWV3ZXI/LmtleVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgXCJcclxuICA+XHJcbiAgPC9jb3JlLXRhYmxlLXNlbGVjdG9yLWNvbHVtbj5cclxuPC9jb250YWluZXItZWxlbWVudD5cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { cloneDeep } from 'lodash';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "nira-snack-bar";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "../../../svg-icon/check-icon/check-icon.component";
8
+ import * as i5 from "../../../svg-icon/close-icon/close-icon.component";
9
+ import * as i6 from "../../pipes/persian-digits.pipe";
10
+ export class CoreTablePreColumnComponent {
11
+ constructor(niraSnackBar) {
12
+ this.niraSnackBar = niraSnackBar;
13
+ this.onColumnValueChanged = new EventEmitter();
14
+ this.canEdit = false;
15
+ this.value = '';
16
+ }
17
+ setValue() {
18
+ const newData = cloneDeep(this.data);
19
+ newData[this.column.key] = this.value;
20
+ this.onColumnValueChanged.emit(newData);
21
+ this.canEdit = false;
22
+ }
23
+ onTextColumnClicked(column, data, event) {
24
+ if (event.ctrlKey && column.editable) {
25
+ this.value = data;
26
+ this.canEdit = true;
27
+ }
28
+ else if (column.copyToClipboard) {
29
+ navigator.clipboard
30
+ .writeText(data)
31
+ .then((e) => {
32
+ this.niraSnackBar.show('با موفقیت کپی شد', {
33
+ statusClass: 'success',
34
+ duration: 3000,
35
+ });
36
+ })
37
+ .catch((e) => console.error(e));
38
+ }
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTablePreColumnComponent, deps: [{ token: i1.NiraSnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreTablePreColumnComponent, selector: "core-table-pre-column", inputs: { data: "data", column: "column" }, outputs: { onColumnValueChanged: "onColumnValueChanged" }, ngImport: i0, template: "<pre\r\n class=\"font\"\r\n *ngIf=\"!canEdit\"\r\n [ngClass]=\"{\r\n 'cursor-pointer': column.copyToClipboard,\r\n 'mouse-edit-cursor': column.editable,\r\n }\"\r\n (click)=\"onTextColumnClicked(column, data[column.key], $event)\"\r\n >{{\r\n column?.data?.enDigitsToFa === false\r\n ? data[column.key]\r\n : (data[column.key] | persianDigits)\r\n }}</pre\r\n>\r\n<div class=\"flex\" *ngIf=\"canEdit\">\r\n <input\r\n [(ngModel)]=\"value\"\r\n class=\"rounded-sm h-7 px-2 border-slate-700\"\r\n type=\"text\"\r\n />\r\n <check-icon\r\n (click)=\"setValue()\"\r\n class=\"cursor-pointer inline-block w-5 h-5 m-1\"\r\n ></check-icon>\r\n <close-icon\r\n (click)=\"canEdit = false\"\r\n class=\"cursor-pointer inline-block w-5 h-5 m-1\"\r\n ></close-icon>\r\n</div>\r\n", styles: [".font{font-family:vazir,\"sans-serif\"}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.CheckIconComponent, selector: "check-icon" }, { kind: "component", type: i5.CloseIconComponent, selector: "close-icon" }, { kind: "pipe", type: i6.PersianDigitsPipe, name: "persianDigits" }] }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreTablePreColumnComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ selector: 'core-table-pre-column', template: "<pre\r\n class=\"font\"\r\n *ngIf=\"!canEdit\"\r\n [ngClass]=\"{\r\n 'cursor-pointer': column.copyToClipboard,\r\n 'mouse-edit-cursor': column.editable,\r\n }\"\r\n (click)=\"onTextColumnClicked(column, data[column.key], $event)\"\r\n >{{\r\n column?.data?.enDigitsToFa === false\r\n ? data[column.key]\r\n : (data[column.key] | persianDigits)\r\n }}</pre\r\n>\r\n<div class=\"flex\" *ngIf=\"canEdit\">\r\n <input\r\n [(ngModel)]=\"value\"\r\n class=\"rounded-sm h-7 px-2 border-slate-700\"\r\n type=\"text\"\r\n />\r\n <check-icon\r\n (click)=\"setValue()\"\r\n class=\"cursor-pointer inline-block w-5 h-5 m-1\"\r\n ></check-icon>\r\n <close-icon\r\n (click)=\"canEdit = false\"\r\n class=\"cursor-pointer inline-block w-5 h-5 m-1\"\r\n ></close-icon>\r\n</div>\r\n", styles: [".font{font-family:vazir,\"sans-serif\"}\n"] }]
46
+ }], ctorParameters: function () { return [{ type: i1.NiraSnackBarService }]; }, propDecorators: { data: [{
47
+ type: Input,
48
+ args: [{ required: true }]
49
+ }], column: [{
50
+ type: Input,
51
+ args: [{ required: true }]
52
+ }], onColumnValueChanged: [{
53
+ type: Output
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS1wcmUtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLXRhYmxlL2NvcmUtdGFibGUtcHJlLWNvbHVtbi9jb3JlLXRhYmxlLXByZS1jb2x1bW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtdGFibGUvY29yZS10YWJsZS1wcmUtY29sdW1uL2NvcmUtdGFibGUtcHJlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBUW5DLE1BQU0sT0FBTywyQkFBMkI7SUFRdEMsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBTDNDLHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztJQUU2QyxDQUFDO0lBRXpELFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBVyxFQUFFLElBQVksRUFBRSxLQUFpQjtRQUM5RCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNyQjthQUFNLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUNqQyxTQUFTLENBQUMsU0FBUztpQkFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQztpQkFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDekMsV0FBVyxFQUFFLFNBQVM7b0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2lCQUNmLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7K0dBaENVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG9LQ1R4QyxxekJBNkJBOzs0RkRwQmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHVCQUF1QjswR0FLTixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDZixvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBOaXJhU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnbmlyYS1zbmFjay1iYXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXRhYmxlLXByZS1jb2x1bW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXRhYmxlLXByZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtdGFibGUtcHJlLWNvbHVtbi5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVQcmVDb2x1bW5Db21wb25lbnQge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGEhOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29sdW1uITogYW55O1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNhbkVkaXQgPSBmYWxzZTtcclxuICB2YWx1ZSA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5pcmFTbmFja0JhcjogTmlyYVNuYWNrQmFyU2VydmljZSkge31cclxuXHJcbiAgc2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBuZXdEYXRhID0gY2xvbmVEZWVwKHRoaXMuZGF0YSk7XHJcbiAgICBuZXdEYXRhW3RoaXMuY29sdW1uLmtleV0gPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5vbkNvbHVtblZhbHVlQ2hhbmdlZC5lbWl0KG5ld0RhdGEpO1xyXG4gICAgdGhpcy5jYW5FZGl0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblRleHRDb2x1bW5DbGlja2VkKGNvbHVtbjogYW55LCBkYXRhOiBzdHJpbmcsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBjb2x1bW4uZWRpdGFibGUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGRhdGE7XHJcbiAgICAgIHRoaXMuY2FuRWRpdCA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKGNvbHVtbi5jb3B5VG9DbGlwYm9hcmQpIHtcclxuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZFxyXG4gICAgICAgIC53cml0ZVRleHQoZGF0YSlcclxuICAgICAgICAudGhlbigoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uaXJhU25hY2tCYXIuc2hvdygn2KjYpyDZhdmI2YHZgtuM2Kog2qnZvtuMINi02K8nLCB7XHJcbiAgICAgICAgICAgIHN0YXR1c0NsYXNzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8cHJlXHJcbiAgY2xhc3M9XCJmb250XCJcclxuICAqbmdJZj1cIiFjYW5FZGl0XCJcclxuICBbbmdDbGFzc109XCJ7XHJcbiAgICAnY3Vyc29yLXBvaW50ZXInOiBjb2x1bW4uY29weVRvQ2xpcGJvYXJkLFxyXG4gICAgJ21vdXNlLWVkaXQtY3Vyc29yJzogY29sdW1uLmVkaXRhYmxlLFxyXG4gIH1cIlxyXG4gIChjbGljayk9XCJvblRleHRDb2x1bW5DbGlja2VkKGNvbHVtbiwgZGF0YVtjb2x1bW4ua2V5XSwgJGV2ZW50KVwiXHJcbiAgPnt7XHJcbiAgICBjb2x1bW4/LmRhdGE/LmVuRGlnaXRzVG9GYSA9PT0gZmFsc2VcclxuICAgICAgPyBkYXRhW2NvbHVtbi5rZXldXHJcbiAgICAgIDogKGRhdGFbY29sdW1uLmtleV0gfCBwZXJzaWFuRGlnaXRzKVxyXG4gIH19PC9wcmVcclxuPlxyXG48ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiY2FuRWRpdFwiPlxyXG4gIDxpbnB1dFxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICBjbGFzcz1cInJvdW5kZWQtc20gaC03IHB4LTIgYm9yZGVyLXNsYXRlLTcwMFwiXHJcbiAgICB0eXBlPVwidGV4dFwiXHJcbiAgLz5cclxuICA8Y2hlY2staWNvblxyXG4gICAgKGNsaWNrKT1cInNldFZhbHVlKClcIlxyXG4gICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBpbmxpbmUtYmxvY2sgdy01IGgtNSBtLTFcIlxyXG4gID48L2NoZWNrLWljb24+XHJcbiAgPGNsb3NlLWljb25cclxuICAgIChjbGljayk9XCJjYW5FZGl0ID0gZmFsc2VcIlxyXG4gICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBpbmxpbmUtYmxvY2sgdy01IGgtNSBtLTFcIlxyXG4gID48L2Nsb3NlLWljb24+XHJcbjwvZGl2PlxyXG4iXX0=