@biit-solutions/wizardry-theme 1.22.13 → 1.22.14
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.
- package/esm2020/charts/meta-view-chart/components/date-filter-selector/date-filter-selector.component.mjs +1 -1
- package/esm2020/inputs/biit-checkbox/biit-checkbox.component.mjs +11 -5
- package/esm2020/inputs/biit-multiselect/biit-multiselect.component.mjs +1 -1
- package/esm2020/navigation/biit-nav-menu/biit-nav-menu.component.mjs +1 -4
- package/esm2020/table/biit-datatable/biit-datatable.component.mjs +1 -1
- package/esm2020/table/biit-table/biit-table.component.mjs +2 -2
- package/fesm2015/biit-solutions-wizardry-theme-charts.mjs +1 -1
- package/fesm2015/biit-solutions-wizardry-theme-charts.mjs.map +1 -1
- package/fesm2015/biit-solutions-wizardry-theme-inputs.mjs +10 -4
- package/fesm2015/biit-solutions-wizardry-theme-inputs.mjs.map +1 -1
- package/fesm2015/biit-solutions-wizardry-theme-navigation.mjs +0 -3
- package/fesm2015/biit-solutions-wizardry-theme-navigation.mjs.map +1 -1
- package/fesm2015/biit-solutions-wizardry-theme-table.mjs +2 -2
- package/fesm2015/biit-solutions-wizardry-theme-table.mjs.map +1 -1
- package/fesm2020/biit-solutions-wizardry-theme-charts.mjs +1 -1
- package/fesm2020/biit-solutions-wizardry-theme-charts.mjs.map +1 -1
- package/fesm2020/biit-solutions-wizardry-theme-inputs.mjs +10 -4
- package/fesm2020/biit-solutions-wizardry-theme-inputs.mjs.map +1 -1
- package/fesm2020/biit-solutions-wizardry-theme-navigation.mjs +0 -3
- package/fesm2020/biit-solutions-wizardry-theme-navigation.mjs.map +1 -1
- package/fesm2020/biit-solutions-wizardry-theme-table.mjs +2 -2
- package/fesm2020/biit-solutions-wizardry-theme-table.mjs.map +1 -1
- package/inputs/biit-checkbox/biit-checkbox.component.d.ts +3 -1
- package/navigation/biit-nav-menu/biit-nav-menu.component.d.ts +0 -1
- package/package.json +1 -1
|
@@ -272,7 +272,7 @@ BiitTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versi
|
|
|
272
272
|
BiitTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: BiitTableComponent, selector: "biit-table", inputs: { _data: ["metadata", "_data"], _loading: ["loading", "_loading"], columns: "columns", pageSizes: "pageSizes", defaultPageSize: "defaultPageSize" }, outputs: { onUpdate: "onUpdate", onCellAction: "onCellAction", onRowClick: "onRowClick" }, providers: [{
|
|
273
273
|
provide: TRANSLOCO_SCOPE,
|
|
274
274
|
useValue: { scope: 'wizardry-theme/table', alias: "table" }
|
|
275
|
-
}], queries: [{ propertyName: "actionsTpl", first: true, predicate: ["actions"], descendants: true }], ngImport: i0, template: "<div class=\"canvas\" *transloco=\"let t\">\n <div class=\"header\" *ngIf=\"!hideHeader\">\n <div class=\"buttons\" id=\"menu\">\n <biit-vertical-menu *ngIf=\"actionsTpl\" class=\"vertical-menu\">\n <ng-container *ngTemplateOutlet=\"actionsTpl\"></ng-container>\n </biit-vertical-menu>\n <div *ngIf=\"actionsTpl\" class=\"horizontal-menu\">\n <ng-container *ngTemplateOutlet=\"actionsTpl\"></ng-container>\n </div>\n <div *ngIf=\"!actionsTpl\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"forms\">\n <biit-input-text id=\"search-field\" [(ngModel)]=\"search\"\n (onActionPerformed)=\"\n paginator.currentPage = 1;\n onTableUpdate(true);\n \"\n (focusout)=\"resetInputValue()\"\n (ngModelChange)=\"onTableUpdate()\"\n icon=\"search\"\n [placeholder]=\"t('table.search')\"\n ></biit-input-text>\n <biit-multiselect id=\"column-selector\" [ngModel]=\"columns | visibleColumns\"\n (ngModelChange)=\"setColumnVisibility($event)\"\n [data]=\"columns\"\n label=\"label\"\n value=\"visible\"\n [title]=\"t('table.column-selector')\"\n [type]=\"BiitMultiselectType.ICON\"\n [compact]=\"true\"\n ></biit-multiselect>\n </div>\n </div>\n\n <div class=\"content\">\n <div *ngIf=\"loading\" style=\"position: relative\">\n <biit-progress-bar style=\"position: absolute; top: 2.1rem; left: 0.2rem; width: calc(100% - 0.1rem);\"></biit-progress-bar>\n </div>\n <table>\n <thead>\n <tr>\n <th *ngIf=\"isSelectable || isSelectableSingle\" class=\"select\">\n <biit-checkbox *ngIf=\"isSelectable\"\n [ngModel]=\"data?.data.length && selectedRows.size == data?.data.length\"\n (ngModelChange)=\"$event ? data?.data.forEach(selectedRows.add, selectedRows) : selectedRows.clear()\"\n ></biit-checkbox>\n </th>\n <th *ngFor=\"let column of columns, index as i\"\n [class.sortable]=\"isSortable\"\n [style.display]=\"!column.visible ? 'none' : null\"\n [style.width]=\"column.width ? column.width + 'px' : ''\"\n (click)=\"isSortable ? onTableSort(column) : false\"\n >\n <div class=\"label\">\n {{column.label}}\n </div>\n <biit-icon *ngIf=\"isSortable\"\n [name]=\"sorting?.name == column.name ? 'right_arrow' : 'up_down_arrow'\"\n [pathStyle]=\"{fill: '#FFFFFF'}\"\n class=\"sort\"\n [class.asc]=\"sorting?.name == column.name && sorting?.order == 'asc'\"\n [class.desc]=\"sorting?.name == column.name && sorting?.order == 'desc'\"\n ></biit-icon>\n <div class=\"column-resizer\"\n (mousedown)=\"resizeColumn($event, column, i)\"\n (click)=\"$event.preventDefault();\n $event.stopPropagation();\n $event.stopImmediatePropagation();\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of data?.data; index as i\"\n [class.selectable]=\"isSelectable\"\n [class.selected]=\"selectedRows.has(item)\"\n (pointerdown)=\"emitRowClick(item)\"\n >\n <td *ngIf=\"isSelectable || isSelectableSingle\" class=\"select\">\n <biit-checkbox id=\"select{{i}}\"\n [ngModel]=\"selectedRows.has(item)\"\n (ngModelChange)=\"selectRow(item, true)\"\n ></biit-checkbox>\n </td>\n <td *ngFor=\"let column of columns\"\n (pointerdown)=\"selectRow(item, $event.ctrlKey)\"\n [style.display]=\"!column.visible ? 'none' : null\"\n [style.width]=\"column.width ? column.width + 'px' : null\"\n >\n <div *ngIf=\"column.format == BiitTableColumnFormat.DEFAULT\">\n {{item | columnData: column.name}}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.BOOLEAN\">\n {{(item | columnData: column.name) ? t('table.yes') : t('table.no') }}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.DATE\">\n {{(item | columnData: column.name) | localizedDate}}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.BUTTON\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <button biit-button tertiary\n (pointerdown)=\"emitCellAction(item, column.name, $event)\">\n {{item | columnData: column.name}}\n </button>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.ICON_BUTTON\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <button biit-icon [icon]=\"item | columnData: column.name\"\n (pointerdown)=\"emitCellAction(item, column.name, $event);\"></button>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.ICON\"\n style=\"width: auto; height: 1.05rem;\">\n <biit-icon [name]=\"item | columnData: column.name\"></biit-icon>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.CUSTOM_HTML\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <div [innerHTML]=\"item | columnData: column.name\"></div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n\n </div>\n\n <div class=\"footer\" *ngIf=\"!hideFooter\">\n <div class=\"selected\">\n <a style=\"margin-right: 0.7rem\" *ngIf=\"selectedRows.size\">Selected:</a>\n <a *ngIf=\"selectedRows.size\">{{selectedRows.size}}</a>\n </div>\n <biit-paginator *ngIf=\"paginator\"\n [ngModel]=\"paginator\" (ngModelChange)=\"paginator = $event; onTableUpdate()\"></biit-paginator>\n </div>\n</div>\n", styles: [".canvas{height:100%;display:flex;flex-direction:column;box-sizing:border-box;row-gap:1.05rem}.canvas>.header{display:flex;flex-direction:row;justify-content:space-between}.canvas>.header>*{display:flex;flex-direction:row}.canvas>.header>.buttons ::ng-deep>*{height:2.1rem;min-width:2.1rem;display:flex;align-items:center;justify-content:center}.canvas>.header>.forms{column-gap:.7rem}.canvas>.header>.forms ::ng-deep biit-input-text .biit-input{min-height:0;padding-top:0}.canvas>.content{overflow:auto;display:flex;flex-grow:1;flex-direction:column;box-sizing:border-box}.canvas>.content *{box-sizing:border-box}.canvas>.content>table{width:100%;height:-moz-fit-content;height:fit-content;margin-top:-.2rem;table-layout:fixed;border-spacing:.2rem}.canvas>.content>table thead{text-transform:uppercase;position:sticky;top:0;background:var(--popup-background);z-index:1}.canvas>.content>table thead th{position:relative;height:2.1rem;color:var(--popup-background);font-weight:500;background:var(--table-header-color);padding:.4rem 2.4rem;text-align:center;text-align:-moz-center;text-align:-webkit-center;cursor:default}.canvas>.content>table thead th.select{width:2.1rem;padding:.3rem .7rem;background:var(--popup-background)}.canvas>.content>table thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.canvas>.content>table thead th>.column-resizer{position:absolute;right:-.2rem;top:0;height:100%;width:.6rem;cursor:col-resize}.canvas>.content>table thead th>.label{width:-moz-fit-content;width:fit-content}.canvas>.content>table thead th>.sort{position:absolute;width:.7rem;height:.7rem;top:calc(50% - .35rem);right:.7rem;pointer-events:none}.canvas>.content>table thead th>.sort.asc{rotate:-90deg}.canvas>.content>table thead th>.sort.desc{rotate:90deg}.canvas>.content>table tbody tr{cursor:default}.canvas>.content>table tbody tr.selected{background:var(--main-background)}.canvas>.content>table tbody tr:hover{background:var(--hover-color)}.canvas>.content>table tbody tr:hover.selectable{cursor:pointer}.canvas>.content>table tbody tr>td{height:2.1rem;border-bottom:.2rem solid var(--table-border-color);padding:.3rem .7rem;overflow:hidden}.canvas>.content>table tbody tr>td.select{width:2.1rem;padding:.3rem .7rem}.canvas>.footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.canvas>.footer>biit-paginator{width:50%;display:block}@media screen and (max-width: 600px){.page-size-selector,.horizontal-menu{display:none!important}}@media screen and (min-width: 601px){.vertical-menu{display:none!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.BiitPaginatorComponent, selector: "biit-paginator" }, { kind: "component", type: i4.BiitMultiselectComponent, selector: "biit-multiselect", inputs: ["title", "type", "icon", "label", "value", "descriptionField", "description", "data", "primitive", "compact", "disabled", "required", "sort-asc", "sort-desc"], outputs: ["onCreate"] }, { kind: "component", type: i4.BiitInputTextComponent, selector: "biit-input-text", inputs: ["placeholder", "error", "description", "info", "type", "icon", "fieldName", "disabled", "required", "readonly", "min", "max", "minLength", "maxLength", "regEx"], outputs: ["onActionPerformed"] }, { kind: "component", type: i4.BiitCheckboxComponent, selector: "biit-checkbox", inputs: ["disabled", "description", "showAlwaysDescription"] }, { kind: "component", type: i5.BiitProgressBarComponent, selector: "biit-progress-bar", inputs: ["type", "_value", "value"] }, { kind: "directive", type: i6.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i7.BiitIconComponent, selector: "biit-icon", inputs: ["name", "svgStyle", "pathStyle"] }, { kind: "component", type: i8.BiitButtonComponent, selector: "button[biit-button]" }, { kind: "directive", type: i8.BiitButtonTertiaryDirective, selector: "[tertiary]" }, { kind: "component", type: i8.BiitIconButtonComponent, selector: "button[biit-icon]", inputs: ["icon", "checked"] }, { kind: "component", type: i9.BiitVerticalMenuComponent, selector: "biit-vertical-menu" }, { kind: "directive", type: BiitTableSelectableDirective, selector: "[selectable]" }, { kind: "directive", type: BiitTableSortableDirective, selector: "[sortable]" }, { kind: "pipe", type: i10.LocalizedDatePipe, name: "localizedDate" }, { kind: "pipe", type: i11.VisibleColumnsPipe, name: "visibleColumns" }, { kind: "pipe", type: i12.ColumnDataPipe, name: "columnData" }] });
|
|
275
|
+
}], queries: [{ propertyName: "actionsTpl", first: true, predicate: ["actions"], descendants: true }], ngImport: i0, template: "<div class=\"canvas\" *transloco=\"let t\">\n <div class=\"header\" *ngIf=\"!hideHeader\">\n <div class=\"buttons\" id=\"menu\">\n <biit-vertical-menu *ngIf=\"actionsTpl\" class=\"vertical-menu\">\n <ng-container *ngTemplateOutlet=\"actionsTpl\"></ng-container>\n </biit-vertical-menu>\n <div *ngIf=\"actionsTpl\" class=\"horizontal-menu\">\n <ng-container *ngTemplateOutlet=\"actionsTpl\"></ng-container>\n </div>\n <div *ngIf=\"!actionsTpl\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"forms\">\n <biit-input-text id=\"search-field\" [(ngModel)]=\"search\"\n (onActionPerformed)=\"\n paginator.currentPage = 1;\n onTableUpdate(true);\n \"\n (focusout)=\"resetInputValue()\"\n (ngModelChange)=\"onTableUpdate()\"\n icon=\"search\"\n [placeholder]=\"t('table.search')\"\n ></biit-input-text>\n <biit-multiselect id=\"column-selector\" [ngModel]=\"columns | visibleColumns\"\n (ngModelChange)=\"setColumnVisibility($event)\"\n [data]=\"columns\"\n label=\"label\"\n value=\"visible\"\n [title]=\"t('table.column-selector')\"\n [type]=\"BiitMultiselectType.ICON\"\n [compact]=\"true\"\n ></biit-multiselect>\n </div>\n </div>\n\n <div class=\"content\">\n <div *ngIf=\"loading\" style=\"position: relative\">\n <biit-progress-bar style=\"position: absolute; top: 2.1rem; left: 0.2rem; width: calc(100% - 0.1rem);\"></biit-progress-bar>\n </div>\n <table>\n <thead>\n <tr>\n <th *ngIf=\"isSelectable || isSelectableSingle\" class=\"select\">\n <biit-checkbox *ngIf=\"isSelectable\"\n [ngModel]=\"data?.data.length && selectedRows.size == data?.data.length\"\n (ngModelChange)=\"$event ? data?.data.forEach(selectedRows.add, selectedRows) : selectedRows.clear()\"\n ></biit-checkbox>\n </th>\n <th *ngFor=\"let column of columns, index as i\"\n [class.sortable]=\"isSortable\"\n [style.display]=\"!column.visible ? 'none' : null\"\n [style.width]=\"column.width ? column.width + 'px' : ''\"\n (click)=\"isSortable ? onTableSort(column) : false\"\n >\n <div class=\"label\">\n {{column.label}}\n </div>\n <biit-icon *ngIf=\"isSortable\"\n [name]=\"sorting?.name == column.name ? 'right_arrow' : 'up_down_arrow'\"\n [pathStyle]=\"{fill: '#FFFFFF'}\"\n class=\"sort\"\n [class.asc]=\"sorting?.name == column.name && sorting?.order == 'asc'\"\n [class.desc]=\"sorting?.name == column.name && sorting?.order == 'desc'\"\n ></biit-icon>\n <div class=\"column-resizer\"\n (mousedown)=\"resizeColumn($event, column, i)\"\n (click)=\"$event.preventDefault();\n $event.stopPropagation();\n $event.stopImmediatePropagation();\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of data?.data; index as i\"\n [class.selectable]=\"isSelectable\"\n [class.selected]=\"selectedRows.has(item)\"\n (pointerdown)=\"emitRowClick(item)\"\n >\n <td *ngIf=\"isSelectable || isSelectableSingle\" class=\"select\">\n <biit-checkbox id=\"select{{i}}\"\n [ngModel]=\"selectedRows.has(item)\"\n (ngModelChange)=\"selectRow(item, true)\"\n ></biit-checkbox>\n </td>\n <td *ngFor=\"let column of columns\"\n (pointerdown)=\"selectRow(item, $event.ctrlKey)\"\n [style.display]=\"!column.visible ? 'none' : null\"\n [style.width]=\"column.width ? column.width + 'px' : null\"\n >\n <div *ngIf=\"column.format == BiitTableColumnFormat.DEFAULT\">\n {{item | columnData: column.name}}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.BOOLEAN\">\n {{(item | columnData: column.name) ? t('table.yes') : t('table.no') }}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.DATE\">\n {{(item | columnData: column.name) | localizedDate}}\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.BUTTON\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <button biit-button tertiary\n (pointerdown)=\"emitCellAction(item, column.name, $event)\">\n {{item | columnData: column.name}}\n </button>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.ICON_BUTTON\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <button biit-icon [icon]=\"item | columnData: column.name\"\n (pointerdown)=\"emitCellAction(item, column.name, $event);\"></button>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.ICON\"\n style=\"width: auto; height: 1.05rem;\">\n <biit-icon [name]=\"item | columnData: column.name\"></biit-icon>\n </div>\n <div *ngIf=\"column.format == BiitTableColumnFormat.CUSTOM_HTML\"\n style=\"width: auto; text-align: -webkit-center; text-align: -moz-center;\">\n <div [innerHTML]=\"item | columnData: column.name\"></div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n\n </div>\n\n <div class=\"footer\" *ngIf=\"!hideFooter\">\n <div class=\"selected\">\n <a style=\"margin-right: 0.7rem\" *ngIf=\"selectedRows.size\">Selected:</a>\n <a *ngIf=\"selectedRows.size\">{{selectedRows.size}}</a>\n </div>\n <biit-paginator *ngIf=\"paginator\"\n [ngModel]=\"paginator\" (ngModelChange)=\"paginator = $event; onTableUpdate()\"></biit-paginator>\n </div>\n</div>\n", styles: [".canvas{height:100%;display:flex;flex-direction:column;box-sizing:border-box;row-gap:1.05rem}.canvas>.header{display:flex;flex-direction:row;justify-content:space-between}.canvas>.header>*{display:flex;flex-direction:row}.canvas>.header>.buttons ::ng-deep>*{height:2.1rem;min-width:2.1rem;display:flex;align-items:center;justify-content:center}.canvas>.header>.forms{column-gap:.7rem}.canvas>.header>.forms ::ng-deep biit-input-text .biit-input{min-height:0;padding-top:0}.canvas>.content{overflow:auto;display:flex;flex-grow:1;flex-direction:column;box-sizing:border-box}.canvas>.content *{box-sizing:border-box}.canvas>.content>table{width:100%;height:-moz-fit-content;height:fit-content;margin-top:-.2rem;table-layout:fixed;border-spacing:.2rem}.canvas>.content>table thead{text-transform:uppercase;position:sticky;top:0;background:var(--popup-background);z-index:1}.canvas>.content>table thead th{position:relative;height:2.1rem;color:var(--popup-background);font-weight:500;background:var(--table-header-color);padding:.4rem 2.4rem;text-align:center;text-align:-moz-center;text-align:-webkit-center;cursor:default}.canvas>.content>table thead th.select{width:2.1rem;padding:.3rem .7rem;background:var(--popup-background)}.canvas>.content>table thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.canvas>.content>table thead th>.column-resizer{position:absolute;right:-.2rem;top:0;height:100%;width:.6rem;cursor:col-resize}.canvas>.content>table thead th>.label{width:-moz-fit-content;width:fit-content}.canvas>.content>table thead th>.sort{position:absolute;width:.7rem;height:.7rem;top:calc(50% - .35rem);right:.7rem;pointer-events:none}.canvas>.content>table thead th>.sort.asc{rotate:-90deg}.canvas>.content>table thead th>.sort.desc{rotate:90deg}.canvas>.content>table tbody tr{cursor:default}.canvas>.content>table tbody tr.selected{background:var(--main-background)}.canvas>.content>table tbody tr:hover{background:var(--hover-color)}.canvas>.content>table tbody tr:hover.selectable{cursor:pointer}.canvas>.content>table tbody tr>td{height:2.1rem;border-bottom:.2rem solid var(--table-border-color);padding:.3rem .7rem;overflow:hidden}.canvas>.content>table tbody tr>td.select{width:2.1rem;padding:.3rem .7rem}.canvas>.footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.canvas>.footer>biit-paginator{width:50%;display:block}@media screen and (max-width: 600px){.page-size-selector,.horizontal-menu{display:none!important}}@media screen and (min-width: 601px){.vertical-menu{display:none!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.BiitPaginatorComponent, selector: "biit-paginator" }, { kind: "component", type: i4.BiitMultiselectComponent, selector: "biit-multiselect", inputs: ["title", "type", "icon", "label", "value", "descriptionField", "description", "data", "primitive", "compact", "disabled", "required", "sort-asc", "sort-desc"], outputs: ["onCreate"] }, { kind: "component", type: i4.BiitInputTextComponent, selector: "biit-input-text", inputs: ["placeholder", "error", "description", "info", "type", "icon", "fieldName", "disabled", "required", "readonly", "min", "max", "minLength", "maxLength", "regEx"], outputs: ["onActionPerformed"] }, { kind: "component", type: i4.BiitCheckboxComponent, selector: "biit-checkbox", inputs: ["disabled", "description", "showAlwaysDescription"], outputs: ["onValueChange"] }, { kind: "component", type: i5.BiitProgressBarComponent, selector: "biit-progress-bar", inputs: ["type", "_value", "value"] }, { kind: "directive", type: i6.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i7.BiitIconComponent, selector: "biit-icon", inputs: ["name", "svgStyle", "pathStyle"] }, { kind: "component", type: i8.BiitButtonComponent, selector: "button[biit-button]" }, { kind: "directive", type: i8.BiitButtonTertiaryDirective, selector: "[tertiary]" }, { kind: "component", type: i8.BiitIconButtonComponent, selector: "button[biit-icon]", inputs: ["icon", "checked"] }, { kind: "component", type: i9.BiitVerticalMenuComponent, selector: "biit-vertical-menu" }, { kind: "directive", type: BiitTableSelectableDirective, selector: "[selectable]" }, { kind: "directive", type: BiitTableSortableDirective, selector: "[sortable]" }, { kind: "pipe", type: i10.LocalizedDatePipe, name: "localizedDate" }, { kind: "pipe", type: i11.VisibleColumnsPipe, name: "visibleColumns" }, { kind: "pipe", type: i12.ColumnDataPipe, name: "columnData" }] });
|
|
276
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BiitTableComponent, decorators: [{
|
|
277
277
|
type: Component,
|
|
278
278
|
args: [{ selector: 'biit-table', providers: [{
|
|
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
301
301
|
}], onRowClick: [{
|
|
302
302
|
type: Output
|
|
303
303
|
}] } });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlpdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXphcmRyeS10aGVtZS90YWJsZS9zcmMvYmlpdC10YWJsZS9iaWl0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemFyZHJ5LXRoZW1lL3RhYmxlL3NyYy9iaWl0LXRhYmxlL2JpaXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBa0IscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBSzVFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFBb0IsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQzs7MEhBSFUsNEJBQTRCOzhHQUE1Qiw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFIeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7O0FBVUQsTUFBTSxPQUFPLGtDQUFrQztJQUM3QyxZQUFvQixNQUEwQjtRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUM1QyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7O2dJQUhVLGtDQUFrQztvSEFBbEMsa0NBQWtDOzRGQUFsQyxrQ0FBa0M7a0JBSDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7O0FBVUQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixNQUEwQjtRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUM1QyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDOzt3SEFIVSwwQkFBMEI7NEdBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2Qjs7QUFVRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW9CLE1BQTBCO1FBQTFCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzVDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7OzBIQUhVLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCOztBQVVELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFBb0IsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQzs7MEhBSFUsNEJBQTRCOzhHQUE1Qiw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFIeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7O0FBZ0JELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsSUFBdUIsS0FBSyxDQUFDLElBQXdCO1FBQ25ELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNqSTtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQXNCLFFBQVEsQ0FBQyxPQUFnQjtRQUM3QyxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBK0JELFlBQW9CLFFBQW1CLEVBQ25CLElBQWdCO1FBRGhCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQTlCM0IsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUtsQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbEIsYUFBUSxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNsRixpQkFBWSxHQUEwQyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUNsRyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFLeEQsaUJBQVksR0FBYSxJQUFJLEdBQUcsRUFBTyxDQUFDO1FBQ3hDLGlCQUFZLEdBQXdCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUM5RCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDbEIsd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDMUMsMEJBQXFCLEdBQUcscUJBQXFCLENBQUM7SUFNakUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELDRCQUE0QjtJQUNwQixhQUFhO1FBQ25CLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFFaEYsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoRyxNQUFNLE1BQU0sR0FBRyxRQUF1QixDQUFDO1lBRXZDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU87YUFDUjtZQUNELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3BFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQzthQUNyRDtZQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUU1RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHVCQUF1QixDQUFDLE1BQW1CO1FBQ3pDLE1BQU0sYUFBYSxHQUFJLE1BQU0sQ0FBQyxpQkFBaUMsQ0FBQyxXQUFXO2NBQ3ZFLEdBQUcsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5RSxrSEFBa0g7UUFDbEgsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNyQyxNQUFzQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsSUFBSSxXQUFXLEVBQUU7WUFDZixXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUc7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFpQixLQUFLO1FBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUMsQ0FBQztZQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXVCO1FBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3BELFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLEtBQUsscUJBQXFCLENBQUMsR0FBRztvQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDO29CQUNoRCxNQUFNO2dCQUNSLEtBQUsscUJBQXFCLENBQUMsSUFBSTtvQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7b0JBQ3pCLE1BQU07YUFDVDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3RTtRQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBdUIsRUFBRSxLQUFLO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBMEIsQ0FBQyxXQUFXLENBQUM7UUFFL0YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUksVUFBVSxDQUFDLGlCQUFpQyxDQUFDLFdBQVc7Y0FDbEYsR0FBRyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBdUI7UUFDbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7Z0JBQzdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoRixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtvQkFDdEMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7aUJBQ3RCO2FBQ0Y7WUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2pDLFlBQVksRUFBRSxDQUFDO2dCQUNmLGVBQWUsRUFBRSxDQUFDO2FBQ25CO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUEyQjtRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUTtRQUN0QixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZSxDQUFDLGFBQW9CO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTLEVBQUUsTUFBYyxFQUFFLEtBQVk7UUFDcEQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7O2dIQXZOVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw2UkFMbEIsQ0FBQztZQUNWLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDO1NBQzFELENBQUMsNkhDM0VKLHc4TUF3SUEsMjFKRDlHYSw0QkFBNEIseURBa0I1QiwwQkFBMEI7NEZBaUMxQixrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDO3lCQUMxRCxDQUFDO3lIQUlxQixLQUFLO3NCQUEzQixLQUFLO3VCQUFDLFVBQVU7Z0JBVUssUUFBUTtzQkFBN0IsS0FBSzt1QkFBQyxTQUFTO2dCQVNQLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRW1CLFVBQVU7c0JBQWxDLFlBQVk7dUJBQUMsU0FBUztnQkFRYixRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCaWl0UGFnaW5hdG9yT3B0aW9uc30gZnJvbSAnLi4vYmlpdC1wYWdpbmF0b3IvbW9kZWxzL2JpaXQtcGFnaW5hdG9yLW9wdGlvbnMnO1xuaW1wb3J0IHtCaWl0VGFibGVDb2x1bW4sIEJpaXRUYWJsZUNvbHVtbkZvcm1hdH0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtDb2x1bW5SZXNpemVIYW5kbGVyfSBmcm9tICcuL21vZGVscy9jb2x1bW4tcmVzaXplLWhhbmRsZXInO1xuaW1wb3J0IHtCaWl0VGFibGVSZXNwb25zZX0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1yZXNwb25zZSc7XG5pbXBvcnQge0JpaXRUYWJsZURhdGF9IGZyb20gJy4vbW9kZWxzL2JpaXQtdGFibGUtZGF0YSc7XG5pbXBvcnQge0JpaXRUYWJsZVNvcnRpbmcsIEJpaXRUYWJsZVNvcnRpbmdPcmRlcn0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1zb3J0aW5nJztcbmltcG9ydCB7QmlpdE11bHRpc2VsZWN0VHlwZX0gZnJvbSAnQGJpaXQtc29sdXRpb25zL3dpemFyZHJ5LXRoZW1lL2lucHV0cyc7XG5pbXBvcnQge1RSQU5TTE9DT19TQ09QRX0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xuaW1wb3J0IHtCaWl0VGFibGVBY3Rpb25SZXNwb25zZX0gZnJvbSBcIi4vbW9kZWxzL2JpaXQtdGFibGUtYWN0aW9uLXJlc3BvbnNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWxlY3RhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBCaWl0VGFibGVDb21wb25lbnQpIHtcbiAgICBwYXJlbnQuaXNTZWxlY3RhYmxlID0gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2VsZWN0YWJsZVNpbmdsZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJpaXRUYWJsZVNlbGVjdGFibGVTaW5nbGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogQmlpdFRhYmxlQ29tcG9uZW50KSB7XG4gICAgcGFyZW50LmlzU2VsZWN0YWJsZVNpbmdsZSA9IHRydWU7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NvcnRhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlU29ydGFibGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogQmlpdFRhYmxlQ29tcG9uZW50KSB7XG4gICAgcGFyZW50LmlzU29ydGFibGUgPSB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1toaWRlSGVhZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlSGVhZGVybGVzc0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBCaWl0VGFibGVDb21wb25lbnQpIHtcbiAgICBwYXJlbnQuaGlkZUhlYWRlciA9IHRydWU7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2hpZGVGb290ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBCaWl0VGFibGVGb290ZXJsZXNzRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IEJpaXRUYWJsZUNvbXBvbmVudCkge1xuICAgIHBhcmVudC5oaWRlRm9vdGVyID0gdHJ1ZTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiaWl0LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JpaXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iaWl0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBUUkFOU0xPQ09fU0NPUEUsXG4gICAgdXNlVmFsdWU6IHtzY29wZTogJ3dpemFyZHJ5LXRoZW1lL3RhYmxlJywgYWxpYXM6IFwidGFibGVcIn1cbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBASW5wdXQoJ21ldGFkYXRhJykgc2V0IF9kYXRhKGRhdGE6IEJpaXRUYWJsZURhdGE8YW55Pikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRvciA9IG5ldyBCaWl0UGFnaW5hdG9yT3B0aW9ucyh0aGlzLnBhZ2luYXRvci5jdXJyZW50UGFnZSwgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsIHRoaXMucGFnZVNpemVzLCBkYXRhLnRvdGFsSXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnbG9hZGluZycpIHNldCBfbG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGxvYWRpbmc7XG4gICAgICB0aGlzLnNldExvYWRpbmdCYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgY29sdW1uczogQmlpdFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgcGFnZVNpemVzOiBudW1iZXJbXSA9IFtdO1xuICBASW5wdXQoKSBkZWZhdWx0UGFnZVNpemU6IG51bWJlcjtcblxuICBAQ29udGVudENoaWxkKCdhY3Rpb25zJykgYWN0aW9uc1RwbCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaXNTZWxlY3RhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU2VsZWN0YWJsZVNpbmdsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NvcnRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvblVwZGF0ZTogRXZlbnRFbWl0dGVyPEJpaXRUYWJsZVJlc3BvbnNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QmlpdFRhYmxlUmVzcG9uc2U+KCk7XG4gIEBPdXRwdXQoKSBvbkNlbGxBY3Rpb246IEV2ZW50RW1pdHRlcjxCaWl0VGFibGVBY3Rpb25SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEJpaXRUYWJsZUFjdGlvblJlc3BvbnNlPigpO1xuICBAT3V0cHV0KCkgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgZGF0YTogQmlpdFRhYmxlRGF0YTxhbnk+O1xuICBwcm90ZWN0ZWQgcGFnaW5hdG9yO1xuICBwcm90ZWN0ZWQgc29ydGluZzogQmlpdFRhYmxlU29ydGluZztcbiAgcHJvdGVjdGVkIHNlbGVjdGVkUm93czogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcbiAgcHJvdGVjdGVkIGNvbHVtblJlc2l6ZTogQ29sdW1uUmVzaXplSGFuZGxlciA9IG5ldyBDb2x1bW5SZXNpemVIYW5kbGVyKCk7XG4gIHByb3RlY3RlZCBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzZWFyY2g6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgY3VycmVudFNlYXJjaDogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCByZWFkb25seSBCaWl0TXVsdGlzZWxlY3RUeXBlID0gQmlpdE11bHRpc2VsZWN0VHlwZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJpaXRUYWJsZUNvbHVtbkZvcm1hdCA9IEJpaXRUYWJsZUNvbHVtbkZvcm1hdDtcblxuICBwcml2YXRlIGZpbmRUaW1lb3V0OiBOb2RlSlMuVGltZW91dDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbTogRWxlbWVudFJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IgPSBuZXcgQmlpdFBhZ2luYXRvck9wdGlvbnMoMSwgdGhpcy5kZWZhdWx0UGFnZVNpemUsIHRoaXMucGFnZVNpemVzLCB0aGlzLmRhdGEgPyB0aGlzLmRhdGEudG90YWxJdGVtcyA6IDEpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuc2V0Q29sdW1uU2l6ZSgpO1xuICB9XG5cbiAgLy8gRml4IGZvciByZXNpemFibGUgY29sdW1uc1xuICBwcml2YXRlIHNldENvbHVtblNpemUoKSB7XG4gICAgLy8gVGFrZXMgc2Nyb2xsYmFyIHBhZGRpbmcgaW4gbWluZCBiZWZvcmUgaGFyZGNvZGluZyB3aWR0aHNcbiAgICB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGVudCcpLnN0eWxlLnBhZGRpbmdSaWdodCA9ICcwLjdyZW0nO1xuXG4gICAgQXJyYXkuZnJvbSh0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0aGVhZCcpLmZpcnN0Q2hpbGQuY2hpbGRyZW4pLmZvckVhY2gob2dDb2x1bW4gPT4ge1xuICAgICAgY29uc3QgY29sdW1uID0gb2dDb2x1bW4gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIGlmIChjb2x1bW4uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY29sdW1uLnN0eWxlLndpZHRoID09ICcnICYmICFjb2x1bW4uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QnKSkge1xuICAgICAgICBjb2x1bW4uc3R5bGUud2lkdGggPSBjb2x1bW4ub2Zmc2V0V2lkdGggLSAxMCArICdweCc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbHVtbklubmVyV29yZEZpdENoZWNrKGNvbHVtbik7XG4gICAgfSk7XG4gICAgdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRlbnQnKS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBudWxsO1xuXG4gICAgdGhpcy5zZXRMb2FkaW5nQmFyKCk7XG4gIH1cblxuICBjb2x1bW5Jbm5lcldvcmRGaXRDaGVjayhjb2x1bW46IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgbWluQ29sdW1uU2l6ZSA9IChjb2x1bW4uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFdpZHRoXG4gICAgICArIDIuNCAqIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKSAqIDI7XG5cbiAgICAvLyBJZiBpbm5lciB0ZXh0IHdpZHRoIHBsdXMgaGVhZGVyIHBhZGRpbmdzIGFyZSBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgaGVhZGVyIHdpZHRoIChzZXQgYnkgdXNlciBjb2x1bW4gcHJvcGVydGllcylcbiAgICBpZiAobWluQ29sdW1uU2l6ZSA+IGNvbHVtbi5vZmZzZXRXaWR0aCkge1xuICAgICAgKGNvbHVtbiBhcyBIVE1MRWxlbWVudCkuc3R5bGUud2lkdGggPSBtaW5Db2x1bW5TaXplICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBzZXRMb2FkaW5nQmFyKCk6IHZvaWQge1xuICAgIGNvbnN0IHByb2dyZXNzQmFyID0gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYmlpdC1wcm9ncmVzcy1iYXInKTtcbiAgICBpZiAocHJvZ3Jlc3NCYXIpIHtcbiAgICAgIHByb2dyZXNzQmFyLnN0eWxlLnRvcCA9XG4gICAgICAgIHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJykub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBvblRhYmxlVXBkYXRlKGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5maW5kVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmluZFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLmZpbmRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWFyY2ggPSB0aGlzLnNlYXJjaDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLm9uVXBkYXRlLmVtaXQobmV3IEJpaXRUYWJsZVJlc3BvbnNlKFxuICAgICAgICB0aGlzLnBhZ2luYXRvci5jdXJyZW50UGFnZSxcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXG4gICAgICAgIHRoaXMuc2VhcmNoLFxuICAgICAgICB0aGlzLnNvcnRpbmdcbiAgICAgICkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmluZFRpbWVvdXQpO1xuICAgICAgdGhpcy5maW5kVGltZW91dCA9IG51bGw7XG4gICAgfSwgZm9yY2UgPyAwIDogNTAwKTtcbiAgfVxuXG4gIG9uVGFibGVTb3J0KGNvbHVtbjogQmlpdFRhYmxlQ29sdW1uKSB7XG4gICAgaWYgKHRoaXMuc29ydGluZyAmJiB0aGlzLnNvcnRpbmcubmFtZSA9PSBjb2x1bW4ubmFtZSkge1xuICAgICAgc3dpdGNoICh0aGlzLnNvcnRpbmcub3JkZXIpIHtcbiAgICAgICAgY2FzZSBCaWl0VGFibGVTb3J0aW5nT3JkZXIuQVNDOlxuICAgICAgICAgIHRoaXMuc29ydGluZy5vcmRlciA9IEJpaXRUYWJsZVNvcnRpbmdPcmRlci5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJpaXRUYWJsZVNvcnRpbmdPcmRlci5ERVNDOlxuICAgICAgICAgIHRoaXMuc29ydGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0aW5nID0gbmV3IEJpaXRUYWJsZVNvcnRpbmcoY29sdW1uLm5hbWUsIEJpaXRUYWJsZVNvcnRpbmdPcmRlci5BU0MpO1xuICAgIH1cblxuICAgIHRoaXMub25UYWJsZVVwZGF0ZSgpO1xuICB9XG5cbiAgc25ha2VUb0NhbWVsKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyaW5nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXVthLXpdL2csIChncm91cCkgPT4gZ3JvdXAuc2xpY2UoLTEpLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgcmVzaXplQ29sdW1uKGV2ZW50LCBjb2x1bW46IEJpaXRUYWJsZUNvbHVtbiwgaW5kZXgpIHtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydCA9IGV2ZW50LnRhcmdldDtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5wcmVzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFggPSBldmVudC54O1xuICAgIHRoaXMuY29sdW1uUmVzaXplLnN0YXJ0V2lkdGggPSAodGhpcy5jb2x1bW5SZXNpemUuc3RhcnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGg7XG5cbiAgICBsZXQgY29sdW1uRWxlbSA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJykuZmlyc3RDaGlsZC5jaGlsZHJlblt0aGlzLmlzU2VsZWN0YWJsZSA/IGluZGV4ICsgMSA6IGluZGV4XTtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5taW5XaWR0aCA9IChjb2x1bW5FbGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aFxuICAgICAgKyAyLjQgKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSkgKiAyO1xuXG4gICAgdGhpcy5pbml0UmVzaXphYmxlQ29sdW1ucyhjb2x1bW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVzaXphYmxlQ29sdW1ucyhjb2x1bW46IEJpaXRUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IG1vdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnbW91c2Vtb3ZlJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb2x1bW5SZXNpemUucHJlc3NlZCkge1xuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFdpZHRoICsgKGV2ZW50LnggLSB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFgpO1xuICAgICAgICBpZiAod2lkdGggPiB0aGlzLmNvbHVtblJlc2l6ZS5taW5XaWR0aCkge1xuICAgICAgICAgIGNvbHVtbi53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBjb25zdCByZWxlYXNlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ21vdXNldXAnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbHVtblJlc2l6ZS5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLnByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgcmVsZWFzZUxpc3RlbmVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBzZXRDb2x1bW5WaXNpYmlsaXR5KHJlc3BvbnNlOiBCaWl0VGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4gcmVzcG9uc2Uuc29tZShlID0+IGUubmFtZSA9PSBjLm5hbWUpID8gYy52aXNpYmxlID0gdHJ1ZSA6IGMudmlzaWJsZSA9IGZhbHNlKTtcbiAgfVxuXG4gIHNlbGVjdFJvdyhpdGVtLCBob2xkQ3RybCkge1xuICAgIGlmICghaG9sZEN0cmwgfHwgdGhpcy5pc1NlbGVjdGFibGVTaW5nbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGl0ZW0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd3MoKTogYW55W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zZWxlY3RlZFJvd3NdO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRSb3dzKF9zZWxlY3RlZFJvd3M6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0PGFueT4oX3NlbGVjdGVkUm93cy5maWx0ZXIociA9PiB0aGlzLmRhdGEuZGF0YS5pbmNsdWRlcyhyKSkpO1xuICB9XG5cbiAgZW1pdENlbGxBY3Rpb24oaXRlbTogYW55LCBjb2x1bW46IHN0cmluZywgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vbkNlbGxBY3Rpb24uZW1pdChuZXcgQmlpdFRhYmxlQWN0aW9uUmVzcG9uc2UoaXRlbSwgY29sdW1uKSk7XG4gIH1cblxuICBlbWl0Um93Q2xpY2soaXRlbTogYW55KSB7XG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICByZXNldElucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2ggPSB0aGlzLmN1cnJlbnRTZWFyY2g7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYW52YXNcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiICpuZ0lmPVwiIWhpZGVIZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiIGlkPVwibWVudVwiPlxuICAgICAgPGJpaXQtdmVydGljYWwtbWVudSAqbmdJZj1cImFjdGlvbnNUcGxcIiBjbGFzcz1cInZlcnRpY2FsLW1lbnVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYmlpdC12ZXJ0aWNhbC1tZW51PlxuICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbnNUcGxcIiBjbGFzcz1cImhvcml6b250YWwtbWVudVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uc1RwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWFjdGlvbnNUcGxcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm1zXCI+XG4gICAgICA8YmlpdC1pbnB1dC10ZXh0IGlkPVwic2VhcmNoLWZpZWxkXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25BY3Rpb25QZXJmb3JtZWQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdG9yLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBvblRhYmxlVXBkYXRlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwicmVzZXRJbnB1dFZhbHVlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRhYmxlVXBkYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3RhYmxlLnNlYXJjaCcpXCJcbiAgICAgID48L2JpaXQtaW5wdXQtdGV4dD5cbiAgICAgIDxiaWl0LW11bHRpc2VsZWN0IGlkPVwiY29sdW1uLXNlbGVjdG9yXCIgW25nTW9kZWxdPVwiY29sdW1ucyB8IHZpc2libGVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldENvbHVtblZpc2liaWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ2aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0KCd0YWJsZS5jb2x1bW4tc2VsZWN0b3InKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJCaWl0TXVsdGlzZWxlY3RUeXBlLklDT05cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXG4gICAgICA+PC9iaWl0LW11bHRpc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgIDxiaWl0LXByb2dyZXNzLWJhciBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyLjFyZW07IGxlZnQ6IDAuMnJlbTsgd2lkdGg6IGNhbGMoMTAwJSAtIDAuMXJlbSk7XCI+PC9iaWl0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGU+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggKm5nSWY9XCJpc1NlbGVjdGFibGUgfHwgaXNTZWxlY3RhYmxlU2luZ2xlXCIgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgIDxiaWl0LWNoZWNrYm94ICpuZ0lmPVwiaXNTZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGE/LmRhdGEubGVuZ3RoICYmIHNlbGVjdGVkUm93cy5zaXplID09IGRhdGE/LmRhdGEubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIiRldmVudCA/IGRhdGE/LmRhdGEuZm9yRWFjaChzZWxlY3RlZFJvd3MuYWRkLCBzZWxlY3RlZFJvd3MpIDogc2VsZWN0ZWRSb3dzLmNsZWFyKClcIlxuICAgICAgICAgICAgPjwvYmlpdC1jaGVja2JveD5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMsIGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiaXNTb3J0YWJsZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2x1bW4udmlzaWJsZSA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoID8gY29sdW1uLndpZHRoICsgJ3B4JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlzU29ydGFibGUgPyBvblRhYmxlU29ydChjb2x1bW4pIDogZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICB7e2NvbHVtbi5sYWJlbH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxiaWl0LWljb24gKm5nSWY9XCJpc1NvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic29ydGluZz8ubmFtZSA9PSBjb2x1bW4ubmFtZSA/ICdyaWdodF9hcnJvdycgOiAndXBfZG93bl9hcnJvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0aFN0eWxlXT1cIntmaWxsOiAnI0ZGRkZGRid9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFzY109XCJzb3J0aW5nPy5uYW1lID09IGNvbHVtbi5uYW1lICYmIHNvcnRpbmc/Lm9yZGVyID09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRlc2NdPVwic29ydGluZz8ubmFtZSA9PSBjb2x1bW4ubmFtZSAmJiBzb3J0aW5nPy5vcmRlciA9PSAnZGVzYydcIlxuICAgICAgICAgICAgPjwvYmlpdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1yZXNpemVyXCJcbiAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJyZXNpemVDb2x1bW4oJGV2ZW50LCBjb2x1bW4sIGkpXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YT8uZGF0YTsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0YWJsZV09XCJpc1NlbGVjdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkUm93cy5oYXMoaXRlbSlcIlxuICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cImVtaXRSb3dDbGljayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzU2VsZWN0YWJsZSB8fCBpc1NlbGVjdGFibGVTaW5nbGVcIiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgICAgICA8YmlpdC1jaGVja2JveCBpZD1cInNlbGVjdHt7aX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRSb3dzLmhhcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFJvdyhpdGVtLCB0cnVlKVwiXG4gICAgICAgICAgICAgID48L2JpaXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cInNlbGVjdFJvdyhpdGVtLCAkZXZlbnQuY3RybEtleSlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2x1bW4udmlzaWJsZSA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGggPyBjb2x1bW4ud2lkdGggKyAncHgnIDogbnVsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5ERUZBVUxUXCI+XG4gICAgICAgICAgICAgICAge3tpdGVtIHwgY29sdW1uRGF0YTogY29sdW1uLm5hbWV9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5mb3JtYXQgPT0gQmlpdFRhYmxlQ29sdW1uRm9ybWF0LkJPT0xFQU5cIj5cbiAgICAgICAgICAgICAgICB7eyhpdGVtIHwgY29sdW1uRGF0YTogY29sdW1uLm5hbWUpID8gdCgndGFibGUueWVzJykgOiB0KCd0YWJsZS5ubycpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuREFURVwiPlxuICAgICAgICAgICAgICAgIHt7KGl0ZW0gfCBjb2x1bW5EYXRhOiBjb2x1bW4ubmFtZSkgfCBsb2NhbGl6ZWREYXRlfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5CVVRUT05cIlxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87IHRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyOyB0ZXh0LWFsaWduOiAtbW96LWNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGJpaXQtYnV0dG9uIHRlcnRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiZW1pdENlbGxBY3Rpb24oaXRlbSwgY29sdW1uLm5hbWUsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7aXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5JQ09OX0JVVFRPTlwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogLXdlYmtpdC1jZW50ZXI7IHRleHQtYWxpZ246IC1tb3otY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gYmlpdC1pY29uIFtpY29uXT1cIml0ZW0gfCBjb2x1bW5EYXRhOiBjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiZW1pdENlbGxBY3Rpb24oaXRlbSwgY29sdW1uLm5hbWUsICRldmVudCk7XCI+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuSUNPTlwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bzsgaGVpZ2h0OiAxLjA1cmVtO1wiPlxuICAgICAgICAgICAgICAgIDxiaWl0LWljb24gW25hbWVdPVwiaXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lXCI+PC9iaWl0LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuQ1VTVE9NX0hUTUxcIlxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87IHRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyOyB0ZXh0LWFsaWduOiAtbW96LWNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCIgKm5nSWY9XCIhaGlkZUZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiPlxuICAgICAgPGEgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDAuN3JlbVwiICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemVcIj5TZWxlY3RlZDo8L2E+XG4gICAgICA8YSAqbmdJZj1cInNlbGVjdGVkUm93cy5zaXplXCI+e3tzZWxlY3RlZFJvd3Muc2l6ZX19PC9hPlxuICAgIDwvZGl2PlxuICAgIDxiaWl0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvclwiXG4gICAgICBbbmdNb2RlbF09XCJwYWdpbmF0b3JcIiAobmdNb2RlbENoYW5nZSk9XCJwYWdpbmF0b3IgPSAkZXZlbnQ7IG9uVGFibGVVcGRhdGUoKVwiPjwvYmlpdC1wYWdpbmF0b3I+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlpdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXphcmRyeS10aGVtZS90YWJsZS9zcmMvYmlpdC10YWJsZS9iaWl0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemFyZHJ5LXRoZW1lL3RhYmxlL3NyYy9iaWl0LXRhYmxlL2JpaXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBa0IscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBSzVFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFBb0IsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQzs7MEhBSFUsNEJBQTRCOzhHQUE1Qiw0QkFBNEI7NEZBQTVCLDRCQUE0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RUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ25DLENBQUM7O2dIQXZOVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw2UkFMbEIsQ0FBQztZQUNWLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDO1NBQzFELENBQUMsNkhDM0VKLHc4TUF3SUEsdTNKRDlHYSw0QkFBNEIseURBa0I1QiwwQkFBMEI7NEZBaUMxQixrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDO3lCQUMxRCxDQUFDO3lIQUlxQixLQUFLO3NCQUEzQixLQUFLO3VCQUFDLFVBQVU7Z0JBVUssUUFBUTtzQkFBN0IsS0FBSzt1QkFBQyxTQUFTO2dCQVNQLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRW1CLFVBQVU7c0JBQWxDLFlBQVk7dUJBQUMsU0FBUztnQkFRYixRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCaWl0UGFnaW5hdG9yT3B0aW9uc30gZnJvbSAnLi4vYmlpdC1wYWdpbmF0b3IvbW9kZWxzL2JpaXQtcGFnaW5hdG9yLW9wdGlvbnMnO1xuaW1wb3J0IHtCaWl0VGFibGVDb2x1bW4sIEJpaXRUYWJsZUNvbHVtbkZvcm1hdH0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtDb2x1bW5SZXNpemVIYW5kbGVyfSBmcm9tICcuL21vZGVscy9jb2x1bW4tcmVzaXplLWhhbmRsZXInO1xuaW1wb3J0IHtCaWl0VGFibGVSZXNwb25zZX0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1yZXNwb25zZSc7XG5pbXBvcnQge0JpaXRUYWJsZURhdGF9IGZyb20gJy4vbW9kZWxzL2JpaXQtdGFibGUtZGF0YSc7XG5pbXBvcnQge0JpaXRUYWJsZVNvcnRpbmcsIEJpaXRUYWJsZVNvcnRpbmdPcmRlcn0gZnJvbSAnLi9tb2RlbHMvYmlpdC10YWJsZS1zb3J0aW5nJztcbmltcG9ydCB7QmlpdE11bHRpc2VsZWN0VHlwZX0gZnJvbSAnQGJpaXQtc29sdXRpb25zL3dpemFyZHJ5LXRoZW1lL2lucHV0cyc7XG5pbXBvcnQge1RSQU5TTE9DT19TQ09QRX0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xuaW1wb3J0IHtCaWl0VGFibGVBY3Rpb25SZXNwb25zZX0gZnJvbSBcIi4vbW9kZWxzL2JpaXQtdGFibGUtYWN0aW9uLXJlc3BvbnNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWxlY3RhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBCaWl0VGFibGVDb21wb25lbnQpIHtcbiAgICBwYXJlbnQuaXNTZWxlY3RhYmxlID0gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2VsZWN0YWJsZVNpbmdsZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJpaXRUYWJsZVNlbGVjdGFibGVTaW5nbGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogQmlpdFRhYmxlQ29tcG9uZW50KSB7XG4gICAgcGFyZW50LmlzU2VsZWN0YWJsZVNpbmdsZSA9IHRydWU7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NvcnRhYmxlXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlU29ydGFibGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogQmlpdFRhYmxlQ29tcG9uZW50KSB7XG4gICAgcGFyZW50LmlzU29ydGFibGUgPSB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1toaWRlSGVhZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlSGVhZGVybGVzc0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBCaWl0VGFibGVDb21wb25lbnQpIHtcbiAgICBwYXJlbnQuaGlkZUhlYWRlciA9IHRydWU7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2hpZGVGb290ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBCaWl0VGFibGVGb290ZXJsZXNzRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IEJpaXRUYWJsZUNvbXBvbmVudCkge1xuICAgIHBhcmVudC5oaWRlRm9vdGVyID0gdHJ1ZTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiaWl0LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JpaXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iaWl0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBUUkFOU0xPQ09fU0NPUEUsXG4gICAgdXNlVmFsdWU6IHtzY29wZTogJ3dpemFyZHJ5LXRoZW1lL3RhYmxlJywgYWxpYXM6IFwidGFibGVcIn1cbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgQmlpdFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBASW5wdXQoJ21ldGFkYXRhJykgc2V0IF9kYXRhKGRhdGE6IEJpaXRUYWJsZURhdGE8YW55Pikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRvciA9IG5ldyBCaWl0UGFnaW5hdG9yT3B0aW9ucyh0aGlzLnBhZ2luYXRvci5jdXJyZW50UGFnZSwgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsIHRoaXMucGFnZVNpemVzLCBkYXRhLnRvdGFsSXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnbG9hZGluZycpIHNldCBfbG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGxvYWRpbmc7XG4gICAgICB0aGlzLnNldExvYWRpbmdCYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgY29sdW1uczogQmlpdFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgcGFnZVNpemVzOiBudW1iZXJbXSA9IFtdO1xuICBASW5wdXQoKSBkZWZhdWx0UGFnZVNpemU6IG51bWJlcjtcblxuICBAQ29udGVudENoaWxkKCdhY3Rpb25zJykgYWN0aW9uc1RwbCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaXNTZWxlY3RhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU2VsZWN0YWJsZVNpbmdsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NvcnRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvblVwZGF0ZTogRXZlbnRFbWl0dGVyPEJpaXRUYWJsZVJlc3BvbnNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QmlpdFRhYmxlUmVzcG9uc2U+KCk7XG4gIEBPdXRwdXQoKSBvbkNlbGxBY3Rpb246IEV2ZW50RW1pdHRlcjxCaWl0VGFibGVBY3Rpb25SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEJpaXRUYWJsZUFjdGlvblJlc3BvbnNlPigpO1xuICBAT3V0cHV0KCkgb25Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgZGF0YTogQmlpdFRhYmxlRGF0YTxhbnk+O1xuICBwcm90ZWN0ZWQgcGFnaW5hdG9yO1xuICBwcm90ZWN0ZWQgc29ydGluZzogQmlpdFRhYmxlU29ydGluZztcbiAgcHJvdGVjdGVkIHNlbGVjdGVkUm93czogU2V0PGFueT4gPSBuZXcgU2V0PGFueT4oKTtcbiAgcHJvdGVjdGVkIGNvbHVtblJlc2l6ZTogQ29sdW1uUmVzaXplSGFuZGxlciA9IG5ldyBDb2x1bW5SZXNpemVIYW5kbGVyKCk7XG4gIHByb3RlY3RlZCBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzZWFyY2g6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgY3VycmVudFNlYXJjaDogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCByZWFkb25seSBCaWl0TXVsdGlzZWxlY3RUeXBlID0gQmlpdE11bHRpc2VsZWN0VHlwZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJpaXRUYWJsZUNvbHVtbkZvcm1hdCA9IEJpaXRUYWJsZUNvbHVtbkZvcm1hdDtcblxuICBwcml2YXRlIGZpbmRUaW1lb3V0OiBOb2RlSlMuVGltZW91dDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbTogRWxlbWVudFJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IgPSBuZXcgQmlpdFBhZ2luYXRvck9wdGlvbnMoMSwgdGhpcy5kZWZhdWx0UGFnZVNpemUsIHRoaXMucGFnZVNpemVzLCB0aGlzLmRhdGEgPyB0aGlzLmRhdGEudG90YWxJdGVtcyA6IDEpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuc2V0Q29sdW1uU2l6ZSgpO1xuICB9XG5cbiAgLy8gRml4IGZvciByZXNpemFibGUgY29sdW1uc1xuICBwcml2YXRlIHNldENvbHVtblNpemUoKSB7XG4gICAgLy8gVGFrZXMgc2Nyb2xsYmFyIHBhZGRpbmcgaW4gbWluZCBiZWZvcmUgaGFyZGNvZGluZyB3aWR0aHNcbiAgICB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGVudCcpLnN0eWxlLnBhZGRpbmdSaWdodCA9ICcwLjdyZW0nO1xuXG4gICAgQXJyYXkuZnJvbSh0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0aGVhZCcpLmZpcnN0Q2hpbGQuY2hpbGRyZW4pLmZvckVhY2gob2dDb2x1bW4gPT4ge1xuICAgICAgY29uc3QgY29sdW1uID0gb2dDb2x1bW4gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIGlmIChjb2x1bW4uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY29sdW1uLnN0eWxlLndpZHRoID09ICcnICYmICFjb2x1bW4uY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3QnKSkge1xuICAgICAgICBjb2x1bW4uc3R5bGUud2lkdGggPSBjb2x1bW4ub2Zmc2V0V2lkdGggLSAxMCArICdweCc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbHVtbklubmVyV29yZEZpdENoZWNrKGNvbHVtbik7XG4gICAgfSk7XG4gICAgdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRlbnQnKS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBudWxsO1xuXG4gICAgdGhpcy5zZXRMb2FkaW5nQmFyKCk7XG4gIH1cblxuICBjb2x1bW5Jbm5lcldvcmRGaXRDaGVjayhjb2x1bW46IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgbWluQ29sdW1uU2l6ZSA9IChjb2x1bW4uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFdpZHRoXG4gICAgICArIDIuNCAqIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKSAqIDI7XG5cbiAgICAvLyBJZiBpbm5lciB0ZXh0IHdpZHRoIHBsdXMgaGVhZGVyIHBhZGRpbmdzIGFyZSBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgaGVhZGVyIHdpZHRoIChzZXQgYnkgdXNlciBjb2x1bW4gcHJvcGVydGllcylcbiAgICBpZiAobWluQ29sdW1uU2l6ZSA+IGNvbHVtbi5vZmZzZXRXaWR0aCkge1xuICAgICAgKGNvbHVtbiBhcyBIVE1MRWxlbWVudCkuc3R5bGUud2lkdGggPSBtaW5Db2x1bW5TaXplICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBzZXRMb2FkaW5nQmFyKCk6IHZvaWQge1xuICAgIGNvbnN0IHByb2dyZXNzQmFyID0gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYmlpdC1wcm9ncmVzcy1iYXInKTtcbiAgICBpZiAocHJvZ3Jlc3NCYXIpIHtcbiAgICAgIHByb2dyZXNzQmFyLnN0eWxlLnRvcCA9XG4gICAgICAgIHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJykub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBvblRhYmxlVXBkYXRlKGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5maW5kVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmluZFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLmZpbmRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWFyY2ggPSB0aGlzLnNlYXJjaDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLm9uVXBkYXRlLmVtaXQobmV3IEJpaXRUYWJsZVJlc3BvbnNlKFxuICAgICAgICB0aGlzLnBhZ2luYXRvci5jdXJyZW50UGFnZSxcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXG4gICAgICAgIHRoaXMuc2VhcmNoLFxuICAgICAgICB0aGlzLnNvcnRpbmdcbiAgICAgICkpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZmluZFRpbWVvdXQpO1xuICAgICAgdGhpcy5maW5kVGltZW91dCA9IG51bGw7XG4gICAgfSwgZm9yY2UgPyAwIDogNTAwKTtcbiAgfVxuXG4gIG9uVGFibGVTb3J0KGNvbHVtbjogQmlpdFRhYmxlQ29sdW1uKSB7XG4gICAgaWYgKHRoaXMuc29ydGluZyAmJiB0aGlzLnNvcnRpbmcubmFtZSA9PSBjb2x1bW4ubmFtZSkge1xuICAgICAgc3dpdGNoICh0aGlzLnNvcnRpbmcub3JkZXIpIHtcbiAgICAgICAgY2FzZSBCaWl0VGFibGVTb3J0aW5nT3JkZXIuQVNDOlxuICAgICAgICAgIHRoaXMuc29ydGluZy5vcmRlciA9IEJpaXRUYWJsZVNvcnRpbmdPcmRlci5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJpaXRUYWJsZVNvcnRpbmdPcmRlci5ERVNDOlxuICAgICAgICAgIHRoaXMuc29ydGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0aW5nID0gbmV3IEJpaXRUYWJsZVNvcnRpbmcoY29sdW1uLm5hbWUsIEJpaXRUYWJsZVNvcnRpbmdPcmRlci5BU0MpO1xuICAgIH1cblxuICAgIHRoaXMub25UYWJsZVVwZGF0ZSgpO1xuICB9XG5cbiAgc25ha2VUb0NhbWVsKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyaW5nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXVthLXpdL2csIChncm91cCkgPT4gZ3JvdXAuc2xpY2UoLTEpLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgcmVzaXplQ29sdW1uKGV2ZW50LCBjb2x1bW46IEJpaXRUYWJsZUNvbHVtbiwgaW5kZXgpIHtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydCA9IGV2ZW50LnRhcmdldDtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5wcmVzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFggPSBldmVudC54O1xuICAgIHRoaXMuY29sdW1uUmVzaXplLnN0YXJ0V2lkdGggPSAodGhpcy5jb2x1bW5SZXNpemUuc3RhcnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGg7XG5cbiAgICBsZXQgY29sdW1uRWxlbSA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJykuZmlyc3RDaGlsZC5jaGlsZHJlblt0aGlzLmlzU2VsZWN0YWJsZSA/IGluZGV4ICsgMSA6IGluZGV4XTtcbiAgICB0aGlzLmNvbHVtblJlc2l6ZS5taW5XaWR0aCA9IChjb2x1bW5FbGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aFxuICAgICAgKyAyLjQgKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSkgKiAyO1xuXG4gICAgdGhpcy5pbml0UmVzaXphYmxlQ29sdW1ucyhjb2x1bW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVzaXphYmxlQ29sdW1ucyhjb2x1bW46IEJpaXRUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IG1vdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnbW91c2Vtb3ZlJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb2x1bW5SZXNpemUucHJlc3NlZCkge1xuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFdpZHRoICsgKGV2ZW50LnggLSB0aGlzLmNvbHVtblJlc2l6ZS5zdGFydFgpO1xuICAgICAgICBpZiAod2lkdGggPiB0aGlzLmNvbHVtblJlc2l6ZS5taW5XaWR0aCkge1xuICAgICAgICAgIGNvbHVtbi53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICBjb25zdCByZWxlYXNlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ21vdXNldXAnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbHVtblJlc2l6ZS5wcmVzc2VkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLnByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgcmVsZWFzZUxpc3RlbmVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBzZXRDb2x1bW5WaXNpYmlsaXR5KHJlc3BvbnNlOiBCaWl0VGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4gcmVzcG9uc2Uuc29tZShlID0+IGUubmFtZSA9PSBjLm5hbWUpID8gYy52aXNpYmxlID0gdHJ1ZSA6IGMudmlzaWJsZSA9IGZhbHNlKTtcbiAgfVxuXG4gIHNlbGVjdFJvdyhpdGVtLCBob2xkQ3RybCkge1xuICAgIGlmICghaG9sZEN0cmwgfHwgdGhpcy5pc1NlbGVjdGFibGVTaW5nbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGl0ZW0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd3MoKTogYW55W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zZWxlY3RlZFJvd3NdO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRSb3dzKF9zZWxlY3RlZFJvd3M6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0PGFueT4oX3NlbGVjdGVkUm93cy5maWx0ZXIociA9PiB0aGlzLmRhdGEuZGF0YS5pbmNsdWRlcyhyKSkpO1xuICB9XG5cbiAgZW1pdENlbGxBY3Rpb24oaXRlbTogYW55LCBjb2x1bW46IHN0cmluZywgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vbkNlbGxBY3Rpb24uZW1pdChuZXcgQmlpdFRhYmxlQWN0aW9uUmVzcG9uc2UoaXRlbSwgY29sdW1uKSk7XG4gIH1cblxuICBlbWl0Um93Q2xpY2soaXRlbTogYW55KSB7XG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICByZXNldElucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2ggPSB0aGlzLmN1cnJlbnRTZWFyY2g7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYW52YXNcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiICpuZ0lmPVwiIWhpZGVIZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiIGlkPVwibWVudVwiPlxuICAgICAgPGJpaXQtdmVydGljYWwtbWVudSAqbmdJZj1cImFjdGlvbnNUcGxcIiBjbGFzcz1cInZlcnRpY2FsLW1lbnVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYmlpdC12ZXJ0aWNhbC1tZW51PlxuICAgICAgPGRpdiAqbmdJZj1cImFjdGlvbnNUcGxcIiBjbGFzcz1cImhvcml6b250YWwtbWVudVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uc1RwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWFjdGlvbnNUcGxcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm1zXCI+XG4gICAgICA8YmlpdC1pbnB1dC10ZXh0IGlkPVwic2VhcmNoLWZpZWxkXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25BY3Rpb25QZXJmb3JtZWQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdG9yLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBvblRhYmxlVXBkYXRlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwicmVzZXRJbnB1dFZhbHVlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRhYmxlVXBkYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3RhYmxlLnNlYXJjaCcpXCJcbiAgICAgID48L2JpaXQtaW5wdXQtdGV4dD5cbiAgICAgIDxiaWl0LW11bHRpc2VsZWN0IGlkPVwiY29sdW1uLXNlbGVjdG9yXCIgW25nTW9kZWxdPVwiY29sdW1ucyB8IHZpc2libGVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldENvbHVtblZpc2liaWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ2aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0KCd0YWJsZS5jb2x1bW4tc2VsZWN0b3InKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJCaWl0TXVsdGlzZWxlY3RUeXBlLklDT05cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXG4gICAgICA+PC9iaWl0LW11bHRpc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgIDxiaWl0LXByb2dyZXNzLWJhciBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyLjFyZW07IGxlZnQ6IDAuMnJlbTsgd2lkdGg6IGNhbGMoMTAwJSAtIDAuMXJlbSk7XCI+PC9iaWl0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGU+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggKm5nSWY9XCJpc1NlbGVjdGFibGUgfHwgaXNTZWxlY3RhYmxlU2luZ2xlXCIgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgIDxiaWl0LWNoZWNrYm94ICpuZ0lmPVwiaXNTZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGE/LmRhdGEubGVuZ3RoICYmIHNlbGVjdGVkUm93cy5zaXplID09IGRhdGE/LmRhdGEubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIiRldmVudCA/IGRhdGE/LmRhdGEuZm9yRWFjaChzZWxlY3RlZFJvd3MuYWRkLCBzZWxlY3RlZFJvd3MpIDogc2VsZWN0ZWRSb3dzLmNsZWFyKClcIlxuICAgICAgICAgICAgPjwvYmlpdC1jaGVja2JveD5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMsIGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiaXNTb3J0YWJsZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2x1bW4udmlzaWJsZSA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoID8gY29sdW1uLndpZHRoICsgJ3B4JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlzU29ydGFibGUgPyBvblRhYmxlU29ydChjb2x1bW4pIDogZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICB7e2NvbHVtbi5sYWJlbH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxiaWl0LWljb24gKm5nSWY9XCJpc1NvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic29ydGluZz8ubmFtZSA9PSBjb2x1bW4ubmFtZSA/ICdyaWdodF9hcnJvdycgOiAndXBfZG93bl9hcnJvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcGF0aFN0eWxlXT1cIntmaWxsOiAnI0ZGRkZGRid9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFzY109XCJzb3J0aW5nPy5uYW1lID09IGNvbHVtbi5uYW1lICYmIHNvcnRpbmc/Lm9yZGVyID09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRlc2NdPVwic29ydGluZz8ubmFtZSA9PSBjb2x1bW4ubmFtZSAmJiBzb3J0aW5nPy5vcmRlciA9PSAnZGVzYydcIlxuICAgICAgICAgICAgPjwvYmlpdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1yZXNpemVyXCJcbiAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJyZXNpemVDb2x1bW4oJGV2ZW50LCBjb2x1bW4sIGkpXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YT8uZGF0YTsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0YWJsZV09XCJpc1NlbGVjdGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkUm93cy5oYXMoaXRlbSlcIlxuICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cImVtaXRSb3dDbGljayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzU2VsZWN0YWJsZSB8fCBpc1NlbGVjdGFibGVTaW5nbGVcIiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgICAgICA8YmlpdC1jaGVja2JveCBpZD1cInNlbGVjdHt7aX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRSb3dzLmhhcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFJvdyhpdGVtLCB0cnVlKVwiXG4gICAgICAgICAgICAgID48L2JpaXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgKHBvaW50ZXJkb3duKT1cInNlbGVjdFJvdyhpdGVtLCAkZXZlbnQuY3RybEtleSlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIiFjb2x1bW4udmlzaWJsZSA/ICdub25lJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGggPyBjb2x1bW4ud2lkdGggKyAncHgnIDogbnVsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5ERUZBVUxUXCI+XG4gICAgICAgICAgICAgICAge3tpdGVtIHwgY29sdW1uRGF0YTogY29sdW1uLm5hbWV9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5mb3JtYXQgPT0gQmlpdFRhYmxlQ29sdW1uRm9ybWF0LkJPT0xFQU5cIj5cbiAgICAgICAgICAgICAgICB7eyhpdGVtIHwgY29sdW1uRGF0YTogY29sdW1uLm5hbWUpID8gdCgndGFibGUueWVzJykgOiB0KCd0YWJsZS5ubycpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuREFURVwiPlxuICAgICAgICAgICAgICAgIHt7KGl0ZW0gfCBjb2x1bW5EYXRhOiBjb2x1bW4ubmFtZSkgfCBsb2NhbGl6ZWREYXRlfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5CVVRUT05cIlxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87IHRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyOyB0ZXh0LWFsaWduOiAtbW96LWNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGJpaXQtYnV0dG9uIHRlcnRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiZW1pdENlbGxBY3Rpb24oaXRlbSwgY29sdW1uLm5hbWUsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7aXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uZm9ybWF0ID09IEJpaXRUYWJsZUNvbHVtbkZvcm1hdC5JQ09OX0JVVFRPTlwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogLXdlYmtpdC1jZW50ZXI7IHRleHQtYWxpZ246IC1tb3otY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gYmlpdC1pY29uIFtpY29uXT1cIml0ZW0gfCBjb2x1bW5EYXRhOiBjb2x1bW4ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiZW1pdENlbGxBY3Rpb24oaXRlbSwgY29sdW1uLm5hbWUsICRldmVudCk7XCI+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuSUNPTlwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bzsgaGVpZ2h0OiAxLjA1cmVtO1wiPlxuICAgICAgICAgICAgICAgIDxiaWl0LWljb24gW25hbWVdPVwiaXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lXCI+PC9iaWl0LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmZvcm1hdCA9PSBCaWl0VGFibGVDb2x1bW5Gb3JtYXQuQ1VTVE9NX0hUTUxcIlxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IGF1dG87IHRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyOyB0ZXh0LWFsaWduOiAtbW96LWNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbSB8IGNvbHVtbkRhdGE6IGNvbHVtbi5uYW1lXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCIgKm5nSWY9XCIhaGlkZUZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiPlxuICAgICAgPGEgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDAuN3JlbVwiICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemVcIj5TZWxlY3RlZDo8L2E+XG4gICAgICA8YSAqbmdJZj1cInNlbGVjdGVkUm93cy5zaXplXCI+e3tzZWxlY3RlZFJvd3Muc2l6ZX19PC9hPlxuICAgIDwvZGl2PlxuICAgIDxiaWl0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvclwiXG4gICAgICBbbmdNb2RlbF09XCJwYWdpbmF0b3JcIiAobmdNb2RlbENoYW5nZSk9XCJwYWdpbmF0b3IgPSAkZXZlbnQ7IG9uVGFibGVVcGRhdGUoKVwiPjwvYmlpdC1wYWdpbmF0b3I+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1736,7 +1736,7 @@ class DateFilterSelectorComponent {
|
|
|
1736
1736
|
}
|
|
1737
1737
|
}
|
|
1738
1738
|
DateFilterSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFilterSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1739
|
-
DateFilterSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateFilterSelectorComponent, selector: "biit-date-filter-selector", inputs: { _items: ["items", "_items"], _field: ["field", "_field"], _range: ["range", "_range"] }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<div>\n <div *ngFor=\"let year of sortByYear.keys()\" class=\"date-filter-row\">\n <biit-checkbox [(ngModel)]=\"selectedRanges[year + '']\" (ngModelChange)=\"onYearSelected(year, $event)\" >\n <div class=\"year-title\">\n <div class=\"title-counter\">\n <div> {{year}} </div>\n <div> ({{sortByYear.get(year).length}})</div>\n </div>\n <biit-icon\n name=\"right_arrow\" class=\"year-arrow\" [class.arrow-rotate]=\"selectedYear === year\"\n (click)=\"$event.preventDefault(); onDisplayYear(year)\" />\n </div>\n <div class=\"month-body\" *ngIf=\"selectedYear === year\">\n <div *ngFor=\"let month of sortByMonth.keys()\">\n <biit-checkbox\n class=\"month-checkbox\"\n [(ngModel)]=\"selectedRanges[year + '-' + month]\"\n (ngModelChange)=\"onMonthSelected(year, month, $event)\" >\n <div class=\"title-counter\">\n <div>\n {{month | monthName}}\n </div>\n <div>\n ({{sortByMonth.get(month).length}})\n </div>\n </div>\n </biit-checkbox>\n </div>\n </div>\n </biit-checkbox>\n </div>\n</div>\n", styles: [".year-arrow{cursor:pointer;width:1em;height:1em;display:block;transition:transform .3s ease-in-out}.arrow-rotate{transform:rotate(90deg)}biit-checkbox{display:block;width:100%;&>label{width:100%;&>div{width:100%;&>div>a{width:100%}}}}.year-title{display:flex;align-items:center;&>div:first-child{flex-grow:1}}.month-body{display:flex;flex-direction:column;gap:.25em;font-size:.75em}.date-filter-row{margin:.5em 0;align-content:center}.title-counter{display:flex;&>div:first-child{flex-grow:1}&>div:last-child{color:gray;margin-right:.5em;font-size:.75em}}.month-body .title-counter>div:last-child{margin-right:1.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.BiitCheckboxComponent, selector: "biit-checkbox", inputs: ["disabled", "description", "showAlwaysDescription"] }, { kind: "component", type: i1$1.BiitIconComponent, selector: "biit-icon", inputs: ["name", "svgStyle", "pathStyle"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: MonthNamePipe, name: "monthName" }] });
|
|
1739
|
+
DateFilterSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateFilterSelectorComponent, selector: "biit-date-filter-selector", inputs: { _items: ["items", "_items"], _field: ["field", "_field"], _range: ["range", "_range"] }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<div>\n <div *ngFor=\"let year of sortByYear.keys()\" class=\"date-filter-row\">\n <biit-checkbox [(ngModel)]=\"selectedRanges[year + '']\" (ngModelChange)=\"onYearSelected(year, $event)\" >\n <div class=\"year-title\">\n <div class=\"title-counter\">\n <div> {{year}} </div>\n <div> ({{sortByYear.get(year).length}})</div>\n </div>\n <biit-icon\n name=\"right_arrow\" class=\"year-arrow\" [class.arrow-rotate]=\"selectedYear === year\"\n (click)=\"$event.preventDefault(); onDisplayYear(year)\" />\n </div>\n <div class=\"month-body\" *ngIf=\"selectedYear === year\">\n <div *ngFor=\"let month of sortByMonth.keys()\">\n <biit-checkbox\n class=\"month-checkbox\"\n [(ngModel)]=\"selectedRanges[year + '-' + month]\"\n (ngModelChange)=\"onMonthSelected(year, month, $event)\" >\n <div class=\"title-counter\">\n <div>\n {{month | monthName}}\n </div>\n <div>\n ({{sortByMonth.get(month).length}})\n </div>\n </div>\n </biit-checkbox>\n </div>\n </div>\n </biit-checkbox>\n </div>\n</div>\n", styles: [".year-arrow{cursor:pointer;width:1em;height:1em;display:block;transition:transform .3s ease-in-out}.arrow-rotate{transform:rotate(90deg)}biit-checkbox{display:block;width:100%;&>label{width:100%;&>div{width:100%;&>div>a{width:100%}}}}.year-title{display:flex;align-items:center;&>div:first-child{flex-grow:1}}.month-body{display:flex;flex-direction:column;gap:.25em;font-size:.75em}.date-filter-row{margin:.5em 0;align-content:center}.title-counter{display:flex;&>div:first-child{flex-grow:1}&>div:last-child{color:gray;margin-right:.5em;font-size:.75em}}.month-body .title-counter>div:last-child{margin-right:1.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.BiitCheckboxComponent, selector: "biit-checkbox", inputs: ["disabled", "description", "showAlwaysDescription"], outputs: ["onValueChange"] }, { kind: "component", type: i1$1.BiitIconComponent, selector: "biit-icon", inputs: ["name", "svgStyle", "pathStyle"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: MonthNamePipe, name: "monthName" }] });
|
|
1740
1740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateFilterSelectorComponent, decorators: [{
|
|
1741
1741
|
type: Component,
|
|
1742
1742
|
args: [{ selector: 'biit-date-filter-selector', template: "<div>\n <div *ngFor=\"let year of sortByYear.keys()\" class=\"date-filter-row\">\n <biit-checkbox [(ngModel)]=\"selectedRanges[year + '']\" (ngModelChange)=\"onYearSelected(year, $event)\" >\n <div class=\"year-title\">\n <div class=\"title-counter\">\n <div> {{year}} </div>\n <div> ({{sortByYear.get(year).length}})</div>\n </div>\n <biit-icon\n name=\"right_arrow\" class=\"year-arrow\" [class.arrow-rotate]=\"selectedYear === year\"\n (click)=\"$event.preventDefault(); onDisplayYear(year)\" />\n </div>\n <div class=\"month-body\" *ngIf=\"selectedYear === year\">\n <div *ngFor=\"let month of sortByMonth.keys()\">\n <biit-checkbox\n class=\"month-checkbox\"\n [(ngModel)]=\"selectedRanges[year + '-' + month]\"\n (ngModelChange)=\"onMonthSelected(year, month, $event)\" >\n <div class=\"title-counter\">\n <div>\n {{month | monthName}}\n </div>\n <div>\n ({{sortByMonth.get(month).length}})\n </div>\n </div>\n </biit-checkbox>\n </div>\n </div>\n </biit-checkbox>\n </div>\n</div>\n", styles: [".year-arrow{cursor:pointer;width:1em;height:1em;display:block;transition:transform .3s ease-in-out}.arrow-rotate{transform:rotate(90deg)}biit-checkbox{display:block;width:100%;&>label{width:100%;&>div{width:100%;&>div>a{width:100%}}}}.year-title{display:flex;align-items:center;&>div:first-child{flex-grow:1}}.month-body{display:flex;flex-direction:column;gap:.25em;font-size:.75em}.date-filter-row{margin:.5em 0;align-content:center}.title-counter{display:flex;&>div:first-child{flex-grow:1}&>div:last-child{color:gray;margin-right:.5em;font-size:.75em}}.month-body .title-counter>div:last-child{margin-right:1.2em}\n"] }]
|