@libs-ui/components-tabs 0.2.306 → 0.2.307-0
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/index.mjs +1 -1
- package/esm2022/interfaces/tab.interface.mjs +1 -1
- package/esm2022/item/item.component.mjs +5 -12
- package/esm2022/tabs.component.mjs +47 -41
- package/esm2022/utils/tabs.mjs +26 -21
- package/fesm2022/libs-ui-components-tabs.mjs +71 -67
- package/fesm2022/libs-ui-components-tabs.mjs.map +1 -1
- package/interfaces/tab.interface.d.ts +7 -7
- package/package.json +10 -10
- package/tabs.component.d.ts +1 -0
- package/utils/tabs.d.ts +3 -3
package/esm2022/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './tabs.component';
|
|
2
2
|
export * from './interfaces/tab.interface';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvdGFiLmludGVyZmFjZSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUWVBFX0JBREdFX01PREUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJhZGdlJztcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbGlzdCc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgVFlQRV9GVU5DVElPTiB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzIHtcbiAgaGFzSW1hZ2U/OiBib29sZWFuO1xuICBoYXNDb3VudD86IGJvb2xlYW47XG4gIGFsbG93UmVtb3ZlPzogYm9vbGVhbjtcbiAgY29uZmlnQnV0dG9uUmVtb3ZlPzogSUJ1dHRvbjtcbiAgaGFzU3RlcD86IGJvb2xlYW47XG4gIHN0ZXBDb21wbGV0ZWQ/OiBudW1iZXI7XG4gIHN0ZXBIYXNCYWNrR3JvdW5kPzogYm9vbGVhbjtcbiAgaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcD86IGJvb2xlYW47XG4gIGlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWI/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVIZWFkZXI/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUhlYWRlckNlbnRlcj86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlSGVhZGVyUmlnaHQ/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUl0ZW0/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUFjdGl2ZUl0ZW0/OiBzdHJpbmc7XG4gIG1heFdpZHRoVGV4dExhYmVsSXRlbT86IG51bWJlcjtcbiAgYWN0aW9uUmlnaHRDb25maWc/OiBXcml0YWJsZVNpZ25hbDx7XG4gICAgZ2V0TGlzdFZpZXdDb25maWc6IFRZUEVfRlVOQ1RJT048V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtPj47XG4gICAgY29uZmlnPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgICBvbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmU/OiBib29sZWFuO1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBjdXN0b21WaWV3PzogKCkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICB9PjtcbiAgdmlld01vcmVJZ25vcmVNYXJnaW5MZWZ0PzogYm9vbGVhbjtcbiAgaXRlbXM6IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElUYWJzSXRlbT4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFic0l0ZW0ge1xuICBrZXk/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgZGlzYWJsZT86IGJvb2xlYW47XG4gIGNyZWF0ZWRfYnlfc3lzdGVtPzogYm9vbGVhbjtcbiAgY3JlYXRlZF9ieT86IHN0cmluZztcbiAgaXNfZGVmYXVsdD86IGJvb2xlYW47XG4gIGlzX3Bpbj86IGJvb2xlYW47XG4gIG9yZGVyPzogbnVtYmVyO1xuICBsaW5rSW1hZ2U/OiBzdHJpbmc7XG4gIGxpbmtJbWFnZUVycm9yPzogc3RyaW5nO1xuICBjbGFzc0ltYWdlSW5jbHVkZT86IHN0cmluZztcbiAgcG9wb3ZlckltYWdlPzogSVBvcG92ZXJPdmVybGF5O1xuICBpY29uTGVmdD86IHN0cmluZztcbiAgcG9wb3Zlckljb25MZWZ0PzogSVBvcG92ZXJPdmVybGF5O1xuICBsYWJlbD86IHN0cmluZztcbiAgY2xhc3NMYWJlbD86IHN0cmluZztcbiAgcG9wb3Zlcj86IElQb3BvdmVyT3ZlcmxheTtcbiAgaWNvblJpZ2h0Pzogc3RyaW5nO1xuICBwb3BvdmVySWNvblJpZ2h0PzogSVBvcG92ZXJPdmVybGF5O1xuICBjb3VudD86IG51bWJlcjtcbiAgbW9kZUNvdW50PzogVFlQRV9CQURHRV9NT0RFO1xuICBtYXhDb3VudD86IG51bWJlcjtcbiAgY2xhc3NDaXJjbGU/OiBzdHJpbmc7XG4gIHNwZWNpZmljV2lkdGg/OiBudW1iZXI7XG4gIHNwZWNpZmljRGlzcGxheT86IGJvb2xlYW47XG4gIGNsYXNzU3RlcD86IHN0cmluZztcbiAgY29uZmlnQnV0dG9uUmlnaHQ/OiBJQnV0dG9uO1xuICBjb25maWdCdXR0b25MZWZ0PzogSUJ1dHRvbjtcbiAgaGFzUmVkRG90PzogYm9vbGVhbjtcbiAgaW52YWxpZD86IGJvb2xlYW47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtwYXJhbTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJDc3NDb25maWcge1xuICBmaXJzdDogc3RyaW5nO1xuICBvdGhlcjogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGhlYWRlckNlbnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVFlQRV9UQUJfTU9ERSA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3NwYWNlLWJldHdlZW4nIHwgJ2NlbnRlci1oYXMtbGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNGdW5jdGlvbkNvbnRyb2xFdmVudCB7XG4gIGFkZFRhYnNJdGVtOiAoaXRlbTogV3JpdGFibGVTaWduYWw8SVRhYnNJdGVtPiwgc2VsZWN0ZWQ/OiBib29sZWFuLCBhZGRGaXJzdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGNhbGN1bGF0b3JUYWJzSXRlbXNEaXNwbGF5OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZWxlY3RlZFRhYnNJdGVtOiAoa2V5OiBzdHJpbmcsIHJlc2V0RGlzYWJsZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNJdGVtRXZlbnQge1xuICBrZXk6IHN0cmluZztcbiAgaXRlbTogSVRhYnNJdGVtO1xufVxuIl19
|
|
@@ -55,7 +55,7 @@ export class LibsUiComponentsTabsItemComponent {
|
|
|
55
55
|
}
|
|
56
56
|
ngOnInit() {
|
|
57
57
|
if (!this.item().key) {
|
|
58
|
-
this.item.update(item => ({ ...item, key: uuid() }));
|
|
58
|
+
this.item.update((item) => ({ ...item, key: uuid() }));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
/* FUNCTIONS */
|
|
@@ -63,7 +63,7 @@ export class LibsUiComponentsTabsItemComponent {
|
|
|
63
63
|
const preSpecificWidth = this.item().specificWidth;
|
|
64
64
|
const width = this.element.nativeElement.offsetWidth;
|
|
65
65
|
if (width && preSpecificWidth !== width) {
|
|
66
|
-
this.item.update(item => ({ ...item, specificWidth: width }));
|
|
66
|
+
this.item.update((item) => ({ ...item, specificWidth: width }));
|
|
67
67
|
this.changeViewTab().next();
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -104,17 +104,10 @@ export class LibsUiComponentsTabsItemComponent {
|
|
|
104
104
|
this.onDestroy.complete();
|
|
105
105
|
}
|
|
106
106
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: "@if (item(); as item) {\n <div\n #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i\n class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.is_pin) {\n <i\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div\n class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if (step() <= (tabs().stepCompleted || -1)) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div\n class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft || ''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight || ''\"\n [label]=\"item.configButtonLeft.label || ''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div\n class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span\n LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{ position: { mode: step() === 1 ? 'start' : 'center', distance: 0 }, zIndex: zIndex() }\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label ' + (item.classLabel || 'libs-ui-font-h6m') + (disableLabel() && disable() ? ' libs-ui-disable' : '') + (tabs().stepHasBackGround && disable() ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\"></div>\n }\n </div>\n }\n @if (item.popover) {\n <i\n class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"></i>\n }\n @if (item.iconRight) {\n <i\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge\n [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft || ''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight || ''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label || ''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover\n [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220,\n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '') + ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 },\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe: right.customView : item\"></div>\n } @else {\n <i\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\"></i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if (0 | LibsUiPipesCallFunctionInTemplatePipe: right.getListViewConfig : item : item[fieldKey()] : { valueIs0: 0 } | async; as config) {\n <libs_ui-components-list\n [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button\n [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight || ''\"\n [popover]=\"tabs().configButtonRemove?.popover || { config: { content: 'i18n_delete' } }\"\n [label]=\"tabs().configButtonRemove?.label || ''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6',\n },\n rootColor: '#f15767',\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n}\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6a7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
108
108
|
}
|
|
109
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, decorators: [{
|
|
110
110
|
type: Component,
|
|
111
|
-
args: [{ selector: 'libs_ui-components-tabs-item', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
112
|
-
AsyncPipe,
|
|
113
|
-
LibsUiComponentsButtonsButtonComponent,
|
|
114
|
-
LibsUiComponentsPopoverComponent,
|
|
115
|
-
LibsUiComponentsBadgeComponent,
|
|
116
|
-
LibsUiComponentsListComponent,
|
|
117
|
-
LibsUiPipesCallFunctionInTemplatePipe
|
|
118
|
-
], template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
|
|
111
|
+
args: [{ selector: 'libs_ui-components-tabs-item', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsBadgeComponent, LibsUiComponentsListComponent, LibsUiPipesCallFunctionInTemplatePipe], template: "@if (item(); as item) {\n <div\n #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i\n class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.is_pin) {\n <i\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div\n class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if (step() <= (tabs().stepCompleted || -1)) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div\n class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft || ''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight || ''\"\n [label]=\"item.configButtonLeft.label || ''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div\n class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span\n LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{ position: { mode: step() === 1 ? 'start' : 'center', distance: 0 }, zIndex: zIndex() }\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label ' + (item.classLabel || 'libs-ui-font-h6m') + (disableLabel() && disable() ? ' libs-ui-disable' : '') + (tabs().stepHasBackGround && disable() ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\"></div>\n }\n </div>\n }\n @if (item.popover) {\n <i\n class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"></i>\n }\n @if (item.iconRight) {\n <i\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge\n [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft || ''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight || ''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label || ''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover\n [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220,\n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '') + ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 },\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe: right.customView : item\"></div>\n } @else {\n <i\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\"></i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if (0 | LibsUiPipesCallFunctionInTemplatePipe: right.getListViewConfig : item : item[fieldKey()] : { valueIs0: 0 } | async; as config) {\n <libs_ui-components-list\n [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button\n [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight || ''\"\n [popover]=\"tabs().configButtonRemove?.popover || { config: { content: 'i18n_delete' } }\"\n [label]=\"tabs().configButtonRemove?.label || ''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6',\n },\n rootColor: '#f15767',\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n}\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6a7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
|
|
119
112
|
}], ctorParameters: () => [] });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFnQyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBa0I1QyxNQUFNLE9BQU8saUNBQWlDO0lBRTVDLG1CQUFtQjtJQUNULGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFekMsZ0JBQWdCLEdBQUcsTUFBTSxDQUErQixTQUFTLENBQUMsQ0FBQztJQUNuRSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQzlDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWhDLDJCQUEyQixHQUFHLE1BQU0sQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFFbEcsZ0JBQWdCO0lBQ1AsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBQ2hELElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7SUFDdkMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVMsQ0FBQztJQUMvQixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO0lBQ25DLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDdkMsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUN0QyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3BDLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDdEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7SUFDN0MsT0FBTyxHQUFHLEtBQUssRUFBVyxDQUFDO0lBQzNCLFlBQVksR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNoQyxNQUFNLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDekIsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7SUFFekQsaUJBQWlCO0lBQ1IsU0FBUyxHQUFHLE1BQU0sRUFBa0IsQ0FBQztJQUU5QyxXQUFXO0lBQ0gsT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVwRDtRQUNFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztnQkFDekQsT0FBTztZQUNULENBQUM7WUFDRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO29CQUNoRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNySCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNQLG1CQUFtQjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksS0FBSyxJQUFJLGdCQUFnQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRVMsZUFBZSxDQUFDLEtBQVk7UUFDcEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLEtBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFBO0lBQzNELENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUFtQztRQUM5RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQWEsRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRVMsa0NBQWtDLENBQUMsS0FBbUM7UUFDOUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBeUI7UUFDckQsSUFBSSxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR1Msa0JBQWtCLENBQUMsS0FBWSxFQUFFLElBQXlEO1FBQ2xHLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDekQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3pDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBN0dVLGlDQUFpQzs0RkFBakMsaUNBQWlDLDQ2REM3QjlDLDZzV0F5TUEsMCtFRHBMSSxTQUFTLDhDQUNULHNDQUFzQyxzakJBQ3RDLGdDQUFnQyxvZ0JBQ2hDLDhCQUE4QiwyTUFDOUIsNkJBQTZCLHcvQkFDN0IscUNBQXFDOzs0RkFHNUIsaUNBQWlDO2tCQWhCN0MsU0FBUzsrQkFFRSw4QkFBOEIsY0FHNUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7d0JBQ1Qsc0NBQXNDO3dCQUN0QyxnQ0FBZ0M7d0JBQ2hDLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3dCQUM3QixxQ0FBcUM7cUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJhZGdlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZXNjYXBlSHRtbCwgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVRhYnNJdGVtLCBJVGFic0l0ZW1FdmVudCwgSVRhYnMsIFRZUEVfVEFCX01PREUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSwgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxpc3QnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBsYWJlbENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4gZXNjYXBlSHRtbCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLml0ZW0oKVt0aGlzLmZpZWxkTGFiZWwoKV0pKSk7XG4gIHByb3RlY3RlZCBhY3Rpb25TaG93aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXIgPSBzaWduYWw8TXV0YXRpb25PYnNlcnZlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaWdub3JlQ2FsY3VsYXRvclRhYiA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN0ZXAgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxUWVBFX1RBQl9NT0RFPigpO1xuICByZWFkb25seSB0YWJzID0gaW5wdXQucmVxdWlyZWQ8SVRhYnM+KCk7XG4gIHJlYWRvbmx5IGl0ZW0gPSBtb2RlbC5yZXF1aXJlZDxJVGFic0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZExhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY3NzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0LnJlcXVpcmVkPCdsYW5nZXInIHwgJ21lZGl1bSc+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGNoYW5nZVZpZXdUYWIgPSBpbnB1dC5yZXF1aXJlZDxTdWJqZWN0PHZvaWQ+PigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEFjdGlvbiA9IG91dHB1dDxJVGFic0l0ZW1FdmVudD4oKTtcblxuICAvKiBJTkpFQ1QqL1xuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubW9kZSgpICE9PSAnbGVmdCcgfHwgdGhpcy5pZ25vcmVDYWxjdWxhdG9yVGFiKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTcGVjaWZpY1dpZHRoKCk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3BlY2lmaWNXaWR0aCgpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuc2V0KG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMubXV0YXRpb25PYnNlcnZlclN1YmplY3QubmV4dCgpKSk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/Lm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXRlbSgpLmtleSkge1xuICAgICAgdGhpcy5pdGVtLnVwZGF0ZShpdGVtID0+ICh7IC4uLml0ZW0sIGtleTogdXVpZCgpIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVTcGVjaWZpY1dpZHRoKCkge1xuICAgIGNvbnN0IHByZVNwZWNpZmljV2lkdGggPSB0aGlzLml0ZW0oKS5zcGVjaWZpY1dpZHRoO1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgaWYgKHdpZHRoICYmIHByZVNwZWNpZmljV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICB0aGlzLml0ZW0udXBkYXRlKGl0ZW0gPT4gKHsgLi4uaXRlbSwgc3BlY2lmaWNXaWR0aDogd2lkdGggfSkpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3VGFiKCkubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1nRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMuaXRlbSgpLmxpbmtJbWFnZUVycm9yXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdGVkS2V5KGV2ZW50OiBJTGlzdERhdGFFbWl0S2V5IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsgaXRlbTogdGhpcy5pdGVtKCksIGtleTogZXZlbnQua2V5IGFzIHN0cmluZyB9KTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoZXZlbnQ6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRXZlbnQoZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkge1xuICAgIGlmIChldmVudCAhPT0gJ3Nob3cnICYmIGV2ZW50ICE9PSAncmVtb3ZlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblNob3dpbmcuc2V0KGV2ZW50ID09PSAnc2hvdycpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQnV0dG9uKGV2ZW50OiBFdmVudCwgdHlwZTogJ2NvbmZpZ0J1dHRvbkxlZnQnIHwgJ2NvbmZpZ0J1dHRvblJpZ2h0JyB8ICdyZW1vdmUnKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsga2V5OiAncmVtb3ZlJywgaXRlbTogdGhpcy5pdGVtKCkgfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5pdGVtKClbdHlwZV0/LmFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24odGhpcy5pdGVtKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiICBAaWYgKGl0ZW0oKTsgYXMgaXRlbSkge1xuICAgIDxkaXYgI2l0ZW1FbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0ge3sgY3NzRGVmYXVsdCgpIH19IHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19IHt7IGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmNsYXNzSW5jbHVkZUFjdGl2ZUl0ZW0gPyB0YWJzKCkuY2xhc3NJbmNsdWRlQWN0aXZlSXRlbSA6ICcnIH19XCJcbiAgICAgIFthdHRyLmtleV09XCJpdGVtW2ZpZWxkS2V5KCldXCJcbiAgICAgIFthdHRyLmludmFsaWRdPVwiaXRlbS5pbnZhbGlkICYmICF0YWJzKCkuaWdub3JlU2hvd0xpbmVCb3R0b21JblRhYlwiXG4gICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWJcIlxuICAgICAgW2F0dHIuZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgW2NsYXNzLiFjdXJzb3ItcG9pbnRlcl09XCIhZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy4hY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taG92ZXJdPVwiIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tYWN0aW9uLXNob3ddPVwiYWN0aW9uU2hvd2luZygpXCI+XG4gICAgICBAaWYgKHRhYnMoKS5oYXNJbWFnZSkge1xuICAgICAgICA8aW1nIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWltYWdlIHt7IGl0ZW0uY2xhc3NJbWFnZUluY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbc3JjXT1cIml0ZW0ubGlua0ltYWdlXCJcbiAgICAgICAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pY29uTGVmdCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIGxpYnMtdWktbXItOHB4IHt7IGl0ZW0uaWNvbkxlZnQgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pc19waW4pIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtci1bOHB4XSB7eyBpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpID8gJ2xpYnMtdWktaWNvbi1waW4tc29saWQnIDogJ2xpYnMtdWktaWNvbi1waW4tb3V0bGluZScgfX1cIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAodGFicygpLmhhc1N0ZXApIHtcbiAgICAgICAgQGlmICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXAgIWJvcmRlci1ub25lIGxpYnMtdWktZm9udC1oNm1cIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZmZmZmZmXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiB0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bI2YxNTc2N11dPVwiaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZjlmYV1dPVwic3RlcCgpID4gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IDApICYmICh0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCB8fCBkaXNhYmxlKCkpICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVsjMDBiYzYyXV09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXAgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCIoKGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXApIHx8IChzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwKSkgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuIWJnLVsjZmRlYWVjXV09XCJpdGVtLmludmFsaWRcIj5cbiAgICAgICAgICAgIEBpZiAoKHN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGVjayB0ZXh0LVsjZmZmZmZmXVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MudGV4dC1bI2NkZDBkNl1dPVwiZGlzYWJsZSgpXCI+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXBcIlxuICAgICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBzdGVwKCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb25maWdCdXR0b25MZWZ0KSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJY29uTGVmdCB8fCcnXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0ljb25SaWdodCB8fCcnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvbkxlZnQnKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW1bZmllbGRMYWJlbCgpXSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cInRhYnMoKS5tYXhXaWR0aFRleHRMYWJlbEl0ZW0gfHwgMTYwXCI+XG4gICAgICAgICAgPHNwYW4gTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIntwb3NpdGlvbjoge21vZGU6IHN0ZXAoKSA9PT0gMSA/ICdzdGFydCcgOiAnY2VudGVyJywgZGlzdGFuY2U6IDB9LCB6SW5kZXg6IHpJbmRleCgpfVwiXG4gICAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemUoKVwiXG4gICAgICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZjE1NzY3XV09XCJpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndy1mdWxsIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1sYWJlbCAnKyAoaXRlbS5jbGFzc0xhYmVsIHx8ICdsaWJzLXVpLWZvbnQtaDZtJykgKyBcbiAgICAgICAgICAgICAgKGRpc2FibGVMYWJlbCgpICYmIChkaXNhYmxlKCkpID8gJyBsaWJzLXVpLWRpc2FibGUnIDogJycpIFxuICAgICAgICAgICAgICArICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQgJiYgKGRpc2FibGUoKSkgPyAnIHRleHQtWyNjZGQwZDZdJyA6ICcnKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImxhYmVsQ29tcHV0ZWQoKVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGl0ZW0uaGFzUmVkRG90KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWy02cHhdIHRvcC1bLTJweF0gdy1bNnB4XSBoLVs2cHhdIGJnLVsjZWUyZDQxXSByb3VuZGVkLVs2cHhdXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLnBvcG92ZXIpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtbC1bOHB4XSBsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lXCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVyXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIj5cbiAgICAgICAgPC9pPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmljb25SaWdodCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIHt7IGl0ZW0uaWNvblJpZ2h0IH19XCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3Zlckljb25SaWdodFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYmFkZ2UgW21vZGVdPVwiaXRlbS5tb2RlQ291bnQgfHwgJ3grJ1wiXG4gICAgICAgICAgW2NvdW50XT1cIml0ZW0uY291bnRcIlxuICAgICAgICAgIFttYXhDb3VudF09XCJpdGVtLm1heENvdW50IHx8IDk5XCJcbiAgICAgICAgICBbY2xhc3NDaXJjbGVdPVwiKGl0ZW0uY2xhc3NDaXJjbGUgfHwgJ2xpYnMtdWktZm9udC1oNXInKSArIChpdGVtLmludmFsaWQgPyAnICF0ZXh0LVsjZjE1NzY3XSAhYmctWyNmZGVhZWNdJyA6ICcnKVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uUmlnaHQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0ljb25MZWZ0IHx8JydcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uUmlnaHQgfHwnJ1wiXG4gICAgICAgICAgW3BvcG92ZXJdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5sYWJlbCB8fCcnXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvblJpZ2h0JylcIiAvPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWN0aW9uUmlnaHRDb25maWc/LigpOyBhcyByaWdodCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgW2NsYXNzXT1cInJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnbWwtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWFjdGlvbl09XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2lnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2VsZW1lbnRSZWZDdXN0b21dPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gdW5kZWZpbmVkIDogaXRlbUVsIFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHJpZ2h0LmNvbmZpZz8uKCk/LnpJbmRleCB8fCAxMDAwLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiByaWdodC5jb25maWc/LigpPy5tYXhIZWlnaHQgfHwgMjg3LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcmlnaHQuY29uZmlnPy4oKT8ud2lkdGggfHwgMjIwLCBcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcmlnaHQuY29uZmlnPy4oKT8uZGlyZWN0aW9uIHx8ICdib3R0b20nLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHJpZ2h0LmNvbmZpZz8uKCk/LnRlbXBsYXRlIHx8IGFjdGlvbkVsLFxuICAgICAgICAgICAgY2xhc3NJbmNsdWRlOiAocmlnaHQuY29uZmlnPy4oKT8uY2xhc3NJbmNsdWRlIHx8ICcnKSsgJyAhcm91bmRlZC1bNHB4XSBvdmVyZmxvdy1oaWRkZW4nLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHJpZ2h0LmNvbmZpZz8uKCk/LnBvc2l0aW9uIHx8IHsgbW9kZTogJ3N0YXJ0JywgZGlzdGFuY2U6IDAgfVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZiAocmlnaHQuY3VzdG9tVmlldykge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGRLZXkoKV0gfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmN1c3RvbVZpZXc6aXRlbVwiPjwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGkgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbYXR0ci5pbnZhbGlkXT1cIml0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmUgPyAnbGlicy11aS1pY29uLW1vcmUtdmVydGljYWwgcm90YXRlLTkwIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uJyA6ICdsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCByb3RhdGUtOTAgbGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24nXCI+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgfVxuICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGlvbkVsPlxuICAgICAgICAgIEBpZiAoKDAgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmdldExpc3RWaWV3Q29uZmlnOml0ZW06IGl0ZW1bZmllbGRLZXkoKV06IHt2YWx1ZUlzMDogMH0gfGFzeW5jKSA7IGFzIGNvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0IFtjb25maWddPVwiY29uZmlnKClcIlxuICAgICAgICAgICAgICBbbWF4SXRlbVNob3ddPVwiNVwiXG4gICAgICAgICAgICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BhZGRpbmdMZWZ0SXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG91dFNlbGVjdEtleSk9XCJoYW5kbGVyU2VsZWN0ZWRLZXkoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWxsb3dSZW1vdmUgJiYgdGFicygpLml0ZW1zKCkubGVuZ3RoID4gMSkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnR5cGUgfHwgJ2J1dHRvbi1saW5rLWN1c3RvbSdcIlxuICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uaWNvbk9ubHlUeXBlIHx8IHRydWVcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJbmNsdWRlIHx8ICdtbC1bOHB4XSAhcC0wJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJY29uTGVmdCB8fCAnbGlicy11aS1pY29uLWNsb3NlJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmNsYXNzSWNvblJpZ2h0IHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnBvcG92ZXIgfHwge2NvbmZpZzoge2NvbnRlbnQ6ICdpMThuX2RlbGV0ZSd9fVwiXG4gICAgICAgICAgW2xhYmVsXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtidXR0b25DdXN0b21dPVwie1xuICAgICAgICAgICAgY29uZmlnU3RlcENvbG9yOiB7XG4gICAgICAgICAgICAgIHRleHQ6ICcjNmE3MzgzJyxcbiAgICAgICAgICAgICAgdGV4dF9ob3ZlcjogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2FjdGl2ZTogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2Rpc2FibGU6ICcjY2RkMGQ2J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb3RDb2xvcjogJyNmMTU3NjcnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdyZW1vdmUnKVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFnQyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVzVDLE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUMsbUJBQW1CO0lBQ1QsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFn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LHcvQkFBRSxxQ0FBcUM7OzRGQUV4TCxpQ0FBaUM7a0JBVDdDLFNBQVM7K0JBRUUsOEJBQThCLGNBRzVCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSw2QkFBNkIsRUFBRSxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1iYWRnZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IGVzY2FwZUh0bWwsIHV1aWQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElUYWJzSXRlbSwgSVRhYnNJdGVtRXZlbnQsIElUYWJzLCBUWVBFX1RBQl9NT0RFIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWIuaW50ZXJmYWNlJztcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXksIExpYnNVaUNvbXBvbmVudHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy10YWJzLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudCwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgbGFiZWxDb21wdXRlZCA9IGNvbXB1dGVkKCgpID0+IGVzY2FwZUh0bWwodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5pdGVtKClbdGhpcy5maWVsZExhYmVsKCldKSkpO1xuICBwcm90ZWN0ZWQgYWN0aW9uU2hvd2luZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyID0gc2lnbmFsPE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGlnbm9yZUNhbGN1bGF0b3JUYWIgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICByZWFkb25seSBzdGVwID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQucmVxdWlyZWQ8VFlQRV9UQUJfTU9ERT4oKTtcbiAgcmVhZG9ubHkgdGFicyA9IGlucHV0LnJlcXVpcmVkPElUYWJzPigpO1xuICByZWFkb25seSBpdGVtID0gbW9kZWwucmVxdWlyZWQ8SVRhYnNJdGVtPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmllbGRMYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGNzc0RlZmF1bHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dC5yZXF1aXJlZDwnbGFuZ2VyJyB8ICdtZWRpdW0nPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBjaGFuZ2VWaWV3VGFiID0gaW5wdXQucmVxdWlyZWQ8U3ViamVjdDx2b2lkPj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRBY3Rpb24gPSBvdXRwdXQ8SVRhYnNJdGVtRXZlbnQ+KCk7XG5cbiAgLyogSU5KRUNUKi9cbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1vZGUoKSAhPT0gJ2xlZnQnIHx8IHRoaXMuaWdub3JlQ2FsY3VsYXRvclRhYigpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlU3BlY2lmaWNXaWR0aCgpO1xuICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgxMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVNwZWNpZmljV2lkdGgoKSk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLnNldChuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0Lm5leHQoKSkpO1xuICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5vYnNlcnZlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5pdGVtKCkua2V5KSB7XG4gICAgICB0aGlzLml0ZW0udXBkYXRlKChpdGVtKSA9PiAoeyAuLi5pdGVtLCBrZXk6IHV1aWQoKSB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgdXBkYXRlU3BlY2lmaWNXaWR0aCgpIHtcbiAgICBjb25zdCBwcmVTcGVjaWZpY1dpZHRoID0gdGhpcy5pdGVtKCkuc3BlY2lmaWNXaWR0aDtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGlmICh3aWR0aCAmJiBwcmVTcGVjaWZpY1dpZHRoICE9PSB3aWR0aCkge1xuICAgICAgdGhpcy5pdGVtLnVwZGF0ZSgoaXRlbSkgPT4gKHsgLi4uaXRlbSwgc3BlY2lmaWNXaWR0aDogd2lkdGggfSkpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3VGFiKCkubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1nRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMuaXRlbSgpLmxpbmtJbWFnZUVycm9yO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWxlY3RlZEtleShldmVudDogSUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRBY3Rpb24uZW1pdCh7IGl0ZW06IHRoaXMuaXRlbSgpLCBrZXk6IGV2ZW50LmtleSBhcyBzdHJpbmcgfSk7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KGV2ZW50OiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckV2ZW50KGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICBpZiAoZXZlbnQgIT09ICdzaG93JyAmJiBldmVudCAhPT0gJ3JlbW92ZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25TaG93aW5nLnNldChldmVudCA9PT0gJ3Nob3cnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tCdXR0b24oZXZlbnQ6IEV2ZW50LCB0eXBlOiAnY29uZmlnQnV0dG9uTGVmdCcgfCAnY29uZmlnQnV0dG9uUmlnaHQnIHwgJ3JlbW92ZScpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMub3V0QWN0aW9uLmVtaXQoeyBrZXk6ICdyZW1vdmUnLCBpdGVtOiB0aGlzLml0ZW0oKSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5pdGVtKClbdHlwZV0/LmFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24odGhpcy5pdGVtKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIkBpZiAoaXRlbSgpOyBhcyBpdGVtKSB7XG4gIDxkaXZcbiAgICAjaXRlbUVsXG4gICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0ge3sgY3NzRGVmYXVsdCgpIH19IHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19IHt7IGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmNsYXNzSW5jbHVkZUFjdGl2ZUl0ZW0gPyB0YWJzKCkuY2xhc3NJbmNsdWRlQWN0aXZlSXRlbSA6ICcnIH19XCJcbiAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgW2F0dHIuaW52YWxpZF09XCJpdGVtLmludmFsaWQgJiYgIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWJcIlxuICAgIFthdHRyLmRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICBbY2xhc3MuIWN1cnNvci1wb2ludGVyXT1cIiFkaXNhYmxlKClcIlxuICAgIFtjbGFzcy4hY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWhvdmVyXT1cIiF0YWJzKCkuaWdub3JlU2hvd0xpbmVCb3R0b21JblRhYlwiXG4gICAgW2NsYXNzLmxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1hY3Rpb24tc2hvd109XCJhY3Rpb25TaG93aW5nKClcIj5cbiAgICBAaWYgKHRhYnMoKS5oYXNJbWFnZSkge1xuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pbWFnZSB7eyBpdGVtLmNsYXNzSW1hZ2VJbmNsdWRlIHx8ICcnIH19XCJcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVySW1hZ2VcIlxuICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgW3NyY109XCJpdGVtLmxpbmtJbWFnZVwiXG4gICAgICAgIFthdHRyLmtleV09XCJpdGVtW2ZpZWxkS2V5KCldXCJcbiAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICB9XG4gICAgQGlmIChpdGVtLmljb25MZWZ0KSB7XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIGxpYnMtdWktbXItOHB4IHt7IGl0ZW0uaWNvbkxlZnQgfX1cIlxuICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiIWl0ZW0ucG9wb3Zlckljb25MZWZ0XCJcbiAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKVwiPjwvaT5cbiAgICB9XG4gICAgQGlmIChpdGVtLmlzX3Bpbikge1xuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtci1bOHB4XSB7eyBpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpID8gJ2xpYnMtdWktaWNvbi1waW4tc29saWQnIDogJ2xpYnMtdWktaWNvbi1waW4tb3V0bGluZScgfX1cIlxuICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+PC9pPlxuICAgIH1cbiAgICBAaWYgKHRhYnMoKS5oYXNTdGVwKSB7XG4gICAgICBAaWYgKHRhYnMoKS5zdGVwSGFzQmFja0dyb3VuZCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tc3RlcCAhYm9yZGVyLW5vbmUgbGlicy11aS1mb250LWg2bVwiXG4gICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZmZmZmZmXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICBbY2xhc3MuIXRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXAgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZjE1NzY3XV09XCJpdGVtLmludmFsaWRcIlxuICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZjlmYV1dPVwic3RlcCgpID4gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IDApICYmICh0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCB8fCBkaXNhYmxlKCkpICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgIFtjbGFzcy5iZy1bIzAwYmM2Ml1dPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgIFtjbGFzcy5iZy1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXAgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCIoKGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXApIHx8IChzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwKSkgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgW2NsYXNzLiFiZy1bI2ZkZWFlY11dPVwiaXRlbS5pbnZhbGlkXCI+XG4gICAgICAgICAgQGlmIChzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hlY2sgdGV4dC1bI2ZmZmZmZl1cIj48L2k+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBbY2xhc3MudGV4dC1bI2NkZDBkNl1dPVwiZGlzYWJsZSgpXCI+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXBcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgICAgPHNwYW4+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChpdGVtLmNvbmZpZ0J1dHRvbkxlZnQpIHtcbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0ljb25MZWZ0IHx8ICcnXCJcbiAgICAgICAgW2NsYXNzTGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzTGFiZWwgfHwgJydcIlxuICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgW2xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5sYWJlbCB8fCAnJ1wiXG4gICAgICAgIFtwb3BvdmVyXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdjb25maWdCdXR0b25MZWZ0JylcIiAvPlxuICAgIH1cbiAgICBAaWYgKGl0ZW1bZmllbGRMYWJlbCgpXSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGZsZXhcIlxuICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwidGFicygpLm1heFdpZHRoVGV4dExhYmVsSXRlbSB8fCAxNjBcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7IHBvc2l0aW9uOiB7IG1vZGU6IHN0ZXAoKSA9PT0gMSA/ICdzdGFydCcgOiAnY2VudGVyJywgZGlzdGFuY2U6IDAgfSwgekluZGV4OiB6SW5kZXgoKSB9XCJcbiAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemUoKVwiXG4gICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZjE1NzY3XV09XCJpdGVtLmludmFsaWRcIlxuICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid3LWZ1bGwgbGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWxhYmVsICcgKyAoaXRlbS5jbGFzc0xhYmVsIHx8ICdsaWJzLXVpLWZvbnQtaDZtJykgKyAoZGlzYWJsZUxhYmVsKCkgJiYgZGlzYWJsZSgpID8gJyBsaWJzLXVpLWRpc2FibGUnIDogJycpICsgKHRhYnMoKS5zdGVwSGFzQmFja0dyb3VuZCAmJiBkaXNhYmxlKCkgPyAnIHRleHQtWyNjZGQwZDZdJyA6ICcnKVwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJsYWJlbENvbXB1dGVkKClcIj48L3NwYW4+XG4gICAgICAgIEBpZiAoaXRlbS5oYXNSZWREb3QpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWy02cHhdIHRvcC1bLTJweF0gdy1bNnB4XSBoLVs2cHhdIGJnLVsjZWUyZDQxXSByb3VuZGVkLVs2cHhdXCI+PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGl0ZW0ucG9wb3Zlcikge1xuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtbC1bOHB4XSBsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lXCJcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJcIlxuICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIj48L2k+XG4gICAgfVxuICAgIEBpZiAoaXRlbS5pY29uUmlnaHQpIHtcbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24ge3sgaXRlbS5pY29uUmlnaHQgfX1cIlxuICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiIWl0ZW0ucG9wb3Zlckljb25SaWdodFwiXG4gICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+PC9pPlxuICAgIH1cbiAgICBAaWYgKGl0ZW0uY291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1iYWRnZVxuICAgICAgICBbbW9kZV09XCJpdGVtLm1vZGVDb3VudCB8fCAneCsnXCJcbiAgICAgICAgW2NvdW50XT1cIml0ZW0uY291bnRcIlxuICAgICAgICBbbWF4Q291bnRdPVwiaXRlbS5tYXhDb3VudCB8fCA5OVwiXG4gICAgICAgIFtjbGFzc0NpcmNsZV09XCIoaXRlbS5jbGFzc0NpcmNsZSB8fCAnbGlicy11aS1mb250LWg1cicpICsgKGl0ZW0uaW52YWxpZCA/ICcgIXRleHQtWyNmMTU3NjddICFiZy1bI2ZkZWFlY10nIDogJycpXCJcbiAgICAgICAgW2FjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKClcIiAvPlxuICAgIH1cbiAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uUmlnaHQpIHtcbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC50eXBlIHx8ICdidXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0ljb25MZWZ0IHx8ICcnXCJcbiAgICAgICAgW2NsYXNzTGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0xhYmVsIHx8ICcnXCJcbiAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uUmlnaHQgfHwgJydcIlxuICAgICAgICBbcG9wb3Zlcl09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LnBvcG92ZXIgfHwge31cIlxuICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5sYWJlbCB8fCAnJ1wiXG4gICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b24oJGV2ZW50LCAnY29uZmlnQnV0dG9uUmlnaHQnKVwiIC8+XG4gICAgfVxuICAgIEBpZiAodGFicygpLmFjdGlvblJpZ2h0Q29uZmlnPy4oKTsgYXMgcmlnaHQpIHtcbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICBbY2xhc3NdPVwicmlnaHQuY2xhc3NJbmNsdWRlIHx8ICdtbC1bOHB4XSdcIlxuICAgICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWFjdGlvbl09XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmVcIlxuICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJ0cnVlXCJcbiAgICAgICAgW2VsZW1lbnRSZWZDdXN0b21dPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gdW5kZWZpbmVkIDogaXRlbUVsXCJcbiAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgekluZGV4OiByaWdodC5jb25maWc/LigpPy56SW5kZXggfHwgMTAwMCxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heEhlaWdodCB8fCAyODcsXG4gICAgICAgICAgbWF4V2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgd2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/LndpZHRoIHx8IDIyMCxcbiAgICAgICAgICBkaXJlY3Rpb246IHJpZ2h0LmNvbmZpZz8uKCk/LmRpcmVjdGlvbiB8fCAnYm90dG9tJyxcbiAgICAgICAgICB0ZW1wbGF0ZTogcmlnaHQuY29uZmlnPy4oKT8udGVtcGxhdGUgfHwgYWN0aW9uRWwsXG4gICAgICAgICAgY2xhc3NJbmNsdWRlOiAocmlnaHQuY29uZmlnPy4oKT8uY2xhc3NJbmNsdWRlIHx8ICcnKSArICcgIXJvdW5kZWQtWzRweF0gb3ZlcmZsb3ctaGlkZGVuJyxcbiAgICAgICAgICB3aGl0ZVRoZW1lOiB0cnVlLFxuICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgIHBvc2l0aW9uOiByaWdodC5jb25maWc/LigpPy5wb3NpdGlvbiB8fCB7IG1vZGU6ICdzdGFydCcsIGRpc3RhbmNlOiAwIH0sXG4gICAgICAgIH1cIlxuICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclBvcG92ZXJFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlclBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgkZXZlbnQpXCI+XG4gICAgICAgIEBpZiAocmlnaHQuY3VzdG9tVmlldykge1xuICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJpdGVtW2ZpZWxkS2V5KCldIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogcmlnaHQuY3VzdG9tVmlldyA6IGl0ZW1cIj48L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmludmFsaWRdPVwiaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gJ2xpYnMtdWktaWNvbi1tb3JlLXZlcnRpY2FsIHJvdGF0ZS05MCBsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbicgOiAnbGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgcm90YXRlLTkwIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uJ1wiPjwvaT5cbiAgICAgICAgfVxuICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aW9uRWw+XG4gICAgICAgIEBpZiAoMCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJpZ2h0LmdldExpc3RWaWV3Q29uZmlnIDogaXRlbSA6IGl0ZW1bZmllbGRLZXkoKV0gOiB7IHZhbHVlSXMwOiAwIH0gfCBhc3luYzsgYXMgY29uZmlnKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0XG4gICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZygpXCJcbiAgICAgICAgICAgIFttYXhJdGVtU2hvd109XCI1XCJcbiAgICAgICAgICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwYWRkaW5nTGVmdEl0ZW1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAob3V0U2VsZWN0S2V5KT1cImhhbmRsZXJTZWxlY3RlZEtleSgkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gICAgQGlmICh0YWJzKCkuYWxsb3dSZW1vdmUgJiYgdGFicygpLml0ZW1zKCkubGVuZ3RoID4gMSkge1xuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICBbdHlwZV09XCJ0YWJzKCkuY29uZmlnQnV0dG9uUmVtb3ZlPy50eXBlIHx8ICdidXR0b24tbGluay1jdXN0b20nXCJcbiAgICAgICAgW2ljb25Pbmx5VHlwZV09XCJ0YWJzKCkuY29uZmlnQnV0dG9uUmVtb3ZlPy5pY29uT25seVR5cGUgfHwgdHJ1ZVwiXG4gICAgICAgIFtjbGFzc0luY2x1ZGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJbmNsdWRlIHx8ICdtbC1bOHB4XSAhcC0wJ1wiXG4gICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmNsYXNzSWNvbkxlZnQgfHwgJ2xpYnMtdWktaWNvbi1jbG9zZSdcIlxuICAgICAgICBbY2xhc3NMYWJlbF09XCJ0YWJzKCkuY29uZmlnQnV0dG9uUmVtb3ZlPy5jbGFzc0xhYmVsIHx8ICcnXCJcbiAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmNsYXNzSWNvblJpZ2h0IHx8ICcnXCJcbiAgICAgICAgW3BvcG92ZXJdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8ucG9wb3ZlciB8fCB7IGNvbmZpZzogeyBjb250ZW50OiAnaTE4bl9kZWxldGUnIH0gfVwiXG4gICAgICAgIFtsYWJlbF09XCJ0YWJzKCkuY29uZmlnQnV0dG9uUmVtb3ZlPy5sYWJlbCB8fCAnJ1wiXG4gICAgICAgIFtidXR0b25DdXN0b21dPVwie1xuICAgICAgICAgIGNvbmZpZ1N0ZXBDb2xvcjoge1xuICAgICAgICAgICAgdGV4dDogJyM2YTczODMnLFxuICAgICAgICAgICAgdGV4dF9ob3ZlcjogJyNmMTU3NjcnLFxuICAgICAgICAgICAgdGV4dF9hY3RpdmU6ICcjZjE1NzY3JyxcbiAgICAgICAgICAgIHRleHRfZGlzYWJsZTogJyNjZGQwZDYnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcm9vdENvbG9yOiAnI2YxNTc2NycsXG4gICAgICAgIH1cIlxuICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ3JlbW92ZScpXCIgLz5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
|