@fundamental-ngx/platform 0.46.2-rc.2 → 0.46.2-rc.21
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/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +2 -2
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +2 -2
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/form/combobox/combobox/combobox.component.mjs +3 -3
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +3 -3
- package/esm2022/form/combobox/combobox.module.mjs +20 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +36 -28
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +148 -0
- package/esm2022/form/combobox/index.mjs +4 -3
- package/esm2022/form/form-group/form-field/form-field.component.mjs +2 -2
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +2 -2
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +2 -2
- package/esm2022/form/form-group/form-group.component.mjs +3 -3
- package/esm2022/form/index.mjs +37 -36
- package/esm2022/form/input-group/input-group.component.mjs +2 -2
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +4 -2
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +7 -5
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +3 -3
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
- package/esm2022/form/multi-input/multi-input.component.mjs +6 -4
- package/esm2022/form/select/select/select.component.mjs +3 -3
- package/esm2022/form/step-input/number/number-step-input.component.mjs +2 -2
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +2 -2
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +2 -2
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +2 -2
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +1 -1
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +2 -2
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +1 -1
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +2 -2
- package/esm2022/list/object-list-item/object-list-item.component.mjs +2 -2
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +2 -2
- package/esm2022/menu/menu-item.component.mjs +2 -2
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +3 -3
- package/esm2022/message-popover/message-popover.component.mjs +2 -2
- package/esm2022/object-attribute/object-attribute.component.mjs +2 -2
- package/esm2022/page-footer/page-footer.component.mjs +2 -2
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +3 -3
- package/esm2022/search-field/search-field.component.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +2 -2
- package/esm2022/shared/domain/data-source.mjs +3 -2
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +2 -2
- package/esm2022/split-menu-button/split-menu-button.component.mjs +2 -2
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +13 -12
- package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +2 -2
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +2 -2
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +2 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +3 -3
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +2 -2
- package/esm2022/variant-management/variant-management.component.mjs +2 -2
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +6 -6
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-form.mjs +484 -311
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-table.mjs +12 -11
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/form/combobox/combobox.module.d.ts +2 -1
- package/form/combobox/commons/base-combobox.d.ts +6 -4
- package/form/combobox/directives/combobox-item.directive.d.ts +86 -0
- package/form/combobox/index.d.ts +3 -2
- package/form/index.d.ts +36 -35
- package/fundamental-ngx-platform-v0.46.2-rc.21.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/table.component.d.ts +4 -3
- package/fundamental-ngx-platform-v0.46.2-rc.2.tgz +0 -0
|
@@ -233,7 +233,7 @@ export class SelectTabComponent extends VhdBaseTab {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SelectTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: SelectTabComponent, isStandalone: true, selector: "fdp-select-tab", inputs: { selectTabTitleId: "selectTabTitleId", selectTabCountId: "selectTabCountId", selected: "selected", loading: "loading", filters: "filters", selection: "selection", uniqueKey: "uniqueKey", pageSize: "pageSize", defaultMobileHeaders: "defaultMobileHeaders", displayedData: "displayedData" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "infiniteScrollTable", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-header\">\n <h5 fd-title role=\"heading\" aria-level=\"5\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate : { count: displayedData.length } }}\n </h5>\n</div>\n<div\n class=\"fdp-value-help-dialog__table-holder table-content\"\n fd-scrollbar\n fdInfiniteScroll\n (onScrollAction)=\"_showMoreElements()\"\n [scrollPercent]=\"80\"\n role=\"table\"\n>\n <table\n fd-table\n [popIn]=\"mobile\"\n [noBorderX]=\"mobile\"\n [noBorderY]=\"false\"\n [attr.aria-colcount]=\"_tableFilters.main.length\"\n [attr.aria-rowcount]=\"displayedData.length\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n [attr.aria-labelledby]=\"selectTabTitleId + ' ' + selectTabCountId\"\n >\n <label [id]=\"selectTabCountId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.selectTabCountHiddenA11yLabel'\n | fdTranslate : { rowCount: displayedData.length, colCount: _tableFilters.main.length }\n }}\n </label>\n <label [id]=\"selectTabTitleId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate : { count: displayedData.length } }}\n </label>\n <thead fd-table-header>\n <tr fd-table-row *ngIf=\"displayedData.length && _tableFilters\">\n <th fd-table-cell [fitContent]=\"mobile\">\n <fd-checkbox\n *ngIf=\"isMultiSelection\"\n [name]=\"uid + '-row-all'\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"_selectedAll\"\n (ngModelChange)=\"_toggleAllRows()\"\n ></fd-checkbox>\n </th>\n <th\n fd-table-cell\n *ngFor=\"let filter of _tableFilters.main; trackBy: _trackByFilterFn; let colindex = index\"\n [attr.aria-colindex]=\"colindex\"\n >\n {{ filter.label }}\n </th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container\n *ngFor=\"\n let row of displayedData | slice : _shownFrom : _shownCount;\n trackBy: _trackByTableRowFn;\n index as i\n \"\n >\n <tr\n fd-table-row\n [hoverable]=\"!mobile\"\n [main]=\"mobile\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n [activable]=\"!isMultiSelection\"\n (click)=\"!isMultiSelection && _toggleSelectRow(row)\"\n >\n <td fd-table-cell [fitContent]=\"mobile\">\n <fd-checkbox\n *ngIf=\"isMultiSelection\"\n [name]=\"uid + '-row-' + i\"\n [ngModel]=\"_selectedMap[row[uniqueKey]]\"\n (change)=\"_toggleSelectRow(row)\"\n ></fd-checkbox>\n </td>\n <td\n fd-table-cell\n *ngFor=\"let filter of _tableFilters.main; let rowIndex = index\"\n [attr.aria-rowindex]=\"rowIndex\"\n >\n {{ row[filter.key] || '' }}\n </td>\n </tr>\n\n <tr\n fd-table-row\n *ngIf=\"mobile && _tableFilters.secondary.length\"\n [secondary]=\"true\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n >\n <td fd-table-cell></td>\n <td colspan=\"100%\" fd-table-cell [fitContent]=\"true\">\n <p fd-table-text *ngFor=\"let filter of _tableFilters.secondary\">\n <label>{{ filter.label }}:</label>\n {{ row[filter.key] || '' }}\n </p>\n </td>\n </tr>\n </ng-container>\n <tr\n fd-table-row\n *ngIf=\"displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length\"\n >\n <td colspan=\"100%\">\n <div fd-bar barDesign=\"header-with-subheader\">\n <div fd-bar-middle>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\"\n (click)=\"_showMoreElements()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </td>\n </tr>\n <ng-container *ngIf=\"loading && !displayedData.length\">\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"3\">\n <fd-skeleton [style.margin]=\"'auto 0'\" type=\"text\" textLines=\"1\" width=\"60%\"></fd-skeleton>\n </td>\n </tr>\n </ng-container>\n <tr fd-table-row *ngIf=\"!loading && !displayedData.length\">\n <td fd-table-cell colspan=\"100%\">\n <div class=\"fdp-value-help-dialog__empty-message\">\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[fdInfiniteScroll]", inputs: ["scrollPercent", "scrollOffset"], outputs: ["onScrollAction"] }, { kind: "component", type: TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: RepeatDirective, selector: "[fdkRepeat]", inputs: ["fdkRepeat"] }, { kind: "component", type: SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: SelectTabComponent, isStandalone: true, selector: "fdp-select-tab", inputs: { selectTabTitleId: "selectTabTitleId", selectTabCountId: "selectTabCountId", selected: "selected", loading: "loading", filters: "filters", selection: "selection", uniqueKey: "uniqueKey", pageSize: "pageSize", defaultMobileHeaders: "defaultMobileHeaders", displayedData: "displayedData" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "infiniteScrollTable", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-header\">\n <h5 fd-title role=\"heading\" aria-level=\"5\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate : { count: displayedData.length } }}\n </h5>\n</div>\n<div\n class=\"fdp-value-help-dialog__table-holder table-content\"\n fd-scrollbar\n fdInfiniteScroll\n (onScrollAction)=\"_showMoreElements()\"\n [scrollPercent]=\"80\"\n role=\"table\"\n>\n <table\n fd-table\n [popIn]=\"mobile\"\n [noBorderX]=\"mobile\"\n [noBorderY]=\"false\"\n [attr.aria-colcount]=\"_tableFilters.main.length\"\n [attr.aria-rowcount]=\"displayedData.length\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n [attr.aria-labelledby]=\"selectTabTitleId + ' ' + selectTabCountId\"\n >\n <label [id]=\"selectTabCountId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.selectTabCountHiddenA11yLabel'\n | fdTranslate : { rowCount: displayedData.length, colCount: _tableFilters.main.length }\n }}\n </label>\n <label [id]=\"selectTabTitleId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate : { count: displayedData.length } }}\n </label>\n <thead fd-table-header>\n <tr fd-table-row *ngIf=\"displayedData.length && _tableFilters\">\n <th fd-table-cell [fitContent]=\"mobile\">\n <fd-checkbox\n *ngIf=\"isMultiSelection\"\n [name]=\"uid + '-row-all'\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"_selectedAll\"\n (ngModelChange)=\"_toggleAllRows()\"\n ></fd-checkbox>\n </th>\n <th\n fd-table-cell\n *ngFor=\"let filter of _tableFilters.main; trackBy: _trackByFilterFn; let colindex = index\"\n [attr.aria-colindex]=\"colindex\"\n >\n {{ filter.label }}\n </th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container\n *ngFor=\"\n let row of displayedData | slice : _shownFrom : _shownCount;\n trackBy: _trackByTableRowFn;\n index as i\n \"\n >\n <tr\n fd-table-row\n [hoverable]=\"!mobile\"\n [main]=\"mobile\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n [activable]=\"!isMultiSelection\"\n (click)=\"!isMultiSelection && _toggleSelectRow(row)\"\n >\n <td fd-table-cell [fitContent]=\"mobile\">\n <fd-checkbox\n *ngIf=\"isMultiSelection\"\n [name]=\"uid + '-row-' + i\"\n [ngModel]=\"_selectedMap[row[uniqueKey]]\"\n (change)=\"_toggleSelectRow(row)\"\n ></fd-checkbox>\n </td>\n <td\n fd-table-cell\n *ngFor=\"let filter of _tableFilters.main; let rowIndex = index\"\n [attr.aria-rowindex]=\"rowIndex\"\n >\n {{ row[filter.key] || '' }}\n </td>\n </tr>\n\n <tr\n fd-table-row\n *ngIf=\"mobile && _tableFilters.secondary.length\"\n [secondary]=\"true\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n >\n <td fd-table-cell></td>\n <td colspan=\"100%\" fd-table-cell [fitContent]=\"true\">\n <p fd-table-text *ngFor=\"let filter of _tableFilters.secondary\">\n <label>{{ filter.label }}:</label>\n {{ row[filter.key] || '' }}\n </p>\n </td>\n </tr>\n </ng-container>\n <tr\n fd-table-row\n *ngIf=\"displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length\"\n >\n <td colspan=\"100%\">\n <div fd-bar barDesign=\"header-with-subheader\">\n <div fd-bar-middle>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\"\n (click)=\"_showMoreElements()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </td>\n </tr>\n <ng-container *ngIf=\"loading && !displayedData.length\">\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"3\">\n <fd-skeleton [style.margin]=\"'auto 0'\" type=\"text\" textLines=\"1\" width=\"60%\"></fd-skeleton>\n </td>\n </tr>\n </ng-container>\n <tr fd-table-row *ngIf=\"!loading && !displayedData.length\">\n <td fd-table-cell colspan=\"100%\">\n <div class=\"fdp-value-help-dialog__empty-message\">\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[fdInfiniteScroll]", inputs: ["scrollPercent", "scrollOffset"], outputs: ["onScrollAction"] }, { kind: "component", type: TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: RepeatDirective, selector: "[fdkRepeat]", inputs: ["fdkRepeat"] }, { kind: "component", type: SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
237
237
|
}
|
|
238
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SelectTabComponent, decorators: [{
|
|
239
239
|
type: Component,
|
|
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
291
291
|
type: ViewChild,
|
|
292
292
|
args: [InfiniteScrollDirective]
|
|
293
293
|
}] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFF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b0I7c0JBRG5CLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLOztRQUtOLDREQUE0RDtRQUM1RCxNQUFNO3NCQUZMLE1BQU07Z0JBSzZCLG1CQUFtQjtzQkFBdEQsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsIFJlcGVhdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJhckNvbXBvbmVudCwgQmFyRWxlbWVudERpcmVjdGl2ZSwgQmFyTWlkZGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2luZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NrZWxldG9uJztcbmltcG9ydCB7XG4gICAgVGFibGVCb2R5RGlyZWN0aXZlLFxuICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICBUYWJsZVJvd0RpcmVjdGl2ZSxcbiAgICBUYWJsZVRleHREaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RhYmxlJztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBWZGhUYWJsZVNlbGVjdGlvbiwgVmhkRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZEJhc2VUYWIgfSBmcm9tICcuLi9iYXNlLXRhYi92aGQtYmFzZS10YWIuY29tcG9uZW50JztcblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1zZWxlY3QtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBGb2N1c2FibGVHcmlkRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGFibGVCb2R5RGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVRleHREaXJlY3RpdmUsXG4gICAgICAgIEJhckNvbXBvbmVudCxcbiAgICAgICAgQmFyTWlkZGxlRGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIFJlcGVhdERpcmVjdGl2ZSxcbiAgICAgICAgU2tlbGV0b25Db21wb25lbnQsXG4gICAgICAgIFNsaWNlUGlwZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RUYWJDb21wb25lbnQ8VD4gZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0VGl0bGVJZCA9IGBmZC1zZWxlY3QtdGFiLXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdENvdW50SWQgPSBgZmQtc2VsZWN0LXRhYi10aXRsZS1jb3VudC1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIFNlbGVjdCB0YWIgdGl0bGUgZWxlbWVudCBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0VGFiVGl0bGVJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0VGl0bGVJZDtcblxuICAgIC8qKiBTZWxlY3QgdGFiIGNvdW50IGVsZW1lbnQgSUQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdFRhYkNvdW50SWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdENvdW50SWQ7XG5cbiAgICAvKiogU2VsZWN0ZWQgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkOiBUW10gPSBbXTtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQWN0dWFsIGZpbHRlcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlcnM6IFZoZEZpbHRlcltdID0gW107XG5cbiAgICAvKiogQ2xvc2UgZGlhbG9nIGltbWVkaWF0ZWx5IGFmdGVyIHNlbGVjdCBhbnkgcm93IGZyb20gc2VhcmNoIHRhYmxlLiBJdCdsbCBiZSBza2lwcGVkIGlmIG11bHRpIG9wdGlvbiBpcyB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb246IFZkaFRhYmxlU2VsZWN0aW9uID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVW5pcSBmaWVsZCBmcm9tIGRhdGEgc291cmNlICovXG4gICAgQElucHV0KClcbiAgICB1bmlxdWVLZXkgPSAnaWQnO1xuXG4gICAgLyoqIEl0ZW1zIHBlciBwYWdlIGZvciBwYWdpbmF0aW9uIGJlbG93IHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIC8qKiBDb3VudCBvZiBkZWZhdWx0IG1vYmlsZSBoZWFkZXIgZnJvbSBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRNb2JpbGVIZWFkZXJzID0gMjtcblxuICAgIC8qKiBEaXNwbGF5ZWQgZGF0YSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5ZWREYXRhOiBUW10gPSBbXTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gcm93IHdhcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSkgaW5maW5pdGVTY3JvbGxUYWJsZTogSW5maW5pdGVTY3JvbGxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBpbmRldGVybWluYXRlIGZsYWcgZm9yIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIF9zZWxlY3RlZEFsbDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFNob3duIGl0ZW1zIGNvdW50IGluIG1vYmlsZSB2aWV3ICovXG4gICAgX3Nob3duRnJvbSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEN1cnJlbnQgcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfY3VycmVudFBhZ2UgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gSGVhZGVycyBhbmQgYm9keSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgX3RhYmxlRmlsdGVyczoge1xuICAgICAgICBtYWluOiBWaGRGaWx0ZXJbXTtcbiAgICAgICAgc2Vjb25kYXJ5OiBWaGRGaWx0ZXJbXTtcbiAgICB9ID0ge1xuICAgICAgICBtYWluOiBbXSxcbiAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZE1hcDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgIC8qKiBTZWxlY3Rpb24gdHlwZSBnZXR0ZXJzICovXG4gICAgZ2V0IGlzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdzaW5nbGUnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc09uY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiA9PT0gJ29uY2UnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc011bHRpU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbXB0eVRhYmxlTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh0cnVlKS50aGVuKCgpID0+IHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2ZpbHRlcnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVGaWx0ZXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdkaXNwbGF5ZWREYXRhJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoRGlzcGxheWVkRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWQgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoU2VsZWN0ZWRNYXAoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5VGFibGVSb3dGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnVuaXF1ZUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBmaWx0ZXJzICovXG4gICAgX3RyYWNrQnlGaWx0ZXJGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVmhkRmlsdGVyKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbS5rZXkgPyBpdGVtLmtleSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTaG93IG1vcmUgZWxlbWVudHMgKi9cbiAgICBfc2hvd01vcmVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFnZVNpemUgJiYgdGhpcy5fc2hvd25Db3VudCAhPT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCArPSB0aGlzLnBhZ2VTaXplO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IE1hdGgubWluKHRoaXMuX3Nob3duQ291bnQsIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBwYWdlIGluIGRlc2t0b3AgdmlldyAqL1xuICAgIF91cGRhdGVQYWdlKHBhZ2VOdW1iZXIgPSAxKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VTaXplKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkZyb20gPSAocGFnZU51bWJlciAtIDEpICogdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSBNYXRoLm1pbih0aGlzLl9zaG93bkZyb20gKyB0aGlzLnBhZ2VTaXplLCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvZ2dsZSBzZWxlY3RlZCBzdGF0ZSBmb3IgYWxsIGl0ZW1zICAqL1xuICAgIF90b2dnbGVBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5kaXNwbGF5ZWREYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFNlbGVjdGVkTWFwKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0b2dnbGUgc2VsZWN0ZWQgc3RhdGUgZm9yIG9uZSBpdGVtcyAgKi9cbiAgICBfdG9nZ2xlU2VsZWN0Um93KGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXTtcbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoczogVCkgPT4gc1t0aGlzLnVuaXF1ZUtleV0gIT09IGl0ZW1bdGhpcy51bmlxdWVLZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV0gPSAhdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgIT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGxUYWJsZT8uc2hvdWxkVHJpZ2dlckFjdGlvbigpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd01vcmVFbGVtZW50cygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTaG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TW9yZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNYW51YWxseSBjbGVhciBzZWxlY3RlZCBpdGVtcyAqL1xuICAgIHByaXZhdGUgX2NsZWFyU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBpbmRldGVybWluYXRlIGF0dHJpYnV0ZSBvbiBgc2VsZWN0IGFsbGAgY2hlY2tib3ggKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoVHJpc3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9zZWxlY3RlZE1hcCkuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtcbiAgICAgICAgaWYgKHNlbGVjdGVkID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkID09PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXQgdXAgZmlsdGVycyAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIGxldCBfbW9iaWxlVGFibGVIZWFkZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcigoZikgPT4gZi5tYWluKS5tYXAoKGYpID0+IGYua2V5KTtcbiAgICAgICAgICAgIGlmICghX21vYmlsZVRhYmxlSGVhZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBfbW9iaWxlVGFibGVIZWFkZXJzID0gdGhpcy5maWx0ZXJzLnNsaWNlKDAsIHRoaXMuZGVmYXVsdE1vYmlsZUhlYWRlcnMpLm1hcCgoZikgPT4gZi5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGFibGVGaWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIG1haW46IHRoaXMuZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gX21vYmlsZVRhYmxlSGVhZGVycy5zb21lKChrZXkpID0+IGtleSA9PT0gZmlsdGVyLmtleSkpLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogdGhpcy5maWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiAhX21vYmlsZVRhYmxlSGVhZGVycy5zb21lKChrZXkpID0+IGtleSA9PT0gZmlsdGVyLmtleSkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVGaWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIG1haW46IHRoaXMuZmlsdGVycyxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBkaXNwbGF5IGRhdGEgKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoRGlzcGxheWVkRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTaG93bigpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIHNlbGVjdGVkIG1hcCBmb3IgZGlzcGxheSBkYXRhICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFNlbGVjdGVkTWFwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kaXNwbGF5ZWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtzW3RoaXMudW5pcXVlS2V5XV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgIDxoNSBmZC10aXRsZSByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGV2ZWw9XCI1XCI+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJEaXNwbGF5Q291bnRMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICA8L2g1PlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYmxlLWhvbGRlciB0YWJsZS1jb250ZW50XCJcbiAgICBmZC1zY3JvbGxiYXJcbiAgICBmZEluZmluaXRlU2Nyb2xsXG4gICAgKG9uU2Nyb2xsQWN0aW9uKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgIFtzY3JvbGxQZXJjZW50XT1cIjgwXCJcbiAgICByb2xlPVwidGFibGVcIlxuPlxuICAgIDx0YWJsZVxuICAgICAgICBmZC10YWJsZVxuICAgICAgICBbcG9wSW5dPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWF09XCJtb2JpbGVcIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cImZhbHNlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb2xjb3VudF09XCJfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yb3djb3VudF09XCJkaXNwbGF5ZWREYXRhLmxlbmd0aFwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNlbGVjdFRhYlRpdGxlSWQgKyAnICcgKyBzZWxlY3RUYWJDb3VudElkXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCBbaWRdPVwic2VsZWN0VGFiQ291bnRJZFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0VGFiQ291bnRIaWRkZW5BMTF5TGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHJvd0NvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCwgY29sQ291bnQ6IF90YWJsZUZpbHRlcnMubWFpbi5sZW5ndGggfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJUaXRsZUlkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx0aGVhZCBmZC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpuZ0lmPVwiZGlzcGxheWVkRGF0YS5sZW5ndGggJiYgX3RhYmxlRmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy1hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluOyB0cmFja0J5OiBfdHJhY2tCeUZpbHRlckZuOyBsZXQgY29saW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29saW5kZXhdPVwiY29saW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keSBmZC10YWJsZS1ib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIGRpc3BsYXllZERhdGEgfCBzbGljZSA6IF9zaG93bkZyb20gOiBfc2hvd25Db3VudDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogX3RyYWNrQnlUYWJsZVJvd0ZuO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtcm93XG4gICAgICAgICAgICAgICAgICAgIFtob3ZlcmFibGVdPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYWluXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmFibGVdPVwiIWlzTXVsdGlTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiIWlzTXVsdGlTZWxlY3Rpb24gJiYgX3RvZ2dsZVNlbGVjdFJvdyhyb3cpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLm1haW47IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcm93aW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dbZmlsdGVyLmtleV0gfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYmxlLXJvd1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBfdGFibGVGaWx0ZXJzLnNlY29uZGFyeS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbc2Vjb25kYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGw+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWJsZS10ZXh0ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93W2ZpbHRlci5rZXldIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgZmQtdGFibGUtcm93XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5ZWREYXRhLmxlbmd0aCAmJiBtb2JpbGUgJiYgX3Nob3duQ291bnQgJiYgX3Nob3duQ291bnQgIT09IGRpc3BsYXllZERhdGEubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiaGVhZGVyLXdpdGgtc3ViaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VsZWN0VGFiTW9yZUJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZyAmJiAhZGlzcGxheWVkRGF0YS5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gW3N0eWxlLm1hcmdpbl09XCInYXV0byAwJ1wiIHR5cGU9XCJ0ZXh0XCIgdGV4dExpbmVzPVwiMVwiIHdpZHRoPVwiNjAlXCI+PC9mZC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRpc3BsYXllZERhdGEubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFF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b0I7c0JBRG5CLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLOztRQUtOLDREQUE0RDtRQUM1RCxNQUFNO3NCQUZMLE1BQU07Z0JBSzZCLG1CQUFtQjtzQkFBdEQsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsIFJlcGVhdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJhckNvbXBvbmVudCwgQmFyRWxlbWVudERpcmVjdGl2ZSwgQmFyTWlkZGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2luZmluaXRlLXNjcm9sbCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NrZWxldG9uJztcbmltcG9ydCB7XG4gICAgVGFibGVCb2R5RGlyZWN0aXZlLFxuICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICBUYWJsZVJvd0RpcmVjdGl2ZSxcbiAgICBUYWJsZVRleHREaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RhYmxlJztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBWZGhUYWJsZVNlbGVjdGlvbiwgVmhkRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFZoZEJhc2VUYWIgfSBmcm9tICcuLi9iYXNlLXRhYi92aGQtYmFzZS10YWIuY29tcG9uZW50JztcblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1zZWxlY3QtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBGb2N1c2FibGVHcmlkRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBUYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVGFibGVCb2R5RGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVRleHREaXJlY3RpdmUsXG4gICAgICAgIEJhckNvbXBvbmVudCxcbiAgICAgICAgQmFyTWlkZGxlRGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIFJlcGVhdERpcmVjdGl2ZSxcbiAgICAgICAgU2tlbGV0b25Db21wb25lbnQsXG4gICAgICAgIFNsaWNlUGlwZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RUYWJDb21wb25lbnQ8VD4gZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0VGl0bGVJZCA9IGBmZC1zZWxlY3QtdGFiLXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdENvdW50SWQgPSBgZmQtc2VsZWN0LXRhYi10aXRsZS1jb3VudC1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIFNlbGVjdCB0YWIgdGl0bGUgZWxlbWVudCBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0VGFiVGl0bGVJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0VGl0bGVJZDtcblxuICAgIC8qKiBTZWxlY3QgdGFiIGNvdW50IGVsZW1lbnQgSUQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdFRhYkNvdW50SWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdENvdW50SWQ7XG5cbiAgICAvKiogU2VsZWN0ZWQgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkOiBUW10gPSBbXTtcblxuICAgIC8qKiBMb2FkaW5nIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQWN0dWFsIGZpbHRlcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlcnM6IFZoZEZpbHRlcltdID0gW107XG5cbiAgICAvKiogQ2xvc2UgZGlhbG9nIGltbWVkaWF0ZWx5IGFmdGVyIHNlbGVjdCBhbnkgcm93IGZyb20gc2VhcmNoIHRhYmxlLiBJdCdsbCBiZSBza2lwcGVkIGlmIG11bHRpIG9wdGlvbiBpcyB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb246IFZkaFRhYmxlU2VsZWN0aW9uID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVW5pcSBmaWVsZCBmcm9tIGRhdGEgc291cmNlICovXG4gICAgQElucHV0KClcbiAgICB1bmlxdWVLZXkgPSAnaWQnO1xuXG4gICAgLyoqIEl0ZW1zIHBlciBwYWdlIGZvciBwYWdpbmF0aW9uIGJlbG93IHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIC8qKiBDb3VudCBvZiBkZWZhdWx0IG1vYmlsZSBoZWFkZXIgZnJvbSBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRNb2JpbGVIZWFkZXJzID0gMjtcblxuICAgIC8qKiBEaXNwbGF5ZWQgZGF0YSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5ZWREYXRhOiBUW10gPSBbXTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gcm93IHdhcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSkgaW5maW5pdGVTY3JvbGxUYWJsZTogSW5maW5pdGVTY3JvbGxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBpbmRldGVybWluYXRlIGZsYWcgZm9yIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIF9zZWxlY3RlZEFsbDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFNob3duIGl0ZW1zIGNvdW50IGluIG1vYmlsZSB2aWV3ICovXG4gICAgX3Nob3duRnJvbSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEN1cnJlbnQgcGFnZSBpbiBkZXNrdG9wIHZpZXcgKi9cbiAgICBfY3VycmVudFBhZ2UgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gSGVhZGVycyBhbmQgYm9keSBmb3Igc2VhcmNoIHRhYmxlICovXG4gICAgX3RhYmxlRmlsdGVyczoge1xuICAgICAgICBtYWluOiBWaGRGaWx0ZXJbXTtcbiAgICAgICAgc2Vjb25kYXJ5OiBWaGRGaWx0ZXJbXTtcbiAgICB9ID0ge1xuICAgICAgICBtYWluOiBbXSxcbiAgICAgICAgc2Vjb25kYXJ5OiBbXVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZE1hcDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgIC8qKiBTZWxlY3Rpb24gdHlwZSBnZXR0ZXJzICovXG4gICAgZ2V0IGlzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdzaW5nbGUnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc09uY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiA9PT0gJ29uY2UnO1xuICAgIH1cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc011bHRpU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbXB0eVRhYmxlTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh0cnVlKS50aGVuKCgpID0+IHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2ZpbHRlcnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVGaWx0ZXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdkaXNwbGF5ZWREYXRhJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoRGlzcGxheWVkRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWQgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoU2VsZWN0ZWRNYXAoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5VGFibGVSb3dGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnVuaXF1ZUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBmaWx0ZXJzICovXG4gICAgX3RyYWNrQnlGaWx0ZXJGbihfaW5kZXg6IG51bWJlciwgaXRlbTogVmhkRmlsdGVyKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gJiYgaXRlbS5rZXkgPyBpdGVtLmtleSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTaG93IG1vcmUgZWxlbWVudHMgKi9cbiAgICBfc2hvd01vcmVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFnZVNpemUgJiYgdGhpcy5fc2hvd25Db3VudCAhPT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCArPSB0aGlzLnBhZ2VTaXplO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IE1hdGgubWluKHRoaXMuX3Nob3duQ291bnQsIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBwYWdlIGluIGRlc2t0b3AgdmlldyAqL1xuICAgIF91cGRhdGVQYWdlKHBhZ2VOdW1iZXIgPSAxKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VTaXplKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkZyb20gPSAocGFnZU51bWJlciAtIDEpICogdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSBNYXRoLm1pbih0aGlzLl9zaG93bkZyb20gKyB0aGlzLnBhZ2VTaXplLCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgPSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvZ2dsZSBzZWxlY3RlZCBzdGF0ZSBmb3IgYWxsIGl0ZW1zICAqL1xuICAgIF90b2dnbGVBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5kaXNwbGF5ZWREYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFNlbGVjdGVkTWFwKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0b2dnbGUgc2VsZWN0ZWQgc3RhdGUgZm9yIG9uZSBpdGVtcyAgKi9cbiAgICBfdG9nZ2xlU2VsZWN0Um93KGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXTtcbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoczogVCkgPT4gc1t0aGlzLnVuaXF1ZUtleV0gIT09IGl0ZW1bdGhpcy51bmlxdWVLZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV0gPSAhdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuX3Nob3duQ291bnQgIT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGxUYWJsZT8uc2hvdWxkVHJpZ2dlckFjdGlvbigpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fc2hvd01vcmVFbGVtZW50cygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTaG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TW9yZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNYW51YWxseSBjbGVhciBzZWxlY3RlZCBpdGVtcyAqL1xuICAgIHByaXZhdGUgX2NsZWFyU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBpbmRldGVybWluYXRlIGF0dHJpYnV0ZSBvbiBgc2VsZWN0IGFsbGAgY2hlY2tib3ggKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoVHJpc3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9zZWxlY3RlZE1hcCkuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtcbiAgICAgICAgaWYgKHNlbGVjdGVkID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkID09PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFsbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXQgdXAgZmlsdGVycyAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIGxldCBfbW9iaWxlVGFibGVIZWFkZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcigoZikgPT4gZi5tYWluKS5tYXAoKGYpID0+IGYua2V5KTtcbiAgICAgICAgICAgIGlmICghX21vYmlsZVRhYmxlSGVhZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBfbW9iaWxlVGFibGVIZWFkZXJzID0gdGhpcy5maWx0ZXJzLnNsaWNlKDAsIHRoaXMuZGVmYXVsdE1vYmlsZUhlYWRlcnMpLm1hcCgoZikgPT4gZi5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGFibGVGaWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIG1haW46IHRoaXMuZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gX21vYmlsZVRhYmxlSGVhZGVycy5zb21lKChrZXkpID0+IGtleSA9PT0gZmlsdGVyLmtleSkpLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogdGhpcy5maWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiAhX21vYmlsZVRhYmxlSGVhZGVycy5zb21lKChrZXkpID0+IGtleSA9PT0gZmlsdGVyLmtleSkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVGaWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIG1haW46IHRoaXMuZmlsdGVycyxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVmcmVzaCBkaXNwbGF5IGRhdGEgKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoRGlzcGxheWVkRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXRTaG93bigpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpc3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIHNlbGVjdGVkIG1hcCBmb3IgZGlzcGxheSBkYXRhICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFNlbGVjdGVkTWFwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kaXNwbGF5ZWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcFtzW3RoaXMudW5pcXVlS2V5XV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgIDxoNSBmZC10aXRsZSByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGV2ZWw9XCI1XCI+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWxlY3RUYWJEaXNwbGF5Q291bnRMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICA8L2g1PlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX3RhYmxlLWhvbGRlciB0YWJsZS1jb250ZW50XCJcbiAgICBmZC1zY3JvbGxiYXJcbiAgICBmZEluZmluaXRlU2Nyb2xsXG4gICAgKG9uU2Nyb2xsQWN0aW9uKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgIFtzY3JvbGxQZXJjZW50XT1cIjgwXCJcbiAgICByb2xlPVwidGFibGVcIlxuPlxuICAgIDx0YWJsZVxuICAgICAgICBmZC10YWJsZVxuICAgICAgICBbcG9wSW5dPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWF09XCJtb2JpbGVcIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cImZhbHNlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb2xjb3VudF09XCJfdGFibGVGaWx0ZXJzLm1haW4ubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yb3djb3VudF09XCJkaXNwbGF5ZWREYXRhLmxlbmd0aFwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInNlbGVjdFRhYlRpdGxlSWQgKyAnICcgKyBzZWxlY3RUYWJDb3VudElkXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCBbaWRdPVwic2VsZWN0VGFiQ291bnRJZFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuc2VsZWN0VGFiQ291bnRIaWRkZW5BMTF5TGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHJvd0NvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCwgY29sQ291bnQ6IF90YWJsZUZpbHRlcnMubWFpbi5sZW5ndGggfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJUaXRsZUlkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx0aGVhZCBmZC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpuZ0lmPVwiZGlzcGxheWVkRGF0YS5sZW5ndGggJiYgX3RhYmxlRmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy1hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluOyB0cmFja0J5OiBfdHJhY2tCeUZpbHRlckZuOyBsZXQgY29saW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29saW5kZXhdPVwiY29saW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keSBmZC10YWJsZS1ib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIGRpc3BsYXllZERhdGEgfCBzbGljZSA6IF9zaG93bkZyb20gOiBfc2hvd25Db3VudDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogX3RyYWNrQnlUYWJsZVJvd0ZuO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtcm93XG4gICAgICAgICAgICAgICAgICAgIFtob3ZlcmFibGVdPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYWluXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmFibGVdPVwiIWlzTXVsdGlTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiIWlzTXVsdGlTZWxlY3Rpb24gJiYgX3RvZ2dsZVNlbGVjdFJvdyhyb3cpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkTWFwW3Jvd1t1bmlxdWVLZXldXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLm1haW47IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcm93aW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dbZmlsdGVyLmtleV0gfHwgJycgfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYmxlLXJvd1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBfdGFibGVGaWx0ZXJzLnNlY29uZGFyeS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbc2Vjb25kYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGw+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWJsZS10ZXh0ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgZmlsdGVyLmxhYmVsIH19OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93W2ZpbHRlci5rZXldIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgZmQtdGFibGUtcm93XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5ZWREYXRhLmxlbmd0aCAmJiBtb2JpbGUgJiYgX3Nob3duQ291bnQgJiYgX3Nob3duQ291bnQgIT09IGRpc3BsYXllZERhdGEubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiaGVhZGVyLXdpdGgtc3ViaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuc2VsZWN0VGFiTW9yZUJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZyAmJiAhZGlzcGxheWVkRGF0YS5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gW3N0eWxlLm1hcmdpbl09XCInYXV0byAwJ1wiIHR5cGU9XCJ0ZXh0XCIgdGV4dExpbmVzPVwiMVwiIHdpZHRoPVwiNjAlXCI+PC9mZC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRpc3BsYXllZERhdGEubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlYXJjaFRhYmxlRW1wdHlNZXNzYWdlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
|