@libs-ui/components-list 0.2.357-13 → 0.2.357-15

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.
@@ -54,7 +54,7 @@ export class LibsUiComponentsListRowsComponent {
54
54
  this.outChangStageFlagMousePopover.emit(flag);
55
55
  }
56
56
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRowsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRowsComponent, isStandalone: true, selector: "libs_ui-components-list-templates_rows", inputs: { configTemplate: { classPropertyName: "configTemplate", publicName: "configTemplate", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outEvent: "outEvent" }, ngImport: i0, template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { 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: 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: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiPipesCloneObjectPipe, name: "LibsUiPipesCloneObjectPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListRowsComponent, isStandalone: true, selector: "libs_ui-components-list-templates_rows", inputs: { configTemplate: { classPropertyName: "configTemplate", publicName: "configTemplate", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outEvent: "outEvent" }, ngImport: i0, template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track row(); let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track col(); let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LibsUiComponentsAvatarComponent, selector: "libs_ui-components-avatar", inputs: ["typeShape", "classInclude", "size", "linkAvatar", "linkAvatarError", "classImageInclude", "zIndexPreviewImage", "clickPreviewImage", "idGenColor", "getLastTextAfterSpace", "textAvatar", "textAvatarClassInclude", "containerTextAvatarClassInclude"], outputs: ["outAvatarError", "outEventPreviewImage"] }, { 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: 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: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiPipesCloneObjectPipe, name: "LibsUiPipesCloneObjectPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListRowsComponent, decorators: [{
60
60
  type: Component,
@@ -69,6 +69,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
69
69
  LibsUiComponentsBadgeComponent,
70
70
  LibsUiPipesCallFunctionInTemplatePipe,
71
71
  LibsUiPipesCloneObjectPipe
72
- ], template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
72
+ ], template: "@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track row(); let indexRow = $index) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: row().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: row().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig' + indexRow]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow' + indexRow] | async; as labelRow) {\n <libs_ui-components-popover\n type=\"text\"\n [config]=\"row().getPopoverConfig ? ('popover' | LibsUiPipesCallFunctionInTemplatePipe: row().getPopoverConfig : item() | async) : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || row().classGetValue || '' : row().classGetValue || ''\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), row().action)\" />\n }\n\n @if (fieldKey() && row().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow | LibsUiPipesCallFunctionInTemplatePipe: row().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: row().getDataComponentOutlet : item() : 'row:' + indexRow : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (row().cols?.()?.length) {\n <div\n [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols' + indexRow]]\">\n @for (col of row().cols?.(); track col(); let colIndex = $index) {\n @if (col().getImage && (item() | LibsUiPipesCallFunctionInTemplatePipe: col().getImage : item() | async); as imgUrl) {\n <img\n [class]=\"item() | LibsUiPipesCallFunctionInTemplatePipe: col().getClassImage : item() | async\"\n src=\"{{ imgUrl }}\"\n alt=\"\"\n (error)=\"handlerErrorImage($event, col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig' + indexRow + colIndex]; as avatarConfig) {\n <libs_ui-components-avatar\n [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]=\"avatarConfig.size || 32\"\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol' + indexRow + colIndex]; as labelColFunc) {\n <libs_ui-components-popover\n type=\"text\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [classInclude]=\"keySelected() === item()[fieldKey()] ? row().classItemSelected || item()['fieldColClass' + indexRow + colIndex] || '' : item()['fieldColClass' + indexRow + colIndex] || ''\"\n [innerHtml]=\"'fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe: labelColFunc : item() | async\"\n [config]=\"{ zIndex: zIndex() + 1 }\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\" />\n }\n @if (item()['fieldColPopover' + indexRow + colIndex]; as popover) {\n <libs_ui-components-popover\n [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config | LibsUiPipesCloneObjectPipe: true : { zIndex: zIndex() + 1 }\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex]\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event, item(), col().action)\">\n @let constHtmlDataView = popover.dataView || popoverIcon;\n <span\n [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"constHtmlDataView | translate\"></span>\n </libs_ui-components-popover>\n }\n @if (fieldKey() && col().getComponentOutlet) {\n <ng-container\n *ngComponentOutlet=\"\n 'row:' + indexRow + '-col:' + colIndex | LibsUiPipesCallFunctionInTemplatePipe: col().getComponentOutlet : item() | async;\n inputs: undefined | LibsUiPipesCallFunctionInTemplatePipe: col().getDataComponentOutlet : item() : 'row:' + indexRow + '-col:' + colIndex : { valueIsEmpty: { item: item() } } | async\n \" />\n }\n @if (item()['fieldColToggle' + indexRow + colIndex]; as toggle) {\n <libs_ui-components-label\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldColButton' + indexRow + colIndex]; as button) {\n <libs_ui-components-buttons-button\n [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"item()['fieldColClass' + indexRow + colIndex] ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click', item(), col().action)\" />\n }\n @if (item()['fieldBadge' + indexRow + colIndex]; as badge) {\n <libs_ui-components-badge\n [mode]=\"badge.mode || 'x+'\"\n [style]=\"' ' | LibsUiPipesCallFunctionInTemplatePipe: item()['fieldColStylesDynamic' + indexRow + colIndex] : item() | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
73
73
  }], ctorParameters: () => [] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFjLGdDQUFnQyxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBc0JqRCxNQUFNLE9BQU8saUNBQWlD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dGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1iYWRnZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2xvbmUtb2JqZWN0JztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElFbWl0Um93c0V2ZW50LCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCwgSUxpc3RDb25maWdJdGVtVGV4dCwgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3dzLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCYWRnZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Um93c0NvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHBvcG92ZXJJY29uID0gc2lnbmFsPHN0cmluZz4oYDxpIGNsYXNzPSdsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lIHRleHQtWzE2cHhdIG1sLVs4cHhdJz48L2k+YCk7XG4gIHByb3RlY3RlZCBjb25maWdJdGVtVGV4dFJvd3MgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PihbXSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBjb25maWdUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPElMaXN0Q29uZmlnSXRlbVRleHQgfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveD4oKTtcbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0PHN0cmluZz4oJ2lkJyk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiAoIWlzRW1wdHkodmFsdWUpID8gdmFsdWUgKyAxIDogMTIwMCkgfSk7XG5cbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8SUVtaXRSb3dzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmFmdGVyVmlld0luaXQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ0l0ZW1UZXh0Um93cy5zZXQodGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpIHx8IFtdKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCwgaXRlbTogYW55LCBhY3Rpb246IGFueSkge1xuICAgIGlmIChldmVudCAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3V0RXZlbnQuZW1pdCh7IGV2ZW50LCBpdGVtLCBhY3Rpb24gfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50LCBmdW5jdGlvbkdldEltYWdlRXJyb3I/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghZXZlbnQudGFyZ2V0IHx8ICFmdW5jdGlvbkdldEltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAoZXZlbnQudGFyZ2V0IGFzIGFueSkuc3JjID0gYXdhaXQgbGFzdFZhbHVlRnJvbShmdW5jdGlvbkdldEltYWdlRXJyb3IodGhpcy5pdGVtKCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlKCkgJiYgY29uZmlnSXRlbVRleHRSb3dzKCk7IGFzIGNvbmZpZ0l0ZW1UZXh0Um93cykge1xuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGwge3sgY29uZmlnVGVtcGxhdGUoKS5jbGFzc1Jvd3MgPz8gJycgfX1cIj5cbiAgICBAZm9yIChyb3cgb2YgY29uZmlnSXRlbVRleHRSb3dzOyB0cmFjayAkaW5kZXg7IGxldCBpbmRleFJvdyA9ICRpbmRleCkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwicm93KCkuY2xhc3NSb3dcIj5cbiAgICAgICAgQGlmIChyb3coKS5nZXRJbWFnZSAmJiAoaXRlbSgpIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogcm93KCkuZ2V0SW1hZ2UgOiBpdGVtKCkgfCBhc3luYyk7IGFzIGltZ1VybCkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRDbGFzc0ltYWdlIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgc3JjPVwie3sgaW1nVXJsIH19XCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckVycm9ySW1hZ2UoJGV2ZW50LCByb3coKS5nZXRJbWFnZUVycm9yKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkUm93QXZhdGFyQ29uZmlnJyArIGluZGV4Um93XTsgYXMgYXZhdGFyQ29uZmlnKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXJcbiAgICAgICAgICAgIFt0eXBlU2hhcGVdPVwiYXZhdGFyQ29uZmlnLnR5cGVTaGFwZSB8fCAnY2lyY2xlJ1wiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImF2YXRhckNvbmZpZy5jbGFzc0luY2x1ZGVcIlxuICAgICAgICAgICAgW3NpemVdPVwiYXZhdGFyQ29uZmlnLnNpemUgfHwgMzJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJcIlxuICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhckVycm9yXCJcbiAgICAgICAgICAgIFtpZEdlbkNvbG9yXT1cImF2YXRhckNvbmZpZy5pZEdlbkNvbG9yXCJcbiAgICAgICAgICAgIFt0ZXh0QXZhdGFyXT1cImF2YXRhckNvbmZpZy50ZXh0QXZhdGFyXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGZpZWxkS2V5KCkgJiYgaXRlbSgpWydmaWVsZExhYmVsUm93JyArIGluZGV4Um93XSB8IGFzeW5jOyBhcyBsYWJlbFJvdykge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJyb3coKS5nZXRQb3BvdmVyQ29uZmlnID8gKCdwb3BvdmVyJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldFBvcG92ZXJDb25maWcgOiBpdGVtKCkgfCBhc3luYykgOiB7IHpJbmRleDogekluZGV4KCkgKyAxIH1cIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJrZXlTZWxlY3RlZCgpID09PSBpdGVtKClbZmllbGRLZXkoKV0gPyByb3coKS5jbGFzc0l0ZW1TZWxlY3RlZCB8fCByb3coKS5jbGFzc0dldFZhbHVlIHx8ICcnIDogcm93KCkuY2xhc3NHZXRWYWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cImxhYmVsUm93XCJcbiAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCwgaXRlbSgpLCByb3coKS5hY3Rpb24pXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZmllbGRLZXkoKSAmJiByb3coKS5nZXRDb21wb25lbnRPdXRsZXQpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgJ3JvdzonICsgaW5kZXhSb3cgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgfCBhc3luYztcbiAgICAgICAgICAgICAgaW5wdXRzOiB1bmRlZmluZWQgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXREYXRhQ29tcG9uZW50T3V0bGV0IDogaXRlbSgpIDogJ3JvdzonICsgaW5kZXhSb3cgOiB7IHZhbHVlSXNFbXB0eTogeyBpdGVtOiBpdGVtKCkgfSB9IHwgYXN5bmNcbiAgICAgICAgICAgIFwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChyb3coKS5jb2xzPy4oKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzXT1cInJvdygpLmNsYXNzQ29scyB8fCAnZmxleCdcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIml0ZW0oKVtpdGVtKClbJ2ZpZWxkUm93U3R5bGVzRHluYW1pY0NvbHMnICsgaW5kZXhSb3ddXVwiPlxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHJvdygpLmNvbHM/LigpOyB0cmFjayAkaW5kZXg7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKGNvbCgpLmdldEltYWdlICYmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb2woKS5nZXRJbWFnZSA6IGl0ZW0oKSB8IGFzeW5jKTsgYXMgaW1nVXJsKSB7XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKSB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldENsYXNzSW1hZ2UgOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBzcmM9XCJ7eyBpbWdVcmwgfX1cIlxuICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVyRXJyb3JJbWFnZSgkZXZlbnQsIGNvbCgpLmdldEltYWdlRXJyb3IpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xBdmF0YXJDb25maWcnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGF2YXRhckNvbmZpZykge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYXZhdGFyXG4gICAgICAgICAgICAgICAgICBbdHlwZVNoYXBlXT1cImF2YXRhckNvbmZpZy50eXBlU2hhcGUgfHwgJ2NpcmNsZSdcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cImF2YXRhckNvbmZpZy5zaXplIHx8IDMyXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rQXZhdGFyXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJFcnJvclwiXG4gICAgICAgICAgICAgICAgICBbaWRHZW5Db2xvcl09XCJhdmF0YXJDb25maWcuaWRHZW5Db2xvclwiXG4gICAgICAgICAgICAgICAgICBbdGV4dEF2YXRhcl09XCJhdmF0YXJDb25maWcudGV4dEF2YXRhclwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkTGFiZWxDb2wnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGxhYmVsQ29sRnVuYykge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIicgJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGl0ZW0oKVsnZmllbGRDb2xTdHlsZXNEeW5hbWljJyArIGluZGV4Um93ICsgY29sSW5kZXhdIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJrZXlTZWxlY3RlZCgpID09PSBpdGVtKClbZmllbGRLZXkoKV0gPyByb3coKS5jbGFzc0l0ZW1TZWxlY3RlZCB8fCBpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gfHwgJycgOiBpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gfHwgJydcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCInZmllbGRMYWJlbENvbCcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBsYWJlbENvbEZ1bmMgOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInsgekluZGV4OiB6SW5kZXgoKSArIDEgfVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQ29sUG9wb3ZlcicgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgcG9wb3Zlcikge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwicG9wb3Zlci50eXBlID8/ICdvdGhlcidcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJwb3BvdmVyPy5jb25maWcgfCBMaWJzVWlQaXBlc0Nsb25lT2JqZWN0UGlwZTogdHJ1ZSA6IHsgekluZGV4OiB6SW5kZXgoKSArIDEgfVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgQGxldCBjb25zdEh0bWxEYXRhVmlldyA9IHBvcG92ZXIuZGF0YVZpZXcgfHwgcG9wb3Zlckljb247XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicG9wb3Zlci5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cImNvbnN0SHRtbERhdGFWaWV3IHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChmaWVsZEtleSgpICYmIGNvbCgpLmdldENvbXBvbmVudE91dGxldCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAncm93OicgKyBpbmRleFJvdyArICctY29sOicgKyBjb2xJbmRleCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldENvbXBvbmVudE91dGxldCA6IGl0ZW0oKSB8IGFzeW5jO1xuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbCgpLmdldERhdGFDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiAncm93OicgKyBpbmRleFJvdyArICctY29sOicgKyBjb2xJbmRleCA6IHsgdmFsdWVJc0VtcHR5OiB7IGl0ZW06IGl0ZW0oKSB9IH0gfCBhc3luY1xuICAgICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xUb2dnbGUnICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIHRvZ2dsZSkge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGFiZWxcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInICcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBpdGVtKClbJ2ZpZWxkQ29sU3R5bGVzRHluYW1pYycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtoYXNUb2dnbGVdPVwidG9nZ2xlLmhhc1RvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICBbdG9nZ2xlQWN0aXZlXT1cInRvZ2dsZS50b2dnbGVBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgW3RvZ2dsZURpc2FibGVdPVwidG9nZ2xlLnRvZ2dsZURpc2FibGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwidG9nZ2xlLnBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJ0b2dnbGUuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbExlZnRdPVwidG9nZ2xlLmxhYmVsTGVmdFwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxSaWdodF09XCJ0b2dnbGUubGFiZWxSaWdodFwiXG4gICAgICAgICAgICAgICAgICAob3V0U3dpdGNoRXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJywgaXRlbSgpLCBjb2woKS5hY3Rpb24pXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRDb2xCdXR0b24nICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIGJ1dHRvbikge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cImJ1dHRvbi5jbGFzc0ljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJidXR0b24uY2xhc3NJY29uUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiYnV0dG9uLmNsYXNzTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2ljb25Pbmx5VHlwZV09XCJidXR0b24uaWNvbk9ubHlUeXBlXCJcbiAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cImJ1dHRvbi5wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbi5kaXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtpZ25vcmVQb2ludGVyRXZlbnRdPVwiYnV0dG9uLmlnbm9yZVBvaW50ZXJFdmVudFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0oKVsnZmllbGRDb2xDbGFzcycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA/PyAnICdcIlxuICAgICAgICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgnY2xpY2snLCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZEJhZGdlJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyBiYWRnZSkge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYmFkZ2VcbiAgICAgICAgICAgICAgICAgIFttb2RlXT1cImJhZGdlLm1vZGUgfHwgJ3grJ1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY291bnRdPVwiYmFkZ2UuY291bnRcIlxuICAgICAgICAgICAgICAgICAgW21heENvdW50XT1cImJhZGdlLm1heENvdW50IHx8IDk5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0NpcmNsZV09XCJiYWRnZS5jbGFzc0NpcmNsZSB8fCAnbGlicy11aS1mb250LWg0cidcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3Jvd3Mvcm93cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFjLGdDQUFnQyxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBc0JqRCxNQUFNLE9BQU8saUNBQWlD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dGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1iYWRnZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2xvbmUtb2JqZWN0JztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElFbWl0Um93c0V2ZW50LCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCwgSUxpc3RDb25maWdJdGVtVGV4dCwgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3dzLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIExpYnNVaUNvbXBvbmVudHNBdmF0YXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCYWRnZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaVBpcGVzQ2xvbmVPYmplY3RQaXBlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Um93c0NvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHBvcG92ZXJJY29uID0gc2lnbmFsPHN0cmluZz4oYDxpIGNsYXNzPSdsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lIHRleHQtWzE2cHhdIG1sLVs4cHhdJz48L2k+YCk7XG4gIHByb3RlY3RlZCBjb25maWdJdGVtVGV4dFJvd3MgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PihbXSk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBjb25maWdUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPElMaXN0Q29uZmlnSXRlbVRleHQgfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveD4oKTtcbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0PHN0cmluZz4oJ2lkJyk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiAoIWlzRW1wdHkodmFsdWUpID8gdmFsdWUgKyAxIDogMTIwMCkgfSk7XG5cbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8SUVtaXRSb3dzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmFmdGVyVmlld0luaXQoKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ0l0ZW1UZXh0Um93cy5zZXQodGhpcy5jb25maWdUZW1wbGF0ZSgpLnJvd3M/LigpIHx8IFtdKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCwgaXRlbTogYW55LCBhY3Rpb246IGFueSkge1xuICAgIGlmIChldmVudCAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3V0RXZlbnQuZW1pdCh7IGV2ZW50LCBpdGVtLCBhY3Rpb24gfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckVycm9ySW1hZ2UoZXZlbnQ6IEV2ZW50LCBmdW5jdGlvbkdldEltYWdlRXJyb3I/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghZXZlbnQudGFyZ2V0IHx8ICFmdW5jdGlvbkdldEltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAoZXZlbnQudGFyZ2V0IGFzIGFueSkuc3JjID0gYXdhaXQgbGFzdFZhbHVlRnJvbShmdW5jdGlvbkdldEltYWdlRXJyb3IodGhpcy5pdGVtKCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlKCkgJiYgY29uZmlnSXRlbVRleHRSb3dzKCk7IGFzIGNvbmZpZ0l0ZW1UZXh0Um93cykge1xuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGwge3sgY29uZmlnVGVtcGxhdGUoKS5jbGFzc1Jvd3MgPz8gJycgfX1cIj5cbiAgICBAZm9yIChyb3cgb2YgY29uZmlnSXRlbVRleHRSb3dzOyB0cmFjayByb3coKTsgbGV0IGluZGV4Um93ID0gJGluZGV4KSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJyb3coKS5jbGFzc1Jvd1wiPlxuICAgICAgICBAaWYgKHJvdygpLmdldEltYWdlICYmIChpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiByb3coKS5nZXRJbWFnZSA6IGl0ZW0oKSB8IGFzeW5jKTsgYXMgaW1nVXJsKSB7XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKSB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldENsYXNzSW1hZ2UgOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICBzcmM9XCJ7eyBpbWdVcmwgfX1cIlxuICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVyRXJyb3JJbWFnZSgkZXZlbnQsIHJvdygpLmdldEltYWdlRXJyb3IpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRSb3dBdmF0YXJDb25maWcnICsgaW5kZXhSb3ddOyBhcyBhdmF0YXJDb25maWcpIHtcbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWF2YXRhclxuICAgICAgICAgICAgW3R5cGVTaGFwZV09XCJhdmF0YXJDb25maWcudHlwZVNoYXBlIHx8ICdjaXJjbGUnXCJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYXZhdGFyQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICBbc2l6ZV09XCJhdmF0YXJDb25maWcuc2l6ZSB8fCAzMlwiXG4gICAgICAgICAgICBbbGlua0F2YXRhcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhclwiXG4gICAgICAgICAgICBbbGlua0F2YXRhckVycm9yXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyRXJyb3JcIlxuICAgICAgICAgICAgW2lkR2VuQ29sb3JdPVwiYXZhdGFyQ29uZmlnLmlkR2VuQ29sb3JcIlxuICAgICAgICAgICAgW3RleHRBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLnRleHRBdmF0YXJcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZmllbGRLZXkoKSAmJiBpdGVtKClbJ2ZpZWxkTGFiZWxSb3cnICsgaW5kZXhSb3ddIHwgYXN5bmM7IGFzIGxhYmVsUm93KSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbY29uZmlnXT1cInJvdygpLmdldFBvcG92ZXJDb25maWcgPyAoJ3BvcG92ZXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogcm93KCkuZ2V0UG9wb3ZlckNvbmZpZyA6IGl0ZW0oKSB8IGFzeW5jKSA6IHsgekluZGV4OiB6SW5kZXgoKSArIDEgfVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXSA/IHJvdygpLmNsYXNzSXRlbVNlbGVjdGVkIHx8IHJvdygpLmNsYXNzR2V0VmFsdWUgfHwgJycgOiByb3coKS5jbGFzc0dldFZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwibGFiZWxSb3dcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCksIHJvdygpLmFjdGlvbilcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChmaWVsZEtleSgpICYmIHJvdygpLmdldENvbXBvbmVudE91dGxldCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICAncm93OicgKyBpbmRleFJvdyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldENvbXBvbmVudE91dGxldCA6IGl0ZW0oKSB8IGFzeW5jO1xuICAgICAgICAgICAgICBpbnB1dHM6IHVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IHJvdygpLmdldERhdGFDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgOiAncm93OicgKyBpbmRleFJvdyA6IHsgdmFsdWVJc0VtcHR5OiB7IGl0ZW06IGl0ZW0oKSB9IH0gfCBhc3luY1xuICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHJvdygpLmNvbHM/LigpPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwicm93KCkuY2xhc3NDb2xzIHx8ICdmbGV4J1wiXG4gICAgICAgICAgICBbc3R5bGVdPVwiaXRlbSgpW2l0ZW0oKVsnZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scycgKyBpbmRleFJvd11dXCI+XG4gICAgICAgICAgICBAZm9yIChjb2wgb2Ygcm93KCkuY29scz8uKCk7IHRyYWNrIGNvbCgpOyBsZXQgY29sSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGlmIChjb2woKS5nZXRJbWFnZSAmJiAoaXRlbSgpIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29sKCkuZ2V0SW1hZ2UgOiBpdGVtKCkgfCBhc3luYyk7IGFzIGltZ1VybCkge1xuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtKCkgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb2woKS5nZXRDbGFzc0ltYWdlIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgc3JjPVwie3sgaW1nVXJsIH19XCJcbiAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckVycm9ySW1hZ2UoJGV2ZW50LCBjb2woKS5nZXRJbWFnZUVycm9yKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQ29sQXZhdGFyQ29uZmlnJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyBhdmF0YXJDb25maWcpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWF2YXRhclxuICAgICAgICAgICAgICAgICAgW3R5cGVTaGFwZV09XCJhdmF0YXJDb25maWcudHlwZVNoYXBlIHx8ICdjaXJjbGUnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYXZhdGFyQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJhdmF0YXJDb25maWcuc2l6ZSB8fCAzMlwiXG4gICAgICAgICAgICAgICAgICBbbGlua0F2YXRhcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhclwiXG4gICAgICAgICAgICAgICAgICBbbGlua0F2YXRhckVycm9yXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyRXJyb3JcIlxuICAgICAgICAgICAgICAgICAgW2lkR2VuQ29sb3JdPVwiYXZhdGFyQ29uZmlnLmlkR2VuQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3RleHRBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLnRleHRBdmF0YXJcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZExhYmVsQ29sJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyBsYWJlbENvbEZ1bmMpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInICcgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBpdGVtKClbJ2ZpZWxkQ29sU3R5bGVzRHluYW1pYycgKyBpbmRleFJvdyArIGNvbEluZGV4XSA6IGl0ZW0oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwia2V5U2VsZWN0ZWQoKSA9PT0gaXRlbSgpW2ZpZWxkS2V5KCldID8gcm93KCkuY2xhc3NJdGVtU2VsZWN0ZWQgfHwgaXRlbSgpWydmaWVsZENvbENsYXNzJyArIGluZGV4Um93ICsgY29sSW5kZXhdIHx8ICcnIDogaXRlbSgpWydmaWVsZENvbENsYXNzJyArIGluZGV4Um93ICsgY29sSW5kZXhdIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiJ2ZpZWxkTGFiZWxDb2wnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogbGFiZWxDb2xGdW5jIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7IHpJbmRleDogekluZGV4KCkgKyAxIH1cIlxuICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXRlbSgpWydmaWVsZENvbFBvcG92ZXInICsgaW5kZXhSb3cgKyBjb2xJbmRleF07IGFzIHBvcG92ZXIpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInBvcG92ZXIudHlwZSA/PyAnb3RoZXInXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwicG9wb3Zlcj8uY29uZmlnIHwgTGlic1VpUGlwZXNDbG9uZU9iamVjdFBpcGU6IHRydWUgOiB7IHpJbmRleDogekluZGV4KCkgKyAxIH1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF1cIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIicgJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGl0ZW0oKVsnZmllbGRDb2xTdHlsZXNEeW5hbWljJyArIGluZGV4Um93ICsgY29sSW5kZXhdIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCksIGNvbCgpLmFjdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sRGF0YVZpZXcgPSBwb3BvdmVyLmRhdGFWaWV3IHx8IHBvcG92ZXJJY29uO1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInBvcG92ZXIuY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJjb25zdEh0bWxEYXRhVmlldyB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoZmllbGRLZXkoKSAmJiBjb2woKS5nZXRDb21wb25lbnRPdXRsZXQpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgJ3JvdzonICsgaW5kZXhSb3cgKyAnLWNvbDonICsgY29sSW5kZXggfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb2woKS5nZXRDb21wb25lbnRPdXRsZXQgOiBpdGVtKCkgfCBhc3luYztcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiB1bmRlZmluZWQgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOiBjb2woKS5nZXREYXRhQ29tcG9uZW50T3V0bGV0IDogaXRlbSgpIDogJ3JvdzonICsgaW5kZXhSb3cgKyAnLWNvbDonICsgY29sSW5kZXggOiB7IHZhbHVlSXNFbXB0eTogeyBpdGVtOiBpdGVtKCkgfSB9IHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQ29sVG9nZ2xlJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyB0b2dnbGUpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJyAnIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogaXRlbSgpWydmaWVsZENvbFN0eWxlc0R5bmFtaWMnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gOiBpdGVtKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbaGFzVG9nZ2xlXT1cInRvZ2dsZS5oYXNUb2dnbGVcIlxuICAgICAgICAgICAgICAgICAgW3RvZ2dsZUFjdGl2ZV09XCJ0b2dnbGUudG9nZ2xlQWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIFt0b2dnbGVEaXNhYmxlXT1cInRvZ2dsZS50b2dnbGVEaXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cInRvZ2dsZS5wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwidG9nZ2xlLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxMZWZ0XT1cInRvZ2dsZS5sYWJlbExlZnRcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsUmlnaHRdPVwidG9nZ2xlLmxhYmVsUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKG91dFN3aXRjaEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCdjbGljaycsIGl0ZW0oKSwgY29sKCkuYWN0aW9uKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpdGVtKClbJ2ZpZWxkQ29sQnV0dG9uJyArIGluZGV4Um93ICsgY29sSW5kZXhdOyBhcyBidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCJidXR0b24uY2xhc3NJY29uTGVmdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiYnV0dG9uLmNsYXNzSWNvblJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0xhYmVsXT1cImJ1dHRvbi5jbGFzc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwiYnV0dG9uLmljb25Pbmx5VHlwZVwiXG4gICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJidXR0b24ucG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b24uZGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICBbaWdub3JlUG9pbnRlckV2ZW50XT1cImJ1dHRvbi5pZ25vcmVQb2ludGVyRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtKClbJ2ZpZWxkQ29sQ2xhc3MnICsgaW5kZXhSb3cgKyBjb2xJbmRleF0gPz8gJyAnXCJcbiAgICAgICAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJywgaXRlbSgpLCBjb2woKS5hY3Rpb24pXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGl0ZW0oKVsnZmllbGRCYWRnZScgKyBpbmRleFJvdyArIGNvbEluZGV4XTsgYXMgYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJhZGdlXG4gICAgICAgICAgICAgICAgICBbbW9kZV09XCJiYWRnZS5tb2RlIHx8ICd4KydcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIicgJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGl0ZW0oKVsnZmllbGRDb2xTdHlsZXNEeW5hbWljJyArIGluZGV4Um93ICsgY29sSW5kZXhdIDogaXRlbSgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2NvdW50XT1cImJhZGdlLmNvdW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXhDb3VudF09XCJiYWRnZS5tYXhDb3VudCB8fCA5OVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NDaXJjbGVdPVwiYmFkZ2UuY2xhc3NDaXJjbGUgfHwgJ2xpYnMtdWktZm9udC1oNHInXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
@@ -130,10 +130,10 @@ export class LibsUiComponentsListTagComponent extends LibsUiComponentsListTempla
130
130
  return this.items().length;
131
131
  }
132
132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListTagComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
133
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n &nbsp;\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsListTagComponent, isStandalone: true, selector: "libs_ui-components-list-templates_tag", usesInheritance: true, ngImport: i0, template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n &nbsp;\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
134
134
  }
135
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsListTagComponent, decorators: [{
136
136
  type: Component,
137
- args: [{ selector: 'libs_ui-components-list-templates_tag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, LibsUiComponentsSpinnerComponent, LibsUiComponentsScrollOverlayDirective, LibsUiCheckSelectedByKeyPipe], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()[fieldKey()]) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n &nbsp;\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n" }]
137
+ args: [{ selector: 'libs_ui-components-list-templates_tag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, LibsUiComponentsSpinnerComponent, LibsUiComponentsScrollOverlayDirective, LibsUiCheckSelectedByKeyPipe], template: "@if (configTemplateTag(); as configTemplateTag) {\n <div\n class=\"w-full h-full relative\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n <div\n class=\"relative max-h-[150px] h-full {{ configTemplateTag.classIncludeContainer }}\"\n [ngClass]=\"{ 'flex flex-wrap': !configTemplateTag.ignoreItemFlexWrap }\"\n [class.min-h-[45px]]=\"!loading() && (!items() || !items().length)\"\n [class.min-h-[94px]]=\"loading() && items()\">\n @for (item of items(); track item()) {\n <div\n [class.libs-ui-disable]=\"loading() || disable()\"\n [class.pointer-events-none]=\"loading() || disable()\"\n [class]=\"item().classContainerItem\">\n @if (item().bullet; as bullet) {\n <div\n [class]=\"item().classItem || 'rounded-[10px] px-[8px] py-[1px] mb-[8px] mr-[8px]'\"\n [class.w-max]=\"configTemplateTag?.ignoreItemFlexWrap\"\n [style.background-color]=\"bullet().backgroundColor\"\n [style.color]=\"bullet().color\"\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\">\n <span [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n } @else {\n @let constHtmlIsSelected = item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: multiKeySelected() : multiKeySelected().length;\n <div\n (click)=\"handlerSelectItem($event, item())\"\n (keydown.enter)=\"handlerSelectItem($event, item())\"\n [class]=\"item().classItem || 'rounded-[20px] mb-[8px] mr-[8px] py-[4px] px-[8px] flex items-center cursor-pointer'\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"constHtmlIsSelected\"\n [class.text-[var(--libs-ui-color-default)]]=\"constHtmlIsSelected\"\n [class.bg-white]=\"!constHtmlIsSelected\"\n [class.text-[#6a7383]]=\"!constHtmlIsSelected\"\n [class.libs-ui-border-general]=\"!constHtmlIsSelected\">\n @if (constHtmlIsSelected) {\n <div class=\"mr-[8px] text-[12px] libs-ui-icon-check before:text-[var(--libs-ui-color-default)]\"></div>\n }\n <span\n class=\"libs-ui-font-h6r break-word\"\n [innerHTML]=\"item().fieldLabel\"></span>\n </div>\n }\n </div>\n }\n @if (!items() || !items().length) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] ' + (config()?.textNoDataClassInclude ?? 'py-[4px] flex items-center justify-center w-full')\">\n @if (!keySearch() && !loading()) {\n @let constHtmlTextNoData = config()?.textNoData || 'i18n_have_no_selection';\n {{ constHtmlTextNoData | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null; context: { keySearch: keySearch() }\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n @let constHtmlTextSearchNoData = config()?.textSearchNoData || 'i18n_no_result';\n {{ constHtmlTextSearchNoData | translate }}\n }\n @if (loading()) {\n &nbsp;\n }\n </div>\n }\n </div>\n @if (loading()) {\n <div class=\"w-full h-full absolute top-0\">\n <libs_ui-components-spinner [size]=\"'medium'\" />\n </div>\n }\n </div>\n}\n" }]
138
138
  }] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVVqRyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsOENBQThDO0lBQ2xHLG1CQUFtQjtJQUNULGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7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RUFBRSxzQ0FBc0MsRUFBRSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtVGFnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCB9IGZyb20gJy4uL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfdGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbmZpZ1RlbXBsYXRlVGFnID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUYWcuc2V0KHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSk7XG4gICAgdGhpcy5maWVsZEtleS5zZXQodGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICghaXRlbSB8fCB0aGlzLmtleXNEaXNhYmxlSXRlbSgpPy5zb21lKChrZXkpID0+IGtleSA9PT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwga2V5XSk7XG4gICAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQudXBkYXRlKChpdGVtcykgPT4ge1xuICAgICAgaXRlbXM/LnNwbGljZShpbmRleE9mS2V5LCAxKTtcblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KFtrZXldKTtcbiAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW1pdE1vU2VsZWN0TXVsdGlLZXkobXVsdGlLZXlTZWxlY3RlZDogQXJyYXk8dW5rbm93bj4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgY29uc3QgbWFwS2V5cyA9IG5ldyBBcnJheTxJTGlzdERhdGFFbWl0S2V5PigpO1xuICAgIGlmICghbXVsdGlLZXlTZWxlY3RlZD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gICAgfVxuXG4gICAgbXVsdGlLZXlTZWxlY3RlZC5mb3JFYWNoKChrZXk6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlKCkuZmluZCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIG1hcEtleXMucHVzaCh7IGtleSwgaXRlbSwgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgbWFwS2V5cywgaXNDbGlja01hbnVhbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2Nyb2xsQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzU2VhcmNoKCkge1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzRGF0YShyZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1CeUtleVNlYXJjaDogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4gPSBbXTtcbiAgICBjb25zdCBrZXlzSGlkZGVuID0gdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdO1xuXG4gICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZTogV3JpdGFibGVTaWduYWw8YW55PiA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKChrZXkpID0+IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnKCkpO1xuXG4gICAgICAgIGlmICh0ZXh0ICYmIGRlbGV0ZVVuaWNvZGUodGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKS5pbmNsdWRlcyhkZWxldGVVbmljb2RlKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpICYmICF0aGlzLml0ZW1zKCkuZmluZCgoZGF0YUl0ZW0pID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpIHtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4uaXRlbUJ5S2V5U2VhcmNoXSk7XG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIlxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgKG91dFNjcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlbGF0aXZlIG1heC1oLVsxNTBweF0gaC1mdWxsIHt7IGNvbmZpZ1RlbXBsYXRlVGFnLmNsYXNzSW5jbHVkZUNvbnRhaW5lciB9fVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdmbGV4IGZsZXgtd3JhcCc6ICFjb25maWdUZW1wbGF0ZVRhZy5pZ25vcmVJdGVtRmxleFdyYXAgfVwiXG4gICAgICBbY2xhc3MubWluLWgtWzQ1cHhdXT1cIiFsb2FkaW5nKCkgJiYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aClcIlxuICAgICAgW2NsYXNzLm1pbi1oLVs5NHB4XV09XCJsb2FkaW5nKCkgJiYgaXRlbXMoKVwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKClbZmllbGRLZXkoKV0pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0NvbnRhaW5lckl0ZW1cIj5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQ7IGFzIGJ1bGxldCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMTBweF0gcHgtWzhweF0gcHktWzFweF0gbWItWzhweF0gbXItWzhweF0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctbWF4XT1cImNvbmZpZ1RlbXBsYXRlVGFnPy5pZ25vcmVJdGVtRmxleFdyYXBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidWxsZXQoKS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnVsbGV0KCkuY29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sSXNTZWxlY3RlZCA9IGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IG11bHRpS2V5U2VsZWN0ZWQoKSA6IG11bHRpS2V5U2VsZWN0ZWQoKS5sZW5ndGg7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMjBweF0gbWItWzhweF0gbXItWzhweF0gcHktWzRweF0gcHgtWzhweF0gZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCJjb25zdEh0bWxJc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cImNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctd2hpdGVdPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MudGV4dC1bIzZhNzM4M11dPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIhY29uc3RIdG1sSXNTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICBAaWYgKGNvbnN0SHRtbElzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItWzhweF0gdGV4dC1bMTJweF0gbGlicy11aS1pY29uLWNoZWNrIGJlZm9yZTp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXVwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyIGJyZWFrLXdvcmRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpYnMtdWktZm9udC1oNXIgdGV4dC1bIzljYTJhZF0gJyArIChjb25maWcoKT8udGV4dE5vRGF0YUNsYXNzSW5jbHVkZSA/PyAncHktWzRweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1mdWxsJylcIj5cbiAgICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbFRleHROb0RhdGEgPSBjb25maWcoKT8udGV4dE5vRGF0YSB8fCAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbic7XG4gICAgICAgICAgICB7eyBjb25zdEh0bWxUZXh0Tm9EYXRhIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsOyBjb250ZXh0OiB7IGtleVNlYXJjaDoga2V5U2VhcmNoKCkgfVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgQGxldCBjb25zdEh0bWxUZXh0U2VhcmNoTm9EYXRhID0gY29uZmlnKCk/LnRleHRTZWFyY2hOb0RhdGEgfHwgJ2kxOG5fbm9fcmVzdWx0JztcbiAgICAgICAgICAgIHt7IGNvbnN0SHRtbFRleHRTZWFyY2hOb0RhdGEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVVqRyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsOENBQThDO0lBQ2xHLG1CQUFtQjtJQUNULGlCQUFpQixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFFdkUsUUFBUTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTztRQUNULENBQUM7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RUFBRSxzQ0FBc0MsRUFBRSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICdAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZGVsZXRlVW5pY29kZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtVGFnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCB9IGZyb20gJy4uL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfdGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGFnQ29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbmZpZ1RlbXBsYXRlVGFnID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRhZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUYWcuc2V0KHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGFnPy4oKSk7XG4gICAgdGhpcy5maWVsZEtleS5zZXQodGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICghaXRlbSB8fCB0aGlzLmtleXNEaXNhYmxlSXRlbSgpPy5zb21lKChrZXkpID0+IGtleSA9PT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwga2V5XSk7XG4gICAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQudXBkYXRlKChpdGVtcykgPT4ge1xuICAgICAgaXRlbXM/LnNwbGljZShpbmRleE9mS2V5LCAxKTtcblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KFtrZXldKTtcbiAgICB0aGlzLmVtaXRNb1NlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW1pdE1vU2VsZWN0TXVsdGlLZXkobXVsdGlLZXlTZWxlY3RlZDogQXJyYXk8dW5rbm93bj4sIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgY29uc3QgbWFwS2V5cyA9IG5ldyBBcnJheTxJTGlzdERhdGFFbWl0S2V5PigpO1xuICAgIGlmICghbXVsdGlLZXlTZWxlY3RlZD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gICAgfVxuXG4gICAgbXVsdGlLZXlTZWxlY3RlZC5mb3JFYWNoKChrZXk6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlKCkuZmluZCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIG1hcEtleXMucHVzaCh7IGtleSwgaXRlbSwgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgbWFwS2V5cywgaXNDbGlja01hbnVhbCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2Nyb2xsQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzU2VhcmNoKCkge1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzRGF0YShyZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1CeUtleVNlYXJjaDogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4gPSBbXTtcbiAgICBjb25zdCBrZXlzSGlkZGVuID0gdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdO1xuXG4gICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZTogV3JpdGFibGVTaWduYWw8YW55PiA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgZGF0YVN0b3JlLnVwZGF0ZSgoY3VycmVudFN0b3JlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKChrZXkpID0+IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGFnKCkpO1xuXG4gICAgICAgIGlmICh0ZXh0ICYmIGRlbGV0ZVVuaWNvZGUodGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKS5pbmNsdWRlcyhkZWxldGVVbmljb2RlKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpICYmICF0aGlzLml0ZW1zKCkuZmluZCgoZGF0YUl0ZW0pID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpIHtcbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoKGN1cnJlbnRTdG9yZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudFN0b3JlLFxuICAgICAgICAgICAgICBjbGFzc0l0ZW06IGl0ZW0oKS5jbGFzc0l0ZW0gfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRhZygpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhJdGVtUmVtb3ZlID0gdGhpcy5pdGVtcygpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1SZW1vdmUgPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4uaXRlbUJ5S2V5U2VhcmNoXSk7XG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjaGVja0xvYWRJdGVtKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGFnKCk7IGFzIGNvbmZpZ1RlbXBsYXRlVGFnKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmVcIlxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgKG91dFNjcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlbGF0aXZlIG1heC1oLVsxNTBweF0gaC1mdWxsIHt7IGNvbmZpZ1RlbXBsYXRlVGFnLmNsYXNzSW5jbHVkZUNvbnRhaW5lciB9fVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdmbGV4IGZsZXgtd3JhcCc6ICFjb25maWdUZW1wbGF0ZVRhZy5pZ25vcmVJdGVtRmxleFdyYXAgfVwiXG4gICAgICBbY2xhc3MubWluLWgtWzQ1cHhdXT1cIiFsb2FkaW5nKCkgJiYgKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aClcIlxuICAgICAgW2NsYXNzLm1pbi1oLVs5NHB4XV09XCJsb2FkaW5nKCkgJiYgaXRlbXMoKVwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtKCkpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0NvbnRhaW5lckl0ZW1cIj5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQ7IGFzIGJ1bGxldCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMTBweF0gcHgtWzhweF0gcHktWzFweF0gbWItWzhweF0gbXItWzhweF0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctbWF4XT1cImNvbmZpZ1RlbXBsYXRlVGFnPy5pZ25vcmVJdGVtRmxleFdyYXBcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidWxsZXQoKS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYnVsbGV0KCkuY29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LCBpdGVtKCkpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sSXNTZWxlY3RlZCA9IGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IG11bHRpS2V5U2VsZWN0ZWQoKSA6IG11bHRpS2V5U2VsZWN0ZWQoKS5sZW5ndGg7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbSB8fCAncm91bmRlZC1bMjBweF0gbWItWzhweF0gbXItWzhweF0gcHktWzRweF0gcHgtWzhweF0gZmxleCBpdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCJjb25zdEh0bWxJc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cImNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYmctd2hpdGVdPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MudGV4dC1bIzZhNzM4M11dPVwiIWNvbnN0SHRtbElzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZ2VuZXJhbF09XCIhY29uc3RIdG1sSXNTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICBAaWYgKGNvbnN0SHRtbElzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItWzhweF0gdGV4dC1bMTJweF0gbGlicy11aS1pY29uLWNoZWNrIGJlZm9yZTp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXVwiPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyIGJyZWFrLXdvcmRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpYnMtdWktZm9udC1oNXIgdGV4dC1bIzljYTJhZF0gJyArIChjb25maWcoKT8udGV4dE5vRGF0YUNsYXNzSW5jbHVkZSA/PyAncHktWzRweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1mdWxsJylcIj5cbiAgICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICBAbGV0IGNvbnN0SHRtbFRleHROb0RhdGEgPSBjb25maWcoKT8udGV4dE5vRGF0YSB8fCAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbic7XG4gICAgICAgICAgICB7eyBjb25zdEh0bWxUZXh0Tm9EYXRhIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsOyBjb250ZXh0OiB7IGtleVNlYXJjaDoga2V5U2VhcmNoKCkgfVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgQGxldCBjb25zdEh0bWxUZXh0U2VhcmNoTm9EYXRhID0gY29uZmlnKCk/LnRleHRTZWFyY2hOb0RhdGEgfHwgJ2kxOG5fbm9fcmVzdWx0JztcbiAgICAgICAgICAgIHt7IGNvbnN0SHRtbFRleHRTZWFyY2hOb0RhdGEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19