@libs-ui/components-list 0.2.306-4 → 0.2.306-6

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.
Files changed (33) hide show
  1. package/defines/list.define.d.ts +7 -7
  2. package/esm2022/defines/list.define.mjs +7 -7
  3. package/esm2022/highlight-key-search/highlight-key-search.directive.mjs +4 -4
  4. package/esm2022/index.mjs +1 -1
  5. package/esm2022/interfaces/config-item.interface.mjs +1 -2
  6. package/esm2022/interfaces/data-emit.interface.mjs +1 -1
  7. package/esm2022/interfaces/function-control-event.interface.mjs +1 -1
  8. package/esm2022/interfaces/index.mjs +6 -6
  9. package/esm2022/interfaces/tab.interface.mjs +1 -1
  10. package/esm2022/interfaces/templates-type.type.mjs +1 -1
  11. package/esm2022/list.component.mjs +43 -44
  12. package/esm2022/pipes/check-selected-by-key.pipe.mjs +3 -3
  13. package/esm2022/templates/checkbox/checkbox.component.mjs +36 -31
  14. package/esm2022/templates/group/group.component.mjs +78 -71
  15. package/esm2022/templates/group/item/item.component.mjs +9 -7
  16. package/esm2022/templates/group/pipes/calculator-left-line-vertical-item.pipe.mjs +3 -3
  17. package/esm2022/templates/group/pipes/calculator-margin-left-item.pipe.mjs +3 -3
  18. package/esm2022/templates/group/pipes/calculator-padding-left-item.pipe.mjs +2 -2
  19. package/esm2022/templates/radio/radio.component.mjs +23 -18
  20. package/esm2022/templates/rows/rows.component.mjs +21 -19
  21. package/esm2022/templates/tag/tag.component.mjs +16 -21
  22. package/esm2022/templates/templates.component.abstract.mjs +36 -27
  23. package/esm2022/templates/text/text.component.mjs +27 -20
  24. package/fesm2022/libs-ui-components-list.mjs +265 -236
  25. package/fesm2022/libs-ui-components-list.mjs.map +1 -1
  26. package/interfaces/config-item.interface.d.ts +16 -13
  27. package/interfaces/data-emit.interface.d.ts +1 -1
  28. package/interfaces/function-control-event.interface.d.ts +2 -2
  29. package/interfaces/index.d.ts +5 -5
  30. package/list.component.d.ts +12 -11
  31. package/package.json +23 -23
  32. package/templates/rows/rows.component.d.ts +4 -4
  33. package/templates/templates.component.abstract.d.ts +9 -9
@@ -33,7 +33,7 @@ export class LibsUiComponentsListGroupItemComponent {
33
33
  /* FUNCTIONS */
34
34
  handlerToggleExpand(e, item) {
35
35
  e.stopPropagation();
36
- item.update(current => {
36
+ item.update((current) => {
37
37
  current.expand = !current.expand;
38
38
  return current;
39
39
  });
@@ -43,7 +43,7 @@ export class LibsUiComponentsListGroupItemComponent {
43
43
  this.outChangeView.emit(expand);
44
44
  }
45
45
  handlerChangeChecked(item, field_key, disable) {
46
- if (disable || field_key && this.keysDisableItem() && this.keysDisableItem()?.length && this.keysDisableItem()?.some(key => key === field_key)) {
46
+ if (disable || (field_key && this.keysDisableItem() && this.keysDisableItem()?.length && this.keysDisableItem()?.some((key) => key === field_key))) {
47
47
  return;
48
48
  }
49
49
  if (item.level !== item.maxLevelGroup && this.configTemplateGroup()?.ignoreCheckboxItem) {
@@ -61,12 +61,14 @@ export class LibsUiComponentsListGroupItemComponent {
61
61
  this.outChangStageFlagMousePopover.emit(flag);
62
62
  }
63
63
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListGroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
64
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListGroupItemComponent, isStandalone: true, selector: "libs_ui-components-list-templates_group-item", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, configTemplateGroup: { classPropertyName: "configTemplateGroup", publicName: "configTemplateGroup", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, keysChecked: { classPropertyName: "keysChecked", publicName: "keysChecked", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, parentItem: { classPropertyName: "parentItem", publicName: "parentItem", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, keysStillOtherOptions: { classPropertyName: "keysStillOtherOptions", publicName: "keysStillOtherOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangeView: "outChangeView", outChange: "outChange", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "@if (configTemplateGroup(); as configTemplateGroup) {\n @if ((configTemplateGroup.isViewTree && !!items().length) || (parentItem().maxLevelGroup > 2 && parentItem().level > 1)) {\n <div class='libs-ui-list-group-item-line-vertical'\n [style.left.px]=\"parentItem().level | LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe:parentItem().maxLevelGroup:configTemplateGroup.isViewTree :configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\">\n </div>\n }\n @if (items() && items().length) {\n @for (item of items(); track item()[fieldKey()]) {\n <div>\n <div\n [style.marginLeft.px]=\"item().level | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\"\n [style.paddingLeft.px]=\"item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!!item()[configTemplateGroup.fieldGetItems]?.()?.length\"\n [style.paddingRight.px]=\"item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!!item()[configTemplateGroup.fieldGetItems]?.()?.length\"\n [class]=\"'libs-ui-bg-list-hover py-[6px] pr-[16px] flex items-center relative libs-ui-bg-list-hover-active ' + item()?.classInclude\"\n [class.libs-ui-bg-list-active]=\"configTemplateGroup.singleSelectItem && item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [class.libs-ui-disable]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.pointer-events-none]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.cursor-pointer]=\"!disable() && !(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) && !(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.libs-ui-bg-list-active]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.hasBackgroundColorWhenItemSelected && item().isCheckManual\"\n (click)=\"handlerChangeChecked(item(), item()[fieldKey()], disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup))\">\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTree) {\n <i class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n (click)=\"handlerToggleExpand($event,item)\">\n </i>\n }\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]()?.length) {\n <div [class]=\"'p-[5px]'\">\n <div [class]=\"'libs-ui-list-group-json_icon-item-parent'\"\n [attr.disabled]=\"disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\">\n </div>\n </div>\n }\n <div class=\"flex w-full relative\">\n <div #labelRef\n class=\"invisible\">.</div>\n <div class=\"flex items-center w-full \"\n [class.absolute]=\"!configTemplateGroup.ignoreFixHeightItem\"\n [style.height.px]=\"!configTemplateGroup.ignoreFixHeightItem ? labelRef.clientHeight : 'auto'\">\n @let constHtmlClassIncludeItem = (configTemplateGroup.classIncludeItem || '')+' w-full';\n @if (!configTemplateGroup.isViewRadio) {\n <libs_ui-components-checkbox-single [avatarConfig]=\"item().avatarConfig\"\n [class.ml-[8px]]=\"configTemplateGroup.isViewTree || (configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)\"\n [ignoreCheckbox]=\"configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.-w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || (configTemplateGroup.widthLabelSub24WhenNotTreeView && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey))) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [disable]=\"disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup && !configTemplateGroup.isViewTreeJson) || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\"\n [label]=\"item().fieldLabel\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [stillOtherOptions]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysStillOtherOptions():keysStillOtherOptions().length\"\n [classLabelInclude]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual ? 'libs-ui-color-default libs-ui-font-h5r' : 'libs-ui-font-h5r'\"\n [dataComponentOutlet]=\"(undefined | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getDataComponentOutletItem:item():fieldKey():{valueIsEmpty:{item:item()}}) | async\"\n [componentOutlet]=\"(0 | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getComponentOutletItem:item():fieldKey():{valueIs0:0}) | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getImage:item()) | async) : item()[configTemplateGroup.fieldGetAvatarItem || ''] | async\"\n [linkImageError]=\"configTemplateGroup.getLinkImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getLinkImageError:item()) | async) : ''\"\n [imgTypeIcon]=\"configTemplateGroup.imgTypeIcon\"\n [iconImageClass]=\"item().iconImageClass ? item().iconImageClass : undefined\"\n [classImageInclude]=\"configTemplateGroup.classImageInclude || ''\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEventPopover)=\"handlerEventPopover($event, item())\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n @if (configTemplateGroup.isViewRadio) {\n <libs_ui-components-radio-single [avatarConfig]=\"item().avatarConfig\"\n [class.!ml-[8px]]=\"configTemplateGroup.isViewTree\"\n [ignoreRadio]=\"configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [disable]=\"disable() || (configTemplateGroup.disableItemNotLastLevel && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)||(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\"\n [label]=\"item().fieldLabel\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [active]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [classLabelInclude]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual ? 'text-[#009cdb] libs-ui-font-h5r ': ' libs-ui-font-h5r '\"\n [dataComponentOutlet]=\"(undefined | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getDataComponentOutletItem:item():fieldKey():{valueIsEmpty:{item:item()}}) | async\"\n [componentOutlet]=\"(0 | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getComponentOutletItem:item():fieldKey():{valueIs0:0}) | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:(item().specific_loadImgError && configTemplateGroup.getLinkImageError ? configTemplateGroup.getLinkImageError : configTemplateGroup.getImage):item()) | async) : item()[configTemplateGroup.fieldGetAvatarItem || '']\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n </div>\n </div>\n @if ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey)) {\n <i class=\"libs-ui-icon-check before:!text-[16px]\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n [class.libs-ui-icon-check]=\"configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\">\n </i>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length && !configTemplateGroup.isViewTree && !configTemplateGroup.isViewTreeJson) {\n <i class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n (click)=\"handlerToggleExpand($event,item)\">\n </i>\n }\n </div>\n @if (item().expand || configTemplateGroup.isViewTreeJson) {\n @if (item().level < item().maxLevelGroup && !item()[configTemplateGroup.fieldGetItems]?.()?.length && configTemplateGroup.isViewTree) {\n <div class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"(item().level + 1) | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:(item().maxLevelGroup+1):configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem):true\"\n [class.!py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.!py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"item().classIncludeItemNoData || ''\">\n @if (!keySearch()) {\n <span>{{ 'i18n_no_data_yet' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length) {\n <libs_ui-components-list-templates_group-item [keySearch]=\"keySearch()\"\n [items]=\"item()[configTemplateGroup.fieldGetItems]()\"\n [parentItem]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keysChecked]=\"keysChecked()\"\n [disable]=\"(disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)) && !configTemplateGroup.isViewTreeJson\"\n [keysDisableItem]=\"keysDisableItem()\"\n [configTemplateGroup]=\"configTemplateGroup\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChangeView)=\"handlerChangeView($event)\"\n (outChange)=\"handlerChangeChecked($event.item)\" />\n }\n }\n </div>\n }\n }\n\n @if ((!items() || !items().length) && (parentItem().level < parentItem().maxLevelGroup)) {\n <div class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"(parentItem().level + 1) | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:(parentItem().maxLevelGroup+1):configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem):true\"\n [style.paddingLeft.px]=\"(parentItem().level + 1) | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:(parentItem().maxLevelGroup+1):configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:false\"\n [class.py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"parentItem().classIncludeItemNoData || ''\">\n @if (parentItem().iconEmptyDataInGroup) {\n <div class=\"pb-[16px]\">\n <ng-container\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\" />\n </div>\n }\n @if (!keySearch()) {\n <span>{{ ( parentItem().textDescriptionGroupWhenNoData ?? config()?.textNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{position:relative}:host .libs-ui-list-group-item-line-vertical{position:absolute;width:1px;height:100%;background-color:#e6e7ea}.libs-ui-icon-check{--color: var(--libs-ui-color-default, #226ff5)}.libs-ui-icon-check:before{font-size:16px;color:var(--libs-ui-color-default, #226ff5)}[class*=libs-ui-icon-chevron]:before{color:#6a7383}.libs-ui-list-group-json_icon-item-parent{min-width:6px;min-height:6px;height:6px;width:6px;border-radius:50%;background-color:#226ff5}.libs-ui-list-group-json_icon-item-parent[disabled=true]{background-color:#6a7383!important}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsListGroupItemComponent, selector: "libs_ui-components-list-templates_group-item", inputs: ["items", "configTemplateGroup", "keySearch", "fieldKey", "keysChecked", "keysDisableItem", "parentItem", "disable", "disableLabel", "config", "keysStillOtherOptions"], outputs: ["outChangeView", "outChange", "outChangStageFlagMousePopover"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe, name: "LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorMarginLeftItemPipe, name: "LibsUiComponentsListGroupCalculatorMarginLeftItemPipe" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe, name: "LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }, { kind: "component", type: LibsUiComponentsCheckboxSingleComponent, selector: "libs_ui-components-checkbox-single", inputs: ["key", "checked", "label", "classLabelInclude", "ignoreShowPopoverLabel", "typeLabelPopover", "popover", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "classInclude", "clickExactly", "disable", "disableLabel", "ignoreCheckbox", "zIndexLabel", "stillOtherOptions", "error", "showBorderError", "description", "iconImageClass", "classIconInclude", "modeBorder", "dataComponentOutlet", "componentOutlet"], outputs: ["checkedChange", "linkImageChange", "outChange", "outEventPopover", "outClickLabel", "outChangStageFlagMousePopover"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "component", type: LibsUiComponentsRadioSingleComponent, selector: "libs_ui-components-radio-single", inputs: ["key", "active", "classInclude", "label", "labelInterpolateParams", "ignorePopoverLabel", "classLabelInclude", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "popover", "disable", "disableLabel", "clickExactly", "typeRadio", "ignoreRadio", "zIndexLabel", "classIncludeIcon", "dataComponentOutlet", "componentOutlet"], outputs: ["activeChange", "outClickLabel", "outChange", "outChangStageFlagMousePopover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
64
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListGroupItemComponent, isStandalone: true, selector: "libs_ui-components-list-templates_group-item", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, configTemplateGroup: { classPropertyName: "configTemplateGroup", publicName: "configTemplateGroup", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, keysChecked: { classPropertyName: "keysChecked", publicName: "keysChecked", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, parentItem: { classPropertyName: "parentItem", publicName: "parentItem", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, keysStillOtherOptions: { classPropertyName: "keysStillOtherOptions", publicName: "keysStillOtherOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outChangeView: "outChangeView", outChange: "outChange", outChangStageFlagMousePopover: "outChangStageFlagMousePopover" }, ngImport: i0, template: "@if (configTemplateGroup(); as configTemplateGroup) {\n @if ((configTemplateGroup.isViewTree && !!items().length) || (parentItem().maxLevelGroup > 2 && parentItem().level > 1)) {\n <div\n class=\"libs-ui-list-group-item-line-vertical\"\n [style.left.px]=\"\n parentItem().level\n | LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe\n : parentItem().maxLevelGroup\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n \"></div>\n }\n @if (items() && items().length) {\n @for (item of items(); track item()[fieldKey()]) {\n <div>\n <div\n [style.marginLeft.px]=\"\n item().level\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : item().maxLevelGroup\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n \"\n [style.paddingLeft.px]=\"\n item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: item().maxLevelGroup : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : !!item()[configTemplateGroup.fieldGetItems]?.()?.length\n \"\n [style.paddingRight.px]=\"\n item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: item().maxLevelGroup : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : !!item()[configTemplateGroup.fieldGetItems]?.()?.length\n \"\n [class]=\"'libs-ui-bg-list-hover py-[6px] pr-[16px] flex items-center relative libs-ui-bg-list-hover-active ' + item()?.classInclude\"\n [class.libs-ui-bg-list-active]=\"configTemplateGroup.singleSelectItem && item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [class.libs-ui-disable]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.pointer-events-none]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.cursor-pointer]=\"!disable() && !(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) && !(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.libs-ui-bg-list-active]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.hasBackgroundColorWhenItemSelected && item().isCheckManual\"\n (click)=\"handlerChangeChecked(item(), item()[fieldKey()], disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup))\">\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTree) {\n <i\n class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n (click)=\"handlerToggleExpand($event, item)\"></i>\n }\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]()?.length) {\n <div [class]=\"'p-[5px]'\">\n <div\n [class]=\"'libs-ui-list-group-json_icon-item-parent'\"\n [attr.disabled]=\"disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) || false\"></div>\n </div>\n }\n <div class=\"flex w-full relative\">\n <div\n #labelRef\n class=\"invisible\"\n [class.hidden]=\"configTemplateGroup.ignoreFixHeightItem\">\n .\n </div>\n <div\n class=\"flex items-center w-full\"\n [class.absolute]=\"!configTemplateGroup.ignoreFixHeightItem\"\n [style.height.px]=\"!configTemplateGroup.ignoreFixHeightItem ? labelRef.clientHeight : 'auto'\">\n @let constHtmlClassIncludeItem = (configTemplateGroup.classIncludeItem || '') + ' w-full';\n @if (!configTemplateGroup.isViewRadio) {\n <libs_ui-components-checkbox-single\n [avatarConfig]=\"item().avatarConfig\"\n [class.ml-[8px]]=\"configTemplateGroup.isViewTree || (configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)\"\n [ignoreCheckbox]=\"configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.-w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"\n ((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) ||\n (configTemplateGroup.widthLabelSub24WhenNotTreeView &&\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) &&\n configTemplateGroup.singleSelectItem &&\n (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey))) &&\n !configTemplateGroup.ignoreIconExpandMarginRight\n \"\n [clickExactly]=\"false\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [disable]=\"\n disable() ||\n (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup && !configTemplateGroup.isViewTreeJson) ||\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) ||\n false\n \"\n [label]=\"item().fieldLabel\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [stillOtherOptions]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysStillOtherOptions() : keysStillOtherOptions().length\"\n [classLabelInclude]=\"\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\n ? 'libs-ui-color-default libs-ui-font-h5r'\n : 'libs-ui-font-h5r'\n \"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getDataComponentOutletItem : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getComponentOutletItem : item() : fieldKey() : { valueIs0: 0 } | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getImage : item() | async) : (item()[configTemplateGroup.fieldGetAvatarItem || ''] | async)\"\n [linkImageError]=\"configTemplateGroup.getLinkImageError ? ('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getLinkImageError : item() | async) : ''\"\n [imgTypeIcon]=\"configTemplateGroup.imgTypeIcon\"\n [iconImageClass]=\"item().iconImageClass ? item().iconImageClass : undefined\"\n [classImageInclude]=\"configTemplateGroup.classImageInclude || ''\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEventPopover)=\"handlerEventPopover($event, item())\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n @if (configTemplateGroup.isViewRadio) {\n <libs_ui-components-radio-single\n [avatarConfig]=\"item().avatarConfig\"\n [class.!ml-[8px]]=\"configTemplateGroup.isViewTree\"\n [ignoreRadio]=\"configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [disable]=\"\n disable() ||\n (configTemplateGroup.disableItemNotLastLevel && !!item()[configTemplateGroup.fieldGetItems]?.()?.length) ||\n (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) ||\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) ||\n false\n \"\n [label]=\"item().fieldLabel\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [active]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [classLabelInclude]=\"\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\n ? 'text-[#009cdb] libs-ui-font-h5r '\n : ' libs-ui-font-h5r '\n \"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getDataComponentOutletItem : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getComponentOutletItem : item() : fieldKey() : { valueIs0: 0 } | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"\n configTemplateGroup.getImage\n ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: (item().specific_loadImgError && configTemplateGroup.getLinkImageError ? configTemplateGroup.getLinkImageError : configTemplateGroup.getImage) : item() | async)\n : item()[configTemplateGroup.fieldGetAvatarItem || '']\n \"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n </div>\n </div>\n @if ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey)) {\n <i\n class=\"libs-ui-icon-check before:!text-[16px]\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n [class.libs-ui-icon-check]=\"configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\"></i>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length && !configTemplateGroup.isViewTree && !configTemplateGroup.isViewTreeJson) {\n <i\n class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n (click)=\"handlerToggleExpand($event, item)\"></i>\n }\n </div>\n @if (item().expand || configTemplateGroup.isViewTreeJson) {\n @if (item().level < item().maxLevelGroup && !item()[configTemplateGroup.fieldGetItems]?.()?.length && configTemplateGroup.isViewTree) {\n <div\n class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"\n item().level + 1\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : item().maxLevelGroup + 1\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n : true\n \"\n [class.!py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.!py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"item().classIncludeItemNoData || ''\">\n @if (!keySearch()) {\n <span>{{ 'i18n_no_data_yet' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length) {\n <libs_ui-components-list-templates_group-item\n [keySearch]=\"keySearch()\"\n [items]=\"item()[configTemplateGroup.fieldGetItems]()\"\n [parentItem]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keysChecked]=\"keysChecked()\"\n [disable]=\"(disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)) && !configTemplateGroup.isViewTreeJson\"\n [keysDisableItem]=\"keysDisableItem()\"\n [configTemplateGroup]=\"configTemplateGroup\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChangeView)=\"handlerChangeView($event)\"\n (outChange)=\"handlerChangeChecked($event.item)\" />\n }\n }\n </div>\n }\n }\n\n @if ((!items() || !items().length) && parentItem().level < parentItem().maxLevelGroup) {\n <div\n class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"\n parentItem().level + 1\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : parentItem().maxLevelGroup + 1\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n : true\n \"\n [style.paddingLeft.px]=\"parentItem().level + 1 | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: parentItem().maxLevelGroup + 1 : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : false\"\n [class.py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"parentItem().classIncludeItemNoData || ''\">\n @if (parentItem().iconEmptyDataInGroup) {\n <div class=\"pb-[16px]\">\n <ng-container *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\" />\n </div>\n }\n @if (!keySearch()) {\n <span>{{ parentItem().textDescriptionGroupWhenNoData ?? config()?.textNoData ?? 'i18n_no_result' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{position:relative}:host .libs-ui-list-group-item-line-vertical{position:absolute;width:1px;height:100%;background-color:#e6e7ea}.libs-ui-icon-check{--color: var(--libs-ui-color-default, #226ff5)}.libs-ui-icon-check:before{font-size:16px;color:var(--libs-ui-color-default, #226ff5)}[class*=libs-ui-icon-chevron]:before{color:#6a7383}.libs-ui-list-group-json_icon-item-parent{min-width:6px;min-height:6px;height:6px;width:6px;border-radius:50%;background-color:#226ff5}.libs-ui-list-group-json_icon-item-parent[disabled=true]{background-color:#6a7383!important}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsListGroupItemComponent, selector: "libs_ui-components-list-templates_group-item", inputs: ["items", "configTemplateGroup", "keySearch", "fieldKey", "keysChecked", "keysDisableItem", "parentItem", "disable", "disableLabel", "config", "keysStillOtherOptions"], outputs: ["outChangeView", "outChange", "outChangStageFlagMousePopover"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe, name: "LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorMarginLeftItemPipe, name: "LibsUiComponentsListGroupCalculatorMarginLeftItemPipe" }, { kind: "pipe", type: LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe, name: "LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }, { kind: "component", type: LibsUiComponentsCheckboxSingleComponent, selector: "libs_ui-components-checkbox-single", inputs: ["key", "checked", "label", "classLabelInclude", "ignoreShowPopoverLabel", "typeLabelPopover", "popover", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "classInclude", "clickExactly", "disable", "disableLabel", "ignoreCheckbox", "zIndexLabel", "stillOtherOptions", "error", "showBorderError", "description", "iconImageClass", "classIconInclude", "modeBorder", "dataComponentOutlet", "componentOutlet"], outputs: ["checkedChange", "linkImageChange", "outChange", "outEventPopover", "outClickLabel", "outChangStageFlagMousePopover"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "component", type: LibsUiComponentsRadioSingleComponent, selector: "libs_ui-components-radio-single", inputs: ["key", "active", "classInclude", "label", "labelInterpolateParams", "ignorePopoverLabel", "classLabelInclude", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "popover", "disable", "disableLabel", "clickExactly", "typeRadio", "ignoreRadio", "zIndexLabel", "classIncludeIcon", "dataComponentOutlet", "componentOutlet"], outputs: ["activeChange", "outClickLabel", "outChange", "outChangStageFlagMousePopover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
65
65
  }
66
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListGroupItemComponent, decorators: [{
67
67
  type: Component,
68
68
  args: [{ selector: 'libs_ui-components-list-templates_group-item', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
69
- NgComponentOutlet, AsyncPipe, TranslateModule,
69
+ NgComponentOutlet,
70
+ AsyncPipe,
71
+ TranslateModule,
70
72
  LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe,
71
73
  LibsUiComponentsListGroupCalculatorMarginLeftItemPipe,
72
74
  LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe,
@@ -74,7 +76,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
74
76
  LibsUiCheckSelectedByKeyPipe,
75
77
  LibsUiComponentsCheckboxSingleComponent,
76
78
  LibsUiPipesCallFunctionInTemplatePipe,
77
- LibsUiComponentsRadioSingleComponent
78
- ], template: "@if (configTemplateGroup(); as configTemplateGroup) {\n @if ((configTemplateGroup.isViewTree && !!items().length) || (parentItem().maxLevelGroup > 2 && parentItem().level > 1)) {\n <div class='libs-ui-list-group-item-line-vertical'\n [style.left.px]=\"parentItem().level | LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe:parentItem().maxLevelGroup:configTemplateGroup.isViewTree :configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\">\n </div>\n }\n @if (items() && items().length) {\n @for (item of items(); track item()[fieldKey()]) {\n <div>\n <div\n [style.marginLeft.px]=\"item().level | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\"\n [style.paddingLeft.px]=\"item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!!item()[configTemplateGroup.fieldGetItems]?.()?.length\"\n [style.paddingRight.px]=\"item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:item().maxLevelGroup:configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!!item()[configTemplateGroup.fieldGetItems]?.()?.length\"\n [class]=\"'libs-ui-bg-list-hover py-[6px] pr-[16px] flex items-center relative libs-ui-bg-list-hover-active ' + item()?.classInclude\"\n [class.libs-ui-bg-list-active]=\"configTemplateGroup.singleSelectItem && item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [class.libs-ui-disable]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.pointer-events-none]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.cursor-pointer]=\"!disable() && !(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) && !(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [class.libs-ui-bg-list-active]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.hasBackgroundColorWhenItemSelected && item().isCheckManual\"\n (click)=\"handlerChangeChecked(item(), item()[fieldKey()], disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup))\">\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTree) {\n <i class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n (click)=\"handlerToggleExpand($event,item)\">\n </i>\n }\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]()?.length) {\n <div [class]=\"'p-[5px]'\">\n <div [class]=\"'libs-ui-list-group-json_icon-item-parent'\"\n [attr.disabled]=\"disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\">\n </div>\n </div>\n }\n <div class=\"flex w-full relative\">\n <div #labelRef\n class=\"invisible\">.</div>\n <div class=\"flex items-center w-full \"\n [class.absolute]=\"!configTemplateGroup.ignoreFixHeightItem\"\n [style.height.px]=\"!configTemplateGroup.ignoreFixHeightItem ? labelRef.clientHeight : 'auto'\">\n @let constHtmlClassIncludeItem = (configTemplateGroup.classIncludeItem || '')+' w-full';\n @if (!configTemplateGroup.isViewRadio) {\n <libs_ui-components-checkbox-single [avatarConfig]=\"item().avatarConfig\"\n [class.ml-[8px]]=\"configTemplateGroup.isViewTree || (configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)\"\n [ignoreCheckbox]=\"configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.-w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || (configTemplateGroup.widthLabelSub24WhenNotTreeView && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey))) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [disable]=\"disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup && !configTemplateGroup.isViewTreeJson) || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\"\n [label]=\"item().fieldLabel\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [stillOtherOptions]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysStillOtherOptions():keysStillOtherOptions().length\"\n [classLabelInclude]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual ? 'libs-ui-color-default libs-ui-font-h5r' : 'libs-ui-font-h5r'\"\n [dataComponentOutlet]=\"(undefined | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getDataComponentOutletItem:item():fieldKey():{valueIsEmpty:{item:item()}}) | async\"\n [componentOutlet]=\"(0 | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getComponentOutletItem:item():fieldKey():{valueIs0:0}) | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getImage:item()) | async) : item()[configTemplateGroup.fieldGetAvatarItem || ''] | async\"\n [linkImageError]=\"configTemplateGroup.getLinkImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getLinkImageError:item()) | async) : ''\"\n [imgTypeIcon]=\"configTemplateGroup.imgTypeIcon\"\n [iconImageClass]=\"item().iconImageClass ? item().iconImageClass : undefined\"\n [classImageInclude]=\"configTemplateGroup.classImageInclude || ''\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEventPopover)=\"handlerEventPopover($event, item())\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n @if (configTemplateGroup.isViewRadio) {\n <libs_ui-components-radio-single [avatarConfig]=\"item().avatarConfig\"\n [class.!ml-[8px]]=\"configTemplateGroup.isViewTree\"\n [ignoreRadio]=\"configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [disable]=\"disable() || (configTemplateGroup.disableItemNotLastLevel && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)||(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) || false\"\n [label]=\"item().fieldLabel\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [active]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length\"\n [classLabelInclude]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual ? 'text-[#009cdb] libs-ui-font-h5r ': ' libs-ui-font-h5r '\"\n [dataComponentOutlet]=\"(undefined | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getDataComponentOutletItem:item():fieldKey():{valueIsEmpty:{item:item()}}) | async\"\n [componentOutlet]=\"(0 | LibsUiPipesCallFunctionInTemplatePipe:configTemplateGroup.getComponentOutletItem:item():fieldKey():{valueIs0:0}) | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:(item().specific_loadImgError && configTemplateGroup.getLinkImageError ? configTemplateGroup.getLinkImageError : configTemplateGroup.getImage):item()) | async) : item()[configTemplateGroup.fieldGetAvatarItem || '']\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n </div>\n </div>\n @if ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysChecked():keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey)) {\n <i class=\"libs-ui-icon-check before:!text-[16px]\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n [class.libs-ui-icon-check]=\"configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\">\n </i>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length && !configTemplateGroup.isViewTree && !configTemplateGroup.isViewTreeJson) {\n <i class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n (click)=\"handlerToggleExpand($event,item)\">\n </i>\n }\n </div>\n @if (item().expand || configTemplateGroup.isViewTreeJson) {\n @if (item().level < item().maxLevelGroup && !item()[configTemplateGroup.fieldGetItems]?.()?.length && configTemplateGroup.isViewTree) {\n <div class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"(item().level + 1) | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:(item().maxLevelGroup+1):configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem):true\"\n [class.!py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.!py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"item().classIncludeItemNoData || ''\">\n @if (!keySearch()) {\n <span>{{ 'i18n_no_data_yet' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length) {\n <libs_ui-components-list-templates_group-item [keySearch]=\"keySearch()\"\n [items]=\"item()[configTemplateGroup.fieldGetItems]()\"\n [parentItem]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keysChecked]=\"keysChecked()\"\n [disable]=\"(disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)) && !configTemplateGroup.isViewTreeJson\"\n [keysDisableItem]=\"keysDisableItem()\"\n [configTemplateGroup]=\"configTemplateGroup\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChangeView)=\"handlerChangeView($event)\"\n (outChange)=\"handlerChangeChecked($event.item)\" />\n }\n }\n </div>\n }\n }\n\n @if ((!items() || !items().length) && (parentItem().level < parentItem().maxLevelGroup)) {\n <div class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"(parentItem().level + 1) | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe:(parentItem().maxLevelGroup+1):configTemplateGroup.isViewTree:configTemplateGroup.isViewTreeJson:!(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem):true\"\n [style.paddingLeft.px]=\"(parentItem().level + 1) | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe:(parentItem().maxLevelGroup+1):configTemplateGroup.isViewTree: configTemplateGroup.isViewTreeJson:false\"\n [class.py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"parentItem().classIncludeItemNoData || ''\">\n @if (parentItem().iconEmptyDataInGroup) {\n <div class=\"pb-[16px]\">\n <ng-container\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\" />\n </div>\n }\n @if (!keySearch()) {\n <span>{{ ( parentItem().textDescriptionGroupWhenNoData ?? config()?.textNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{position:relative}:host .libs-ui-list-group-item-line-vertical{position:absolute;width:1px;height:100%;background-color:#e6e7ea}.libs-ui-icon-check{--color: var(--libs-ui-color-default, #226ff5)}.libs-ui-icon-check:before{font-size:16px;color:var(--libs-ui-color-default, #226ff5)}[class*=libs-ui-icon-chevron]:before{color:#6a7383}.libs-ui-list-group-json_icon-item-parent{min-width:6px;min-height:6px;height:6px;width:6px;border-radius:50%;background-color:#226ff5}.libs-ui-list-group-json_icon-item-parent[disabled=true]{background-color:#6a7383!important}\n"] }]
79
+ LibsUiComponentsRadioSingleComponent,
80
+ ], template: "@if (configTemplateGroup(); as configTemplateGroup) {\n @if ((configTemplateGroup.isViewTree && !!items().length) || (parentItem().maxLevelGroup > 2 && parentItem().level > 1)) {\n <div\n class=\"libs-ui-list-group-item-line-vertical\"\n [style.left.px]=\"\n parentItem().level\n | LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe\n : parentItem().maxLevelGroup\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n \"></div>\n }\n @if (items() && items().length) {\n @for (item of items(); track item()[fieldKey()]) {\n <div>\n <div\n [style.marginLeft.px]=\"\n item().level\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : item().maxLevelGroup\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n \"\n [style.paddingLeft.px]=\"\n item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: item().maxLevelGroup : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : !!item()[configTemplateGroup.fieldGetItems]?.()?.length\n \"\n [style.paddingRight.px]=\"\n item().level | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: item().maxLevelGroup : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : !!item()[configTemplateGroup.fieldGetItems]?.()?.length\n \"\n [class]=\"'libs-ui-bg-list-hover py-[6px] pr-[16px] flex items-center relative libs-ui-bg-list-hover-active ' + item()?.classInclude\"\n [class.libs-ui-bg-list-active]=\"configTemplateGroup.singleSelectItem && item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [class.libs-ui-disable]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.pointer-events-none]=\"configTemplateGroup.allowDisableLabel && (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.cursor-pointer]=\"!disable() && !(configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) && !(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)\"\n [class.libs-ui-bg-list-active]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.hasBackgroundColorWhenItemSelected && item().isCheckManual\"\n (click)=\"handlerChangeChecked(item(), item()[fieldKey()], disable() || (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup))\">\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTree) {\n <i\n class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n (click)=\"handlerToggleExpand($event, item)\"></i>\n }\n @if (item().level < item().maxLevelGroup && configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]()?.length) {\n <div [class]=\"'p-[5px]'\">\n <div\n [class]=\"'libs-ui-list-group-json_icon-item-parent'\"\n [attr.disabled]=\"disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) || false\"></div>\n </div>\n }\n <div class=\"flex w-full relative\">\n <div\n #labelRef\n class=\"invisible\"\n [class.hidden]=\"configTemplateGroup.ignoreFixHeightItem\">\n .\n </div>\n <div\n class=\"flex items-center w-full\"\n [class.absolute]=\"!configTemplateGroup.ignoreFixHeightItem\"\n [style.height.px]=\"!configTemplateGroup.ignoreFixHeightItem ? labelRef.clientHeight : 'auto'\">\n @let constHtmlClassIncludeItem = (configTemplateGroup.classIncludeItem || '') + ' w-full';\n @if (!configTemplateGroup.isViewRadio) {\n <libs_ui-components-checkbox-single\n [avatarConfig]=\"item().avatarConfig\"\n [class.ml-[8px]]=\"configTemplateGroup.isViewTree || (configTemplateGroup.isViewTreeJson && !!item()[configTemplateGroup.fieldGetItems]?.()?.length)\"\n [ignoreCheckbox]=\"configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.-w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"\n ((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) ||\n (configTemplateGroup.widthLabelSub24WhenNotTreeView &&\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) &&\n configTemplateGroup.singleSelectItem &&\n (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey))) &&\n !configTemplateGroup.ignoreIconExpandMarginRight\n \"\n [clickExactly]=\"false\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [disable]=\"\n disable() ||\n (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup && !configTemplateGroup.isViewTreeJson) ||\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) ||\n false\n \"\n [label]=\"item().fieldLabel\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [stillOtherOptions]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysStillOtherOptions() : keysStillOtherOptions().length\"\n [classLabelInclude]=\"\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\n ? 'libs-ui-color-default libs-ui-font-h5r'\n : 'libs-ui-font-h5r'\n \"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getDataComponentOutletItem : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getComponentOutletItem : item() : fieldKey() : { valueIs0: 0 } | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"configTemplateGroup.getImage ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getImage : item() | async) : (item()[configTemplateGroup.fieldGetAvatarItem || ''] | async)\"\n [linkImageError]=\"configTemplateGroup.getLinkImageError ? ('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getLinkImageError : item() | async) : ''\"\n [imgTypeIcon]=\"configTemplateGroup.imgTypeIcon\"\n [iconImageClass]=\"item().iconImageClass ? item().iconImageClass : undefined\"\n [classImageInclude]=\"configTemplateGroup.classImageInclude || ''\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEventPopover)=\"handlerEventPopover($event, item())\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n @if (configTemplateGroup.isViewRadio) {\n <libs_ui-components-radio-single\n [avatarConfig]=\"item().avatarConfig\"\n [class.!ml-[8px]]=\"configTemplateGroup.isViewTree\"\n [ignoreRadio]=\"configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem\"\n [class]=\"constHtmlClassIncludeItem\"\n [class.w-auto]=\"configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem\"\n [class.max-w-[calc(100%-12px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && configTemplateGroup.ignoreIconExpandMarginRight\"\n [class.max-w-[calc(100%-24px)]]=\"((configTemplateGroup.isViewTree && !configTemplateGroup.hasIconCheckSingleSelectItem) || configTemplateGroup.widthLabelSub24WhenNotTreeView) && !configTemplateGroup.ignoreIconExpandMarginRight\"\n [clickExactly]=\"false\"\n [disable]=\"\n disable() ||\n (configTemplateGroup.disableItemNotLastLevel && !!item()[configTemplateGroup.fieldGetItems]?.()?.length) ||\n (configTemplateGroup.singleSelectItem && item().level < item().maxLevelGroup) ||\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length) ||\n false\n \"\n [label]=\"item().fieldLabel\"\n [zIndexLabel]=\"configTemplateGroup.zIndexLabel ?? 1\"\n [active]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length\"\n [classLabelInclude]=\"\n (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\n ? 'text-[#009cdb] libs-ui-font-h5r '\n : ' libs-ui-font-h5r '\n \"\n [dataComponentOutlet]=\"undefined | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getDataComponentOutletItem : item() : fieldKey() : { valueIsEmpty: { item: item() } } | async\"\n [componentOutlet]=\"0 | LibsUiPipesCallFunctionInTemplatePipe: configTemplateGroup.getComponentOutletItem : item() : fieldKey() : { valueIs0: 0 } | async\"\n [popover]=\"item().dataPopover\"\n [linkImage]=\"\n configTemplateGroup.getImage\n ? ('avatar' | LibsUiPipesCallFunctionInTemplatePipe: (item().specific_loadImgError && configTemplateGroup.getLinkImageError ? configTemplateGroup.getLinkImageError : configTemplateGroup.getImage) : item() | async)\n : item()[configTemplateGroup.fieldGetAvatarItem || '']\n \"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChange)=\"handlerChangeChecked(item())\" />\n }\n </div>\n </div>\n @if ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysChecked() : keysChecked().length) && configTemplateGroup.singleSelectItem && (configTemplateGroup.hasIconCheckSingleSelectItem || item().isCheckedByDefaultKey)) {\n <i\n class=\"libs-ui-icon-check before:!text-[16px]\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n [class.libs-ui-icon-check]=\"configTemplateGroup.colorBlueWhenItemSelected && item().isCheckManual\"></i>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length && !configTemplateGroup.isViewTree && !configTemplateGroup.isViewTreeJson) {\n <i\n class=\"libs-ui-icon-chevron-right before:!text-[16px]\"\n [class.rotate-90]=\"item().expand\"\n [class.!ml-[8px]]=\"item().dataPopover\"\n (click)=\"handlerToggleExpand($event, item)\"></i>\n }\n </div>\n @if (item().expand || configTemplateGroup.isViewTreeJson) {\n @if (item().level < item().maxLevelGroup && !item()[configTemplateGroup.fieldGetItems]?.()?.length && configTemplateGroup.isViewTree) {\n <div\n class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"\n item().level + 1\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : item().maxLevelGroup + 1\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n : true\n \"\n [class.!py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.!py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"item().classIncludeItemNoData || ''\">\n @if (!keySearch()) {\n <span>{{ 'i18n_no_data_yet' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n @if (!!item()[configTemplateGroup.fieldGetItems]?.()?.length) {\n <libs_ui-components-list-templates_group-item\n [keySearch]=\"keySearch()\"\n [items]=\"item()[configTemplateGroup.fieldGetItems]()\"\n [parentItem]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keysChecked]=\"keysChecked()\"\n [disable]=\"(disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe: keysDisableItem() : keysDisableItem()?.length)) && !configTemplateGroup.isViewTreeJson\"\n [keysDisableItem]=\"keysDisableItem()\"\n [configTemplateGroup]=\"configTemplateGroup\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outChangeView)=\"handlerChangeView($event)\"\n (outChange)=\"handlerChangeChecked($event.item)\" />\n }\n }\n </div>\n }\n }\n\n @if ((!items() || !items().length) && parentItem().level < parentItem().maxLevelGroup) {\n <div\n class=\"libs-ui-font-h5r text-[#9ca2ad] relative\"\n [style.marginLeft.px]=\"\n parentItem().level + 1\n | LibsUiComponentsListGroupCalculatorMarginLeftItemPipe\n : parentItem().maxLevelGroup + 1\n : configTemplateGroup.isViewTree\n : configTemplateGroup.isViewTreeJson\n : !(configTemplateGroup.ignoreCheckboxItem || configTemplateGroup.ignoreRadioItem || configTemplateGroup.singleSelectItem)\n : true\n \"\n [style.paddingLeft.px]=\"parentItem().level + 1 | LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe: parentItem().maxLevelGroup + 1 : configTemplateGroup.isViewTree : configTemplateGroup.isViewTreeJson : false\"\n [class.py-[8px]]=\"configTemplateGroup.fieldGetAvatarItem\"\n [class.py-[4px]]=\"!configTemplateGroup.fieldGetAvatarItem\">\n <div [class]=\"parentItem().classIncludeItemNoData || ''\">\n @if (parentItem().iconEmptyDataInGroup) {\n <div class=\"pb-[16px]\">\n <ng-container *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\" />\n </div>\n }\n @if (!keySearch()) {\n <span>{{ parentItem().textDescriptionGroupWhenNoData ?? config()?.textNoData ?? 'i18n_no_result' | translate }}</span>\n }\n @if (keySearch()) {\n <span>{{ 'i18n_no_result' | translate }}</span>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{position:relative}:host .libs-ui-list-group-item-line-vertical{position:absolute;width:1px;height:100%;background-color:#e6e7ea}.libs-ui-icon-check{--color: var(--libs-ui-color-default, #226ff5)}.libs-ui-icon-check:before{font-size:16px;color:var(--libs-ui-color-default, #226ff5)}[class*=libs-ui-icon-chevron]:before{color:#6a7383}.libs-ui-list-group-json_icon-item-parent{min-width:6px;min-height:6px;height:6px;width:6px;border-radius:50%;background-color:#226ff5}.libs-ui-list-group-json_icon-item-parent[disabled=true]{background-color:#6a7383!important}\n"] }]
79
81
  }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL2l0ZW0vaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMkRBQTJELEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMvSCxPQUFPLEVBQUUscURBQXFELEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsSCxPQUFPLEVBQUUsc0RBQXNELEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBc0JwSCxNQUFNLE9BQU8sc0NBQXNDO0lBQ2pELGdCQUFnQjtJQUNQLEtBQUssR0FBRyxLQUFLLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLEtBQUssRUFBd0IsQ0FBQztJQUNwRCxTQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztJQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUN2QyxlQUFlLEdBQUcsS0FBSyxFQUFjLENBQUM7SUFDdEMsVUFBVSxHQUFHLEtBQUssRUFBTyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sR0FBRyxLQUFLLEVBQW1CLENBQUM7SUFDbEMscUJBQXFCLEdBQUcsS0FBSyxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUUxRCxpQkFBaUI7SUFDUixhQUFhLEdBQUcsTUFBTSxFQUFXLENBQUM7SUFDbEMsU0FBUyxHQUFHLE1BQU0sRUFBTyxDQUFDO0lBQzFCLDZCQUE2QixHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRTlELGVBQWU7SUFDTCxtQkFBbUIsQ0FBQyxDQUFRLEVBQUUsSUFBeUI7UUFDL0QsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFFakMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsTUFBZTtRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRVMsb0JBQW9CLENBQUMsSUFBUyxFQUFFLFNBQWtCLEVBQUUsT0FBaUI7UUFDN0UsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvSSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDeEYsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLG1CQUFtQixDQUFDLEtBQXlCLEVBQUUsSUFBUztRQUNoRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUNsSCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLG1CQUFtQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxJQUFnQjtRQUNuRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7d0dBdERVLHNDQUFzQzs0RkFBdEMsc0NBQXNDLDZ1RENwQ25ELGt4ZEFpS0EsaW5CRDdIYSxzQ0FBc0Msb1ZBWC9DLGlCQUFpQiwrT0FBRSxTQUFTLDZDQUFFLGVBQWUsdUZBQzdDLHNEQUFzRCwwRkFDdEQscURBQXFELHlGQUNyRCwyREFBMkQsK0ZBQzNELCtCQUErQixtRUFDL0IsNEJBQTRCLHFFQUM1Qix1Q0FBdUMscXBCQUN2QyxxQ0FBcUMsOEVBQ3JDLG9DQUFvQzs7NEZBRzNCLHNDQUFzQztrQkFuQmxELFNBQVM7K0JBRUUsOENBQThDLGNBRzVDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZTt3QkFDN0Msc0RBQXNEO3dCQUN0RCxxREFBcUQ7d0JBQ3JELDJEQUEyRDt3QkFDM0QsK0JBQStCO3dCQUMvQiw0QkFBNEI7d0JBQzVCLHVDQUF1Qzt3QkFDdkMscUNBQXFDO3dCQUNyQyxvQ0FBb0M7cUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NvbXBvbmVudE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0NoZWNrYm94U2luZ2xlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1zaW5nbGUnO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcmFkaW8tc2luZ2xlJztcbmltcG9ydCB7IExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGUgfSBmcm9tICdAbGlicy11aS9pY29ucyc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2FsbC1mdW5jdGlvbi1pbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSwgSUxpc3RDb25maWdJdGVtR3JvdXAgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JMZWZ0TGluZVZlcnRpY2FsSXRlbVBpcGUgfSBmcm9tICcuLi9waXBlcy9jYWxjdWxhdG9yLWxlZnQtbGluZS12ZXJ0aWNhbC1pdGVtLnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JNYXJnaW5MZWZ0SXRlbVBpcGUgfSBmcm9tICcuLi9waXBlcy9jYWxjdWxhdG9yLW1hcmdpbi1sZWZ0LWl0ZW0ucGlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGUgfSBmcm9tICcuLi9waXBlcy9jYWxjdWxhdG9yLXBhZGRpbmctbGVmdC1pdGVtLnBpcGUnO1xuXG5cbkBDb21wb25lbnQoe1xuXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX2dyb3VwLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NvbXBvbmVudE91dGxldCwgQXN5bmNQaXBlLCBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JQYWRkaW5nTGVmdEl0ZW1QaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTWFyZ2luTGVmdEl0ZW1QaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTGVmdExpbmVWZXJ0aWNhbEl0ZW1QaXBlLFxuICAgIExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGUsXG4gICAgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzQ2hlY2tib3hTaW5nbGVDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzUmFkaW9TaW5nbGVDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwSXRlbUNvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4oW10pO1xuICByZWFkb25seSBjb25maWdUZW1wbGF0ZUdyb3VwID0gaW5wdXQ8SUxpc3RDb25maWdJdGVtR3JvdXA+KCk7XG4gIHJlYWRvbmx5IGtleVNlYXJjaCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dDxzdHJpbmc+KCdpZCcpO1xuICByZWFkb25seSBrZXlzQ2hlY2tlZCA9IGlucHV0PEFycmF5PHN0cmluZz4+KFtdKTtcbiAgcmVhZG9ubHkga2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgcGFyZW50SXRlbSA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGVMYWJlbCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PElMaXN0Q29uZmlnSXRlbT4oKTtcbiAgcmVhZG9ubHkga2V5c1N0aWxsT3RoZXJPcHRpb25zID0gaW5wdXQ8QXJyYXk8c3RyaW5nPj4oW10pO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dENoYW5nZVZpZXcgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJUb2dnbGVFeHBhbmQoZTogRXZlbnQsIGl0ZW06IFdyaXRhYmxlU2lnbmFsPGFueT4pIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaXRlbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBjdXJyZW50LmV4cGFuZCA9ICFjdXJyZW50LmV4cGFuZDtcblxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoaXRlbSgpLmV4cGFuZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZVZpZXcoZXhwYW5kOiBib29sZWFuKSB7XG4gICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoZXhwYW5kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlQ2hlY2tlZChpdGVtOiBhbnksIGZpZWxkX2tleT86IHN0cmluZywgZGlzYWJsZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoZGlzYWJsZSB8fCBmaWVsZF9rZXkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKSAmJiB0aGlzLmtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGggJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXkgPT4ga2V5ID09PSBmaWVsZF9rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLmxldmVsICE9PSBpdGVtLm1heExldmVsR3JvdXAgJiYgdGhpcy5jb25maWdUZW1wbGF0ZUdyb3VwKCk/Lmlnbm9yZUNoZWNrYm94SXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dENoYW5nZS5lbWl0KHsgaXRlbSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRXZlbnRQb3BvdmVyKGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQsIGl0ZW06IGFueSkge1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5kYXRhUG9wb3ZlciB8fCAhdGhpcy5jb25maWdUZW1wbGF0ZUdyb3VwKCkgfHwgIXRoaXMuY29uZmlnVGVtcGxhdGVHcm91cCgpPy5hY3Rpb25Qb3BvdmVyQnlJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVHcm91cCgpPy5hY3Rpb25Qb3BvdmVyQnlJdGVtPy4oaXRlbSwgZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKGZsYWc6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLmVtaXQoZmxhZyk7XG4gIH1cbn1cbiIsIkBpZiAoY29uZmlnVGVtcGxhdGVHcm91cCgpOyBhcyBjb25maWdUZW1wbGF0ZUdyb3VwKSB7XG4gIEBpZiAoKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhIWl0ZW1zKCkubGVuZ3RoKSB8fCAocGFyZW50SXRlbSgpLm1heExldmVsR3JvdXAgPiAyICYmIHBhcmVudEl0ZW0oKS5sZXZlbCA+IDEpKSB7XG4gICAgPGRpdiBjbGFzcz0nbGlicy11aS1saXN0LWdyb3VwLWl0ZW0tbGluZS12ZXJ0aWNhbCdcbiAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInBhcmVudEl0ZW0oKS5sZXZlbCB8IExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTGVmdExpbmVWZXJ0aWNhbEl0ZW1QaXBlOnBhcmVudEl0ZW0oKS5tYXhMZXZlbEdyb3VwOmNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSA6Y29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbjohKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlQ2hlY2tib3hJdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlUmFkaW9JdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSlcIj5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKGl0ZW1zKCkgJiYgaXRlbXMoKS5sZW5ndGgpIHtcbiAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0oKVtmaWVsZEtleSgpXSkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIml0ZW0oKS5sZXZlbCB8IExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTWFyZ2luTGVmdEl0ZW1QaXBlOml0ZW0oKS5tYXhMZXZlbEdyb3VwOmNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZTogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbjohKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlQ2hlY2tib3hJdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlUmFkaW9JdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJpdGVtKCkubGV2ZWwgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGU6aXRlbSgpLm1heExldmVsR3JvdXA6Y29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlOmNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb246ISFpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXT8uKCk/Lmxlbmd0aFwiXG4gICAgICAgICAgW3N0eWxlLnBhZGRpbmdSaWdodC5weF09XCJpdGVtKCkubGV2ZWwgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGU6aXRlbSgpLm1heExldmVsR3JvdXA6Y29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlOmNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb246ISFpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXT8uKCk/Lmxlbmd0aFwiXG4gICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLWJnLWxpc3QtaG92ZXIgcHktWzZweF0gcHItWzE2cHhdIGZsZXggaXRlbXMtY2VudGVyIHJlbGF0aXZlIGxpYnMtdWktYmctbGlzdC1ob3Zlci1hY3RpdmUgJyArIGl0ZW0oKT8uY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWFjdGl2ZV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzQ2hlY2tlZCgpOmtleXNDaGVja2VkKCkubGVuZ3RoXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuYWxsb3dEaXNhYmxlTGFiZWwgJiYgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0Rpc2FibGVJdGVtKCk6a2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aClcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuYWxsb3dEaXNhYmxlTGFiZWwgJiYgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0Rpc2FibGVJdGVtKCk6a2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aClcIlxuICAgICAgICAgIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhZGlzYWJsZSgpICYmICEoY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmIGl0ZW0oKS5sZXZlbCA8IGl0ZW0oKS5tYXhMZXZlbEdyb3VwKSAmJiAhKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0Rpc2FibGVJdGVtKCk6a2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aClcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtYWN0aXZlXT1cIihpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOmtleXNDaGVja2VkKCk6a2V5c0NoZWNrZWQoKS5sZW5ndGgpICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuaGFzQmFja2dyb3VuZENvbG9yV2hlbkl0ZW1TZWxlY3RlZCAmJiBpdGVtKCkuaXNDaGVja01hbnVhbFwiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJDaGFuZ2VDaGVja2VkKGl0ZW0oKSwgaXRlbSgpW2ZpZWxkS2V5KCldLCBkaXNhYmxlKCkgfHwgKGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSAmJiBpdGVtKCkubGV2ZWwgPCBpdGVtKCkubWF4TGV2ZWxHcm91cCkpXCI+XG4gICAgICAgICAgQGlmIChpdGVtKCkubGV2ZWwgPCBpdGVtKCkubWF4TGV2ZWxHcm91cCAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWUpIHtcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgYmVmb3JlOiF0ZXh0LVsxNnB4XVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5yb3RhdGUtOTBdPVwiaXRlbSgpLmV4cGFuZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyVG9nZ2xlRXhwYW5kKCRldmVudCxpdGVtKVwiPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5sZXZlbCA8IGl0ZW0oKS5tYXhMZXZlbEdyb3VwICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb24gJiYgISFpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXSgpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidwLVs1cHhdJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInbGlicy11aS1saXN0LWdyb3VwLWpzb25faWNvbi1pdGVtLXBhcmVudCdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGUoKSB8fCAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzRGlzYWJsZUl0ZW0oKTprZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoKSB8fCBmYWxzZVwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgI2xhYmVsUmVmXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW52aXNpYmxlXCI+LjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWJzb2x1dGVdPVwiIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlRml4SGVpZ2h0SXRlbVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlRml4SGVpZ2h0SXRlbSA/IGxhYmVsUmVmLmNsaWVudEhlaWdodCA6ICdhdXRvJ1wiPlxuICAgICAgICAgICAgICBAbGV0IGNvbnN0SHRtbENsYXNzSW5jbHVkZUl0ZW0gPSAoY29uZmlnVGVtcGxhdGVHcm91cC5jbGFzc0luY2x1ZGVJdGVtIHx8ICcnKSsnIHctZnVsbCc7XG4gICAgICAgICAgICAgIEBpZiAoIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3UmFkaW8pIHtcbiAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZSBbYXZhdGFyQ29uZmlnXT1cIml0ZW0oKS5hdmF0YXJDb25maWdcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1sLVs4cHhdXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSB8fCAoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbiAmJiAhIWl0ZW0oKVtjb25maWdUZW1wbGF0ZUdyb3VwLmZpZWxkR2V0SXRlbXNdPy4oKT8ubGVuZ3RoKVwiXG4gICAgICAgICAgICAgICAgICBbaWdub3JlQ2hlY2tib3hdPVwiY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVDaGVja2JveEl0ZW0gfHwgY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb25zdEh0bWxDbGFzc0luY2x1ZGVJdGVtXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4tdy1hdXRvXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXgtdy1bY2FsYygxMDAlLTEycHgpXV09XCIoKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtKSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLndpZHRoTGFiZWxTdWIyNFdoZW5Ob3RUcmVlVmlldykgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1heC13LVtjYWxjKDEwMCUtMjRweCldXT1cIigoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0pIHx8IChjb25maWdUZW1wbGF0ZUdyb3VwLndpZHRoTGFiZWxTdWIyNFdoZW5Ob3RUcmVlVmlldyAmJiAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzQ2hlY2tlZCgpOmtleXNDaGVja2VkKCkubGVuZ3RoKSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbSB8fCBpdGVtKCkuaXNDaGVja2VkQnlEZWZhdWx0S2V5KSkpICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUljb25FeHBhbmRNYXJnaW5SaWdodFwiXG4gICAgICAgICAgICAgICAgICBbY2xpY2tFeGFjdGx5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFt6SW5kZXhMYWJlbF09XCJjb25maWdUZW1wbGF0ZUdyb3VwLnpJbmRleExhYmVsID8/IDFcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiZGlzYWJsZSgpIHx8IChjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgaXRlbSgpLmxldmVsIDwgaXRlbSgpLm1heExldmVsR3JvdXAgJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb24pIHx8IChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOmtleXNEaXNhYmxlSXRlbSgpOmtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtKCkuZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOmtleXNDaGVja2VkKCk6a2V5c0NoZWNrZWQoKS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgW3N0aWxsT3RoZXJPcHRpb25zXT1cIml0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c1N0aWxsT3RoZXJPcHRpb25zKCk6a2V5c1N0aWxsT3RoZXJPcHRpb25zKCkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0xhYmVsSW5jbHVkZV09XCIoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzQ2hlY2tlZCgpOmtleXNDaGVja2VkKCkubGVuZ3RoKSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgY29uZmlnVGVtcGxhdGVHcm91cC5jb2xvckJsdWVXaGVuSXRlbVNlbGVjdGVkICYmIGl0ZW0oKS5pc0NoZWNrTWFudWFsID8gJ2xpYnMtdWktY29sb3ItZGVmYXVsdCBsaWJzLXVpLWZvbnQtaDVyJyA6ICdsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgICAgICAgICBbZGF0YUNvbXBvbmVudE91dGxldF09XCIodW5kZWZpbmVkIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTpjb25maWdUZW1wbGF0ZUdyb3VwLmdldERhdGFDb21wb25lbnRPdXRsZXRJdGVtOml0ZW0oKTpmaWVsZEtleSgpOnt2YWx1ZUlzRW1wdHk6e2l0ZW06aXRlbSgpfX0pIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudE91dGxldF09XCIoMCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6Y29uZmlnVGVtcGxhdGVHcm91cC5nZXRDb21wb25lbnRPdXRsZXRJdGVtOml0ZW0oKTpmaWVsZEtleSgpOnt2YWx1ZUlzMDowfSkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2xpbmtJbWFnZV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmdldEltYWdlID8gKCgnYXZhdGFyJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6Y29uZmlnVGVtcGxhdGVHcm91cC5nZXRJbWFnZTppdGVtKCkpIHwgYXN5bmMpIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtIHx8ICcnXSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rSW1hZ2VFcnJvcl09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmdldExpbmtJbWFnZUVycm9yID8gKCgnYXZhdGFyX2Vycm9yJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6Y29uZmlnVGVtcGxhdGVHcm91cC5nZXRMaW5rSW1hZ2VFcnJvcjppdGVtKCkpIHwgYXN5bmMpIDogJydcIlxuICAgICAgICAgICAgICAgICAgW2ltZ1R5cGVJY29uXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuaW1nVHlwZUljb25cIlxuICAgICAgICAgICAgICAgICAgW2ljb25JbWFnZUNsYXNzXT1cIml0ZW0oKS5pY29uSW1hZ2VDbGFzcyA/IGl0ZW0oKS5pY29uSW1hZ2VDbGFzcyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NJbWFnZUluY2x1ZGVdPVwiY29uZmlnVGVtcGxhdGVHcm91cC5jbGFzc0ltYWdlSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAob3V0RXZlbnRQb3BvdmVyKT1cImhhbmRsZXJFdmVudFBvcG92ZXIoJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlckNoYW5nZUNoZWNrZWQoaXRlbSgpKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1yYWRpby1zaW5nbGUgW2F2YXRhckNvbmZpZ109XCJpdGVtKCkuYXZhdGFyQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hbWwtWzhweF1dPVwiY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlXCJcbiAgICAgICAgICAgICAgICAgIFtpZ25vcmVSYWRpb109XCJjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZVJhZGlvSXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbnN0SHRtbENsYXNzSW5jbHVkZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctYXV0b109XCJjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWUgJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWF4LXctW2NhbGMoMTAwJS0xMnB4KV1dPVwiKChjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWUgJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbSkgfHwgY29uZmlnVGVtcGxhdGVHcm91cC53aWR0aExhYmVsU3ViMjRXaGVuTm90VHJlZVZpZXcpICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlSWNvbkV4cGFuZE1hcmdpblJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXgtdy1bY2FsYygxMDAlLTI0cHgpXV09XCIoKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtKSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLndpZHRoTGFiZWxTdWIyNFdoZW5Ob3RUcmVlVmlldykgJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlSWNvbkV4cGFuZE1hcmdpblJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGlja0V4YWN0bHldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiZGlzYWJsZSgpIHx8IChjb25maWdUZW1wbGF0ZUdyb3VwLmRpc2FibGVJdGVtTm90TGFzdExldmVsICYmICEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGgpfHwoY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmIGl0ZW0oKS5sZXZlbCA8IGl0ZW0oKS5tYXhMZXZlbEdyb3VwKSB8fCAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzRGlzYWJsZUl0ZW0oKTprZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW3pJbmRleExhYmVsXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuekluZGV4TGFiZWwgPz8gMVwiXG4gICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cIml0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0NoZWNrZWQoKTprZXlzQ2hlY2tlZCgpLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0NoZWNrZWQoKTprZXlzQ2hlY2tlZCgpLmxlbmd0aCkgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuY29sb3JCbHVlV2hlbkl0ZW1TZWxlY3RlZCAmJiBpdGVtKCkuaXNDaGVja01hbnVhbCA/ICd0ZXh0LVsjMDA5Y2RiXSBsaWJzLXVpLWZvbnQtaDVyICc6ICcgbGlicy11aS1mb250LWg1ciAnXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhQ29tcG9uZW50T3V0bGV0XT1cIih1bmRlZmluZWQgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOmNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0RGF0YUNvbXBvbmVudE91dGxldEl0ZW06aXRlbSgpOmZpZWxkS2V5KCk6e3ZhbHVlSXNFbXB0eTp7aXRlbTppdGVtKCl9fSkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbY29tcG9uZW50T3V0bGV0XT1cIigwIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTpjb25maWdUZW1wbGF0ZUdyb3VwLmdldENvbXBvbmVudE91dGxldEl0ZW06aXRlbSgpOmZpZWxkS2V5KCk6e3ZhbHVlSXMwOjB9KSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cIml0ZW0oKS5kYXRhUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbGlua0ltYWdlXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0SW1hZ2UgPyAoKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTooaXRlbSgpLnNwZWNpZmljX2xvYWRJbWdFcnJvciAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLmdldExpbmtJbWFnZUVycm9yID8gY29uZmlnVGVtcGxhdGVHcm91cC5nZXRMaW5rSW1hZ2VFcnJvciA6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0SW1hZ2UpOml0ZW0oKSkgfCBhc3luYykgOiBpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEF2YXRhckl0ZW0gfHwgJyddXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlcik9J2hhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2VDaGVja2VkKGl0ZW0oKSlcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOmtleXNDaGVja2VkKCk6a2V5c0NoZWNrZWQoKS5sZW5ndGgpICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSAmJiAoY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtIHx8IGl0ZW0oKS5pc0NoZWNrZWRCeURlZmF1bHRLZXkpKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGVjayBiZWZvcmU6IXRleHQtWzE2cHhdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFtbC1bOHB4XV09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MubGlicy11aS1pY29uLWNoZWNrXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuY29sb3JCbHVlV2hlbkl0ZW1TZWxlY3RlZCAmJiBpdGVtKCkuaXNDaGVja01hbnVhbFwiPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGggJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbikge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCBiZWZvcmU6IXRleHQtWzE2cHhdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnJvdGF0ZS05MF09XCJpdGVtKCkuZXhwYW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFtbC1bOHB4XV09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclRvZ2dsZUV4cGFuZCgkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGl0ZW0oKS5leHBhbmQgfHwgY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbikge1xuICAgICAgICAgIEBpZiAoaXRlbSgpLmxldmVsIDwgaXRlbSgpLm1heExldmVsR3JvdXAgJiYgIWl0ZW0oKVtjb25maWdUZW1wbGF0ZUdyb3VwLmZpZWxkR2V0SXRlbXNdPy4oKT8ubGVuZ3RoICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgdGV4dC1bIzljYTJhZF0gcmVsYXRpdmVcIlxuICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luTGVmdC5weF09XCIoaXRlbSgpLmxldmVsICsgMSkgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvck1hcmdpbkxlZnRJdGVtUGlwZTooaXRlbSgpLm1heExldmVsR3JvdXArMSk6Y29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlOiBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVKc29uOiEoY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVDaGVja2JveEl0ZW0gfHwgY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVSYWRpb0l0ZW0gfHwgY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtKTp0cnVlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFweS1bOHB4XV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmZpZWxkR2V0QXZhdGFySXRlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hcHktWzRweF1dPVwiIWNvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0luY2x1ZGVJdGVtTm9EYXRhIHx8ICcnXCI+XG4gICAgICAgICAgICAgICAgQGlmICgha2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpMThuX25vX2RhdGFfeWV0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChrZXlTZWFyY2goKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2kxOG5fbm9fcmVzdWx0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoISFpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXT8uKCk/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc19ncm91cC1pdGVtIFtrZXlTZWFyY2hdPVwia2V5U2VhcmNoKClcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10oKVwiXG4gICAgICAgICAgICAgIFtwYXJlbnRJdGVtXT1cIml0ZW0oKVwiXG4gICAgICAgICAgICAgIFtmaWVsZEtleV09XCJmaWVsZEtleSgpXCJcbiAgICAgICAgICAgICAgW2tleXNDaGVja2VkXT1cImtleXNDaGVja2VkKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZV09XCIoZGlzYWJsZSgpIHx8IChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOmtleXNEaXNhYmxlSXRlbSgpOmtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpKSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvblwiXG4gICAgICAgICAgICAgIFtrZXlzRGlzYWJsZUl0ZW1dPVwia2V5c0Rpc2FibGVJdGVtKClcIlxuICAgICAgICAgICAgICBbY29uZmlnVGVtcGxhdGVHcm91cF09XCJjb25maWdUZW1wbGF0ZUdyb3VwXCJcbiAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT0naGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KSdcbiAgICAgICAgICAgICAgKG91dENoYW5nZVZpZXcpPVwiaGFuZGxlckNoYW5nZVZpZXcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlckNoYW5nZUNoZWNrZWQoJGV2ZW50Lml0ZW0pXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuXG4gIEBpZiAoKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkgJiYgKHBhcmVudEl0ZW0oKS5sZXZlbCA8IHBhcmVudEl0ZW0oKS5tYXhMZXZlbEdyb3VwKSkge1xuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyIHRleHQtWyM5Y2EyYWRdIHJlbGF0aXZlXCJcbiAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIihwYXJlbnRJdGVtKCkubGV2ZWwgKyAxKSB8IExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTWFyZ2luTGVmdEl0ZW1QaXBlOihwYXJlbnRJdGVtKCkubWF4TGV2ZWxHcm91cCsxKTpjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWU6Y29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbjohKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlQ2hlY2tib3hJdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlUmFkaW9JdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSk6dHJ1ZVwiXG4gICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiKHBhcmVudEl0ZW0oKS5sZXZlbCArIDEpIHwgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JQYWRkaW5nTGVmdEl0ZW1QaXBlOihwYXJlbnRJdGVtKCkubWF4TGV2ZWxHcm91cCsxKTpjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWU6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb246ZmFsc2VcIlxuICAgICAgW2NsYXNzLnB5LVs4cHhdXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtXCJcbiAgICAgIFtjbGFzcy5weS1bNHB4XV09XCIhY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEF2YXRhckl0ZW1cIj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cInBhcmVudEl0ZW0oKS5jbGFzc0luY2x1ZGVJdGVtTm9EYXRhIHx8ICcnXCI+XG4gICAgICAgIEBpZiAocGFyZW50SXRlbSgpLmljb25FbXB0eURhdGFJbkdyb3VwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBiLVsxNnB4XVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCIoa2V5U2VhcmNoKCkgID8gJ25vLXJlc3VsdCcgOiAnbm8tZGF0YScpIHwgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB8IGFzeW5jXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSkge1xuICAgICAgICAgIDxzcGFuPnt7ICggcGFyZW50SXRlbSgpLnRleHREZXNjcmlwdGlvbkdyb3VwV2hlbk5vRGF0YSA/PyBjb25maWcoKT8udGV4dE5vRGF0YSA/PyAnaTE4bl9ub19yZXN1bHQnKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGtleVNlYXJjaCgpKSB7XG4gICAgICAgICAgPHNwYW4+e3sgJ2kxOG5fbm9fcmVzdWx0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL2l0ZW0vaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMkRBQTJELEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMvSCxPQUFPLEVBQUUscURBQXFELEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsSCxPQUFPLEVBQUUsc0RBQXNELEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBc0JwSCxNQUFNLE9BQU8sc0NBQXNDO0lBQ2pELGdCQUFnQjtJQUNQLEtBQUssR0FBRyxLQUFLLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLEtBQUssRUFBd0IsQ0FBQztJQUNwRCxTQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztJQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUN2QyxlQUFlLEdBQUcsS0FBSyxFQUFjLENBQUM7SUFDdEMsVUFBVSxHQUFHLEtBQUssRUFBTyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sR0FBRyxLQUFLLEVBQW1CLENBQUM7SUFDbEMscUJBQXFCLEdBQUcsS0FBSyxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUUxRCxpQkFBaUI7SUFDUixhQUFhLEdBQUcsTUFBTSxFQUFXLENBQUM7SUFDbEMsU0FBUyxHQUFHLE1BQU0sRUFBTyxDQUFDO0lBQzFCLDZCQUE2QixHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRTlELGVBQWU7SUFDTCxtQkFBbUIsQ0FBQyxDQUFRLEVBQUUsSUFBeUI7UUFDL0QsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0QixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUVqQyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxNQUFlO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxJQUFTLEVBQUUsU0FBa0IsRUFBRSxPQUFpQjtRQUM3RSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25KLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUN4RixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBeUIsRUFBRSxJQUFTO1FBQ2hFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO1lBQ2xILE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLDBCQUEwQixDQUFDLElBQWdCO1FBQ25ELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt3R0F0RFUsc0NBQXNDOzRGQUF0QyxzQ0FBc0MsNnVEQ3BDbkQsdXVnQkEwT0EsaW5CRHRNYSxzQ0FBc0Msb1ZBYi9DLGlCQUFpQiwrT0FDakIsU0FBUyw2Q0FDVCxlQUFlLHVGQUNmLHNEQUFzRCwwRkFDdEQscURBQXFELHlGQUNyRCwyREFBMkQsK0ZBQzNELCtCQUErQixtRUFDL0IsNEJBQTRCLHFFQUM1Qix1Q0FBdUMscXBCQUN2QyxxQ0FBcUMsOEVBQ3JDLG9DQUFvQzs7NEZBRzNCLHNDQUFzQztrQkFwQmxELFNBQVM7K0JBQ0UsOENBQThDLGNBRzVDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixzREFBc0Q7d0JBQ3RELHFEQUFxRDt3QkFDckQsMkRBQTJEO3dCQUMzRCwrQkFBK0I7d0JBQy9CLDRCQUE0Qjt3QkFDNUIsdUNBQXVDO3dCQUN2QyxxQ0FBcUM7d0JBQ3JDLG9DQUFvQztxQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQ2hlY2tib3hTaW5nbGVDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZSc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBUWVBFX1BPUE9WRVJfRVZFTlQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1JhZGlvU2luZ2xlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1yYWRpby1zaW5nbGUnO1xuaW1wb3J0IHsgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB9IGZyb20gJ0BsaWJzLXVpL2ljb25zJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtLCBJTGlzdENvbmZpZ0l0ZW1Hcm91cCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9jaGVjay1zZWxlY3RlZC1ieS1rZXkucGlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvckxlZnRMaW5lVmVydGljYWxJdGVtUGlwZSB9IGZyb20gJy4uL3BpcGVzL2NhbGN1bGF0b3ItbGVmdC1saW5lLXZlcnRpY2FsLWl0ZW0ucGlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvck1hcmdpbkxlZnRJdGVtUGlwZSB9IGZyb20gJy4uL3BpcGVzL2NhbGN1bGF0b3ItbWFyZ2luLWxlZnQtaXRlbS5waXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yUGFkZGluZ0xlZnRJdGVtUGlwZSB9IGZyb20gJy4uL3BpcGVzL2NhbGN1bGF0b3ItcGFkZGluZy1sZWZ0LWl0ZW0ucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc19ncm91cC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JNYXJnaW5MZWZ0SXRlbVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JMZWZ0TGluZVZlcnRpY2FsSXRlbVBpcGUsXG4gICAgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSxcbiAgICBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNDaGVja2JveFNpbmdsZUNvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNSYWRpb1NpbmdsZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cEl0ZW1Db21wb25lbnQge1xuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQ8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+KFtdKTtcbiAgcmVhZG9ubHkgY29uZmlnVGVtcGxhdGVHcm91cCA9IGlucHV0PElMaXN0Q29uZmlnSXRlbUdyb3VwPigpO1xuICByZWFkb25seSBrZXlTZWFyY2ggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZpZWxkS2V5ID0gaW5wdXQ8c3RyaW5nPignaWQnKTtcbiAgcmVhZG9ubHkga2V5c0NoZWNrZWQgPSBpbnB1dDxBcnJheTxzdHJpbmc+PihbXSk7XG4gIHJlYWRvbmx5IGtleXNEaXNhYmxlSXRlbSA9IGlucHV0PEFycmF5PGFueT4+KCk7XG4gIHJlYWRvbmx5IHBhcmVudEl0ZW0gPSBpbnB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleXNTdGlsbE90aGVyT3B0aW9ucyA9IGlucHV0PEFycmF5PHN0cmluZz4+KFtdKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRDaGFuZ2VWaWV3ID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyVG9nZ2xlRXhwYW5kKGU6IEV2ZW50LCBpdGVtOiBXcml0YWJsZVNpZ25hbDxhbnk+KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGl0ZW0udXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICBjdXJyZW50LmV4cGFuZCA9ICFjdXJyZW50LmV4cGFuZDtcblxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoaXRlbSgpLmV4cGFuZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZVZpZXcoZXhwYW5kOiBib29sZWFuKSB7XG4gICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoZXhwYW5kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlQ2hlY2tlZChpdGVtOiBhbnksIGZpZWxkX2tleT86IHN0cmluZywgZGlzYWJsZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoZGlzYWJsZSB8fCAoZmllbGRfa2V5ICYmIHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoICYmIHRoaXMua2V5c0Rpc2FibGVJdGVtKCk/LnNvbWUoKGtleSkgPT4ga2V5ID09PSBmaWVsZF9rZXkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXRlbS5sZXZlbCAhPT0gaXRlbS5tYXhMZXZlbEdyb3VwICYmIHRoaXMuY29uZmlnVGVtcGxhdGVHcm91cCgpPy5pZ25vcmVDaGVja2JveEl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRDaGFuZ2UuZW1pdCh7IGl0ZW0gfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckV2ZW50UG9wb3ZlcihldmVudDogVFlQRV9QT1BPVkVSX0VWRU5ULCBpdGVtOiBhbnkpIHtcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uZGF0YVBvcG92ZXIgfHwgIXRoaXMuY29uZmlnVGVtcGxhdGVHcm91cCgpIHx8ICF0aGlzLmNvbmZpZ1RlbXBsYXRlR3JvdXAoKT8uYWN0aW9uUG9wb3ZlckJ5SXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ1RlbXBsYXRlR3JvdXAoKT8uYWN0aW9uUG9wb3ZlckJ5SXRlbT8uKGl0ZW0sIGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlR3JvdXAoKTsgYXMgY29uZmlnVGVtcGxhdGVHcm91cCkge1xuICBAaWYgKChjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWUgJiYgISFpdGVtcygpLmxlbmd0aCkgfHwgKHBhcmVudEl0ZW0oKS5tYXhMZXZlbEdyb3VwID4gMiAmJiBwYXJlbnRJdGVtKCkubGV2ZWwgPiAxKSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlicy11aS1saXN0LWdyb3VwLWl0ZW0tbGluZS12ZXJ0aWNhbFwiXG4gICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgcGFyZW50SXRlbSgpLmxldmVsXG4gICAgICAgICAgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvckxlZnRMaW5lVmVydGljYWxJdGVtUGlwZVxuICAgICAgICAgICAgOiBwYXJlbnRJdGVtKCkubWF4TGV2ZWxHcm91cFxuICAgICAgICAgICAgOiBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVcbiAgICAgICAgICAgIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvblxuICAgICAgICAgICAgOiAhKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlQ2hlY2tib3hJdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlUmFkaW9JdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSlcbiAgICAgIFwiPjwvZGl2PlxuICB9XG4gIEBpZiAoaXRlbXMoKSAmJiBpdGVtcygpLmxlbmd0aCkge1xuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbSgpW2ZpZWxkS2V5KCldKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1hcmdpbkxlZnQucHhdPVwiXG4gICAgICAgICAgICBpdGVtKCkubGV2ZWxcbiAgICAgICAgICAgICAgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvck1hcmdpbkxlZnRJdGVtUGlwZVxuICAgICAgICAgICAgICAgIDogaXRlbSgpLm1heExldmVsR3JvdXBcbiAgICAgICAgICAgICAgICA6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZVxuICAgICAgICAgICAgICAgIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvblxuICAgICAgICAgICAgICAgIDogIShjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUNoZWNrYm94SXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZVJhZGlvSXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0pXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiXG4gICAgICAgICAgICBpdGVtKCkubGV2ZWwgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGU6IGl0ZW0oKS5tYXhMZXZlbEdyb3VwIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbiA6ICEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nUmlnaHQucHhdPVwiXG4gICAgICAgICAgICBpdGVtKCkubGV2ZWwgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvclBhZGRpbmdMZWZ0SXRlbVBpcGU6IGl0ZW0oKS5tYXhMZXZlbEdyb3VwIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbiA6ICEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1iZy1saXN0LWhvdmVyIHB5LVs2cHhdIHByLVsxNnB4XSBmbGV4IGl0ZW1zLWNlbnRlciByZWxhdGl2ZSBsaWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlICcgKyBpdGVtKCk/LmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktYmctbGlzdC1hY3RpdmVdPVwiY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmIGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IGtleXNDaGVja2VkKCkgOiBrZXlzQ2hlY2tlZCgpLmxlbmd0aFwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmFsbG93RGlzYWJsZUxhYmVsICYmIChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzRGlzYWJsZUl0ZW0oKSA6IGtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmFsbG93RGlzYWJsZUxhYmVsICYmIChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzRGlzYWJsZUl0ZW0oKSA6IGtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpXCJcbiAgICAgICAgICBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIWRpc2FibGUoKSAmJiAhKGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSAmJiBpdGVtKCkubGV2ZWwgPCBpdGVtKCkubWF4TGV2ZWxHcm91cCkgJiYgIShpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzRGlzYWJsZUl0ZW0oKSA6IGtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWFjdGl2ZV09XCIoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZToga2V5c0NoZWNrZWQoKSA6IGtleXNDaGVja2VkKCkubGVuZ3RoKSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0JhY2tncm91bmRDb2xvcldoZW5JdGVtU2VsZWN0ZWQgJiYgaXRlbSgpLmlzQ2hlY2tNYW51YWxcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVyQ2hhbmdlQ2hlY2tlZChpdGVtKCksIGl0ZW0oKVtmaWVsZEtleSgpXSwgZGlzYWJsZSgpIHx8IChjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgaXRlbSgpLmxldmVsIDwgaXRlbSgpLm1heExldmVsR3JvdXApKVwiPlxuICAgICAgICAgIEBpZiAoaXRlbSgpLmxldmVsIDwgaXRlbSgpLm1heExldmVsR3JvdXAgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlKSB7XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGV2cm9uLXJpZ2h0IGJlZm9yZTohdGV4dC1bMTZweF1cIlxuICAgICAgICAgICAgICBbY2xhc3Mucm90YXRlLTkwXT1cIml0ZW0oKS5leHBhbmRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclRvZ2dsZUV4cGFuZCgkZXZlbnQsIGl0ZW0pXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5sZXZlbCA8IGl0ZW0oKS5tYXhMZXZlbEdyb3VwICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb24gJiYgISFpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXSgpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidwLVs1cHhdJ1wiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLWxpc3QtZ3JvdXAtanNvbl9pY29uLWl0ZW0tcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZSgpIHx8IChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzRGlzYWJsZUl0ZW0oKSA6IGtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpIHx8IGZhbHNlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICNsYWJlbFJlZlxuICAgICAgICAgICAgICBjbGFzcz1cImludmlzaWJsZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVGaXhIZWlnaHRJdGVtXCI+XG4gICAgICAgICAgICAgIC5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHctZnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hYnNvbHV0ZV09XCIhY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVGaXhIZWlnaHRJdGVtXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIhY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVGaXhIZWlnaHRJdGVtID8gbGFiZWxSZWYuY2xpZW50SGVpZ2h0IDogJ2F1dG8nXCI+XG4gICAgICAgICAgICAgIEBsZXQgY29uc3RIdG1sQ2xhc3NJbmNsdWRlSXRlbSA9IChjb25maWdUZW1wbGF0ZUdyb3VwLmNsYXNzSW5jbHVkZUl0ZW0gfHwgJycpICsgJyB3LWZ1bGwnO1xuICAgICAgICAgICAgICBAaWYgKCFjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1jaGVja2JveC1zaW5nbGVcbiAgICAgICAgICAgICAgICAgIFthdmF0YXJDb25maWddPVwiaXRlbSgpLmF2YXRhckNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWwtWzhweF1dPVwiY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlIHx8IChjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVKc29uICYmICEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGgpXCJcbiAgICAgICAgICAgICAgICAgIFtpZ25vcmVDaGVja2JveF09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUNoZWNrYm94SXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbnN0SHRtbENsYXNzSW5jbHVkZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLi13LWF1dG9dPVwiY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1heC13LVtjYWxjKDEwMCUtMTJweCldXT1cIigoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0pIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAud2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3KSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUljb25FeHBhbmRNYXJnaW5SaWdodFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWF4LXctW2NhbGMoMTAwJS0yNHB4KV1dPVwiXG4gICAgICAgICAgICAgICAgICAgICgoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ1RlbXBsYXRlR3JvdXAud2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZToga2V5c0NoZWNrZWQoKSA6IGtleXNDaGVja2VkKCkubGVuZ3RoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtIHx8IGl0ZW0oKS5pc0NoZWNrZWRCeURlZmF1bHRLZXkpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlSWNvbkV4cGFuZE1hcmdpblJpZ2h0XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NsaWNrRXhhY3RseV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbekluZGV4TGFiZWxdPVwiY29uZmlnVGVtcGxhdGVHcm91cC56SW5kZXhMYWJlbCA/PyAxXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cIlxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSAmJiBpdGVtKCkubGV2ZWwgPCBpdGVtKCkubWF4TGV2ZWxHcm91cCAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbikgfHxcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IGtleXNEaXNhYmxlSXRlbSgpIDoga2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZToga2V5c0NoZWNrZWQoKSA6IGtleXNDaGVja2VkKCkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIFtzdGlsbE90aGVyT3B0aW9uc109XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzU3RpbGxPdGhlck9wdGlvbnMoKSA6IGtleXNTdGlsbE90aGVyT3B0aW9ucygpLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzQ2hlY2tlZCgpIDoga2V5c0NoZWNrZWQoKS5sZW5ndGgpICYmIGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLmNvbG9yQmx1ZVdoZW5JdGVtU2VsZWN0ZWQgJiYgaXRlbSgpLmlzQ2hlY2tNYW51YWxcbiAgICAgICAgICAgICAgICAgICAgICA/ICdsaWJzLXVpLWNvbG9yLWRlZmF1bHQgbGlicy11aS1mb250LWg1cidcbiAgICAgICAgICAgICAgICAgICAgICA6ICdsaWJzLXVpLWZvbnQtaDVyJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhQ29tcG9uZW50T3V0bGV0XT1cInVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0RGF0YUNvbXBvbmVudE91dGxldEl0ZW0gOiBpdGVtKCkgOiBmaWVsZEtleSgpIDogeyB2YWx1ZUlzRW1wdHk6IHsgaXRlbTogaXRlbSgpIH0gfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRPdXRsZXRdPVwiMCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0Q29tcG9uZW50T3V0bGV0SXRlbSA6IGl0ZW0oKSA6IGZpZWxkS2V5KCkgOiB7IHZhbHVlSXMwOiAwIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2xpbmtJbWFnZV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmdldEltYWdlID8gKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29uZmlnVGVtcGxhdGVHcm91cC5nZXRJbWFnZSA6IGl0ZW0oKSB8IGFzeW5jKSA6IChpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEF2YXRhckl0ZW0gfHwgJyddIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgIFtsaW5rSW1hZ2VFcnJvcl09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmdldExpbmtJbWFnZUVycm9yID8gKCdhdmF0YXJfZXJyb3InIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogY29uZmlnVGVtcGxhdGVHcm91cC5nZXRMaW5rSW1hZ2VFcnJvciA6IGl0ZW0oKSB8IGFzeW5jKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgIFtpbWdUeXBlSWNvbl09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmltZ1R5cGVJY29uXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uSW1hZ2VDbGFzc109XCJpdGVtKCkuaWNvbkltYWdlQ2xhc3MgPyBpdGVtKCkuaWNvbkltYWdlQ2xhc3MgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzSW1hZ2VJbmNsdWRlXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuY2xhc3NJbWFnZUluY2x1ZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKG91dEV2ZW50UG9wb3Zlcik9XCJoYW5kbGVyRXZlbnRQb3BvdmVyKCRldmVudCwgaXRlbSgpKVwiXG4gICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2VDaGVja2VkKGl0ZW0oKSlcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdSYWRpbykge1xuICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcmFkaW8tc2luZ2xlXG4gICAgICAgICAgICAgICAgICBbYXZhdGFyQ29uZmlnXT1cIml0ZW0oKS5hdmF0YXJDb25maWdcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLiFtbC1bOHB4XV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVcIlxuICAgICAgICAgICAgICAgICAgW2lnbm9yZVJhZGlvXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuaWdub3JlUmFkaW9JdGVtIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAuc2luZ2xlU2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29uc3RIdG1sQ2xhc3NJbmNsdWRlSXRlbVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Mudy1hdXRvXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXgtdy1bY2FsYygxMDAlLTEycHgpXV09XCIoKGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5oYXNJY29uQ2hlY2tTaW5nbGVTZWxlY3RJdGVtKSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLndpZHRoTGFiZWxTdWIyNFdoZW5Ob3RUcmVlVmlldykgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1heC13LVtjYWxjKDEwMCUtMjRweCldXT1cIigoY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0pIHx8IGNvbmZpZ1RlbXBsYXRlR3JvdXAud2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3KSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5pZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2NsaWNrRXhhY3RseV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgIChjb25maWdUZW1wbGF0ZUdyb3VwLmRpc2FibGVJdGVtTm90TGFzdExldmVsICYmICEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgICAgIChjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgaXRlbSgpLmxldmVsIDwgaXRlbSgpLm1heExldmVsR3JvdXApIHx8XG4gICAgICAgICAgICAgICAgICAgIChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzRGlzYWJsZUl0ZW0oKSA6IGtleXNEaXNhYmxlSXRlbSgpPy5sZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0oKS5maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFt6SW5kZXhMYWJlbF09XCJjb25maWdUZW1wbGF0ZUdyb3VwLnpJbmRleExhYmVsID8/IDFcIlxuICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOiBrZXlzQ2hlY2tlZCgpIDoga2V5c0NoZWNrZWQoKS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxJbmNsdWRlXT1cIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZToga2V5c0NoZWNrZWQoKSA6IGtleXNDaGVja2VkKCkubGVuZ3RoKSAmJiBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0gJiYgY29uZmlnVGVtcGxhdGVHcm91cC5jb2xvckJsdWVXaGVuSXRlbVNlbGVjdGVkICYmIGl0ZW0oKS5pc0NoZWNrTWFudWFsXG4gICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1bIzAwOWNkYl0gbGlicy11aS1mb250LWg1ciAnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnIGxpYnMtdWktZm9udC1oNXIgJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhQ29tcG9uZW50T3V0bGV0XT1cInVuZGVmaW5lZCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0RGF0YUNvbXBvbmVudE91dGxldEl0ZW0gOiBpdGVtKCkgOiBmaWVsZEtleSgpIDogeyB2YWx1ZUlzRW1wdHk6IHsgaXRlbTogaXRlbSgpIH0gfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRPdXRsZXRdPVwiMCB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0Q29tcG9uZW50T3V0bGV0SXRlbSA6IGl0ZW0oKSA6IGZpZWxkS2V5KCkgOiB7IHZhbHVlSXMwOiAwIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW2xpbmtJbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnVGVtcGxhdGVHcm91cC5nZXRJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgID8gKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTogKGl0ZW0oKS5zcGVjaWZpY19sb2FkSW1nRXJyb3IgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5nZXRMaW5rSW1hZ2VFcnJvciA/IGNvbmZpZ1RlbXBsYXRlR3JvdXAuZ2V0TGlua0ltYWdlRXJyb3IgOiBjb25maWdUZW1wbGF0ZUdyb3VwLmdldEltYWdlKSA6IGl0ZW0oKSB8IGFzeW5jKVxuICAgICAgICAgICAgICAgICAgICAgIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtIHx8ICcnXVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlcik9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlckNoYW5nZUNoZWNrZWQoaXRlbSgpKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAoKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IGtleXNDaGVja2VkKCkgOiBrZXlzQ2hlY2tlZCgpLmxlbmd0aCkgJiYgY29uZmlnVGVtcGxhdGVHcm91cC5zaW5nbGVTZWxlY3RJdGVtICYmIChjb25maWdUZW1wbGF0ZUdyb3VwLmhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0gfHwgaXRlbSgpLmlzQ2hlY2tlZEJ5RGVmYXVsdEtleSkpIHtcbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1pY29uLWNoZWNrIGJlZm9yZTohdGV4dC1bMTZweF1cIlxuICAgICAgICAgICAgICBbY2xhc3MuIW1sLVs4cHhdXT1cIml0ZW0oKS5kYXRhUG9wb3ZlclwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tdPVwiY29uZmlnVGVtcGxhdGVHcm91cC5jb2xvckJsdWVXaGVuSXRlbVNlbGVjdGVkICYmIGl0ZW0oKS5pc0NoZWNrTWFudWFsXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCEhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGggJiYgIWNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZSAmJiAhY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbikge1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCBiZWZvcmU6IXRleHQtWzE2cHhdXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnJvdGF0ZS05MF09XCJpdGVtKCkuZXhwYW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFtbC1bOHB4XV09XCJpdGVtKCkuZGF0YVBvcG92ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclRvZ2dsZUV4cGFuZCgkZXZlbnQsIGl0ZW0pXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoaXRlbSgpLmV4cGFuZCB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVKc29uKSB7XG4gICAgICAgICAgQGlmIChpdGVtKCkubGV2ZWwgPCBpdGVtKCkubWF4TGV2ZWxHcm91cCAmJiAhaXRlbSgpW2NvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRJdGVtc10/LigpPy5sZW5ndGggJiYgY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1mb250LWg1ciB0ZXh0LVsjOWNhMmFkXSByZWxhdGl2ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIlxuICAgICAgICAgICAgICAgIGl0ZW0oKS5sZXZlbCArIDFcbiAgICAgICAgICAgICAgICAgIHwgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JNYXJnaW5MZWZ0SXRlbVBpcGVcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtKCkubWF4TGV2ZWxHcm91cCArIDFcbiAgICAgICAgICAgICAgICAgICAgOiBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVcbiAgICAgICAgICAgICAgICAgICAgOiBjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVKc29uXG4gICAgICAgICAgICAgICAgICAgIDogIShjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUNoZWNrYm94SXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZVJhZGlvSXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIDogdHJ1ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuIXB5LVs4cHhdXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFweS1bNHB4XV09XCIhY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEF2YXRhckl0ZW1cIj5cbiAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSW5jbHVkZUl0ZW1Ob0RhdGEgfHwgJydcIj5cbiAgICAgICAgICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2kxOG5fbm9fZGF0YV95ZXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGtleVNlYXJjaCgpKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnaTE4bl9ub19yZXN1bHQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghIWl0ZW0oKVtjb25maWdUZW1wbGF0ZUdyb3VwLmZpZWxkR2V0SXRlbXNdPy4oKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX2dyb3VwLWl0ZW1cbiAgICAgICAgICAgICAgW2tleVNlYXJjaF09XCJrZXlTZWFyY2goKVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtKClbY29uZmlnVGVtcGxhdGVHcm91cC5maWVsZEdldEl0ZW1zXSgpXCJcbiAgICAgICAgICAgICAgW3BhcmVudEl0ZW1dPVwiaXRlbSgpXCJcbiAgICAgICAgICAgICAgW2ZpZWxkS2V5XT1cImZpZWxkS2V5KClcIlxuICAgICAgICAgICAgICBba2V5c0NoZWNrZWRdPVwia2V5c0NoZWNrZWQoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlXT1cIihkaXNhYmxlKCkgfHwgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6IGtleXNEaXNhYmxlSXRlbSgpIDoga2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aCkpICYmICFjb25maWdUZW1wbGF0ZUdyb3VwLmlzVmlld1RyZWVKc29uXCJcbiAgICAgICAgICAgICAgW2tleXNEaXNhYmxlSXRlbV09XCJrZXlzRGlzYWJsZUl0ZW0oKVwiXG4gICAgICAgICAgICAgIFtjb25maWdUZW1wbGF0ZUdyb3VwXT1cImNvbmZpZ1RlbXBsYXRlR3JvdXBcIlxuICAgICAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvdXRDaGFuZ2VWaWV3KT1cImhhbmRsZXJDaGFuZ2VWaWV3KCRldmVudClcIlxuICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2VDaGVja2VkKCRldmVudC5pdGVtKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIH1cblxuICBAaWYgKCghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpICYmIHBhcmVudEl0ZW0oKS5sZXZlbCA8IHBhcmVudEl0ZW0oKS5tYXhMZXZlbEdyb3VwKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyIHRleHQtWyM5Y2EyYWRdIHJlbGF0aXZlXCJcbiAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIlxuICAgICAgICBwYXJlbnRJdGVtKCkubGV2ZWwgKyAxXG4gICAgICAgICAgfCBMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvck1hcmdpbkxlZnRJdGVtUGlwZVxuICAgICAgICAgICAgOiBwYXJlbnRJdGVtKCkubWF4TGV2ZWxHcm91cCArIDFcbiAgICAgICAgICAgIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlXG4gICAgICAgICAgICA6IGNvbmZpZ1RlbXBsYXRlR3JvdXAuaXNWaWV3VHJlZUpzb25cbiAgICAgICAgICAgIDogIShjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZUNoZWNrYm94SXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLmlnbm9yZVJhZGlvSXRlbSB8fCBjb25maWdUZW1wbGF0ZUdyb3VwLnNpbmdsZVNlbGVjdEl0ZW0pXG4gICAgICAgICAgICA6IHRydWVcbiAgICAgIFwiXG4gICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwicGFyZW50SXRlbSgpLmxldmVsICsgMSB8IExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yUGFkZGluZ0xlZnRJdGVtUGlwZTogcGFyZW50SXRlbSgpLm1heExldmVsR3JvdXAgKyAxIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlIDogY29uZmlnVGVtcGxhdGVHcm91cC5pc1ZpZXdUcmVlSnNvbiA6IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5weS1bOHB4XV09XCJjb25maWdUZW1wbGF0ZUdyb3VwLmZpZWxkR2V0QXZhdGFySXRlbVwiXG4gICAgICBbY2xhc3MucHktWzRweF1dPVwiIWNvbmZpZ1RlbXBsYXRlR3JvdXAuZmllbGRHZXRBdmF0YXJJdGVtXCI+XG4gICAgICA8ZGl2IFtjbGFzc109XCJwYXJlbnRJdGVtKCkuY2xhc3NJbmNsdWRlSXRlbU5vRGF0YSB8fCAnJ1wiPlxuICAgICAgICBAaWYgKHBhcmVudEl0ZW0oKS5pY29uRW1wdHlEYXRhSW5Hcm91cCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi1bMTZweF1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiKGtleVNlYXJjaCgpID8gJ25vLXJlc3VsdCcgOiAnbm8tZGF0YScpIHwgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB8IGFzeW5jXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSkge1xuICAgICAgICAgIDxzcGFuPnt7IHBhcmVudEl0ZW0oKS50ZXh0RGVzY3JpcHRpb25Hcm91cFdoZW5Ob0RhdGEgPz8gY29uZmlnKCk/LnRleHROb0RhdGEgPz8gJ2kxOG5fbm9fcmVzdWx0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGtleVNlYXJjaCgpKSB7XG4gICAgICAgICAgPHNwYW4+e3sgJ2kxOG5fbm9fcmVzdWx0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbn1cbiJdfQ==
@@ -6,7 +6,7 @@ export class LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe {
6
6
  if (level < 2) {
7
7
  return 16;
8
8
  }
9
- return ((level - 2) * 24) + 16;
9
+ return (level - 2) * 24 + 16;
10
10
  }
11
11
  if (isTreeView) {
12
12
  let leftLine = level * 16;
@@ -32,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32
32
  type: Pipe,
33
33
  args: [{
34
34
  name: 'LibsUiComponentsListGroupCalculatorLeftLineVerticalItemPipe',
35
- standalone: true
35
+ standalone: true,
36
36
  }]
37
37
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1sZWZ0LWxpbmUtdmVydGljYWwtaXRlbS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9ncm91cC9waXBlcy9jYWxjdWxhdG9yLWxlZnQtbGluZS12ZXJ0aWNhbC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTywyREFBMkQ7SUFFdEUsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLFVBQW9CLEVBQUUsY0FBd0IsRUFBRSxPQUFpQjtRQUMxRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUVELE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLFFBQVEsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRTFCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNYLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFMUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzt3R0FqQ1UsMkRBQTJEO3NHQUEzRCwyREFBMkQ7OzRGQUEzRCwyREFBMkQ7a0JBSnZFLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDZEQUE2RDtvQkFDbkUsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvckxlZnRMaW5lVmVydGljYWxJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JMZWZ0TGluZVZlcnRpY2FsSXRlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0obGV2ZWw6IG51bWJlciwgbWF4TGV2ZWw6IG51bWJlciwgaXNUcmVlVmlldz86IGJvb2xlYW4sIGlzVHJlZVZpZXdKc29uPzogYm9vbGVhbiwgaGFzSWNvbj86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGlmIChpc1RyZWVWaWV3SnNvbikge1xuICAgICAgaWYgKGxldmVsIDwgMikge1xuICAgICAgICByZXR1cm4gMTY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKGxldmVsIC0gMikgKiAyNCkgKyAxNjtcbiAgICB9XG5cbiAgICBpZiAoaXNUcmVlVmlldykge1xuICAgICAgbGV0IGxlZnRMaW5lID0gbGV2ZWwgKiAxNjtcblxuICAgICAgaWYgKGhhc0ljb24pIHtcbiAgICAgICAgbGVmdExpbmUgKz0gKGxldmVsIC0gMSkgKiA4O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGVmdExpbmU7XG4gICAgfVxuXG4gICAgaWYgKGxldmVsID4gMSAmJiBtYXhMZXZlbCA+IDIpIHtcbiAgICAgIGxldmVsIC09IDE7XG4gICAgICBsZXQgbGVmdExpbmUgPSBsZXZlbCAqIDEyO1xuXG4gICAgICBpZiAoaGFzSWNvbikge1xuICAgICAgICBsZWZ0TGluZSArPSBsZXZlbCAqIDg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsZWZ0TGluZTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1sZWZ0LWxpbmUtdmVydGljYWwtaXRlbS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9ncm91cC9waXBlcy9jYWxjdWxhdG9yLWxlZnQtbGluZS12ZXJ0aWNhbC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTywyREFBMkQ7SUFDdEUsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLFVBQW9CLEVBQUUsY0FBd0IsRUFBRSxPQUFpQjtRQUMxRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFMUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ1gsSUFBSSxRQUFRLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUUxQixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO3dHQWhDVSwyREFBMkQ7c0dBQTNELDJEQUEyRDs7NEZBQTNELDJEQUEyRDtrQkFKdkUsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsNkRBQTZEO29CQUNuRSxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ0xpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTGVmdExpbmVWZXJ0aWNhbEl0ZW1QaXBlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JMZWZ0TGluZVZlcnRpY2FsSXRlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGxldmVsOiBudW1iZXIsIG1heExldmVsOiBudW1iZXIsIGlzVHJlZVZpZXc/OiBib29sZWFuLCBpc1RyZWVWaWV3SnNvbj86IGJvb2xlYW4sIGhhc0ljb24/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBpZiAoaXNUcmVlVmlld0pzb24pIHtcbiAgICAgIGlmIChsZXZlbCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKGxldmVsIC0gMikgKiAyNCArIDE2O1xuICAgIH1cblxuICAgIGlmIChpc1RyZWVWaWV3KSB7XG4gICAgICBsZXQgbGVmdExpbmUgPSBsZXZlbCAqIDE2O1xuXG4gICAgICBpZiAoaGFzSWNvbikge1xuICAgICAgICBsZWZ0TGluZSArPSAobGV2ZWwgLSAxKSAqIDg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsZWZ0TGluZTtcbiAgICB9XG5cbiAgICBpZiAobGV2ZWwgPiAxICYmIG1heExldmVsID4gMikge1xuICAgICAgbGV2ZWwgLT0gMTtcbiAgICAgIGxldCBsZWZ0TGluZSA9IGxldmVsICogMTI7XG5cbiAgICAgIGlmIChoYXNJY29uKSB7XG4gICAgICAgIGxlZnRMaW5lICs9IGxldmVsICogODtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxlZnRMaW5lO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG59XG4iXX0=
@@ -9,7 +9,7 @@ export class LibsUiComponentsListGroupCalculatorMarginLeftItemPipe {
9
9
  if (level === 1) {
10
10
  return 0;
11
11
  }
12
- return ((level - 2) * 24);
12
+ return (level - 2) * 24;
13
13
  }
14
14
  if (!isTreeView) {
15
15
  if (maxLevel > 2 && level > 2) {
@@ -34,7 +34,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
34
34
  type: Pipe,
35
35
  args: [{
36
36
  name: 'LibsUiComponentsListGroupCalculatorMarginLeftItemPipe',
37
- standalone: true
37
+ standalone: true,
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1tYXJnaW4tbGVmdC1pdGVtLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL3BpcGVzL2NhbGN1bGF0b3ItbWFyZ2luLWxlZnQtaXRlbS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8scURBQXFEO0lBRWhFLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxVQUFvQixFQUFFLGNBQXdCLEVBQUUsT0FBaUIsRUFBRSxnQkFBMEI7UUFFdEksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBRUQsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUVsQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLFVBQVUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7Z0JBRUQsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztZQUVELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsVUFBVSxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzt3R0FyQ1UscURBQXFEO3NHQUFyRCxxREFBcUQ7OzRGQUFyRCxxREFBcUQ7a0JBSmpFLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVEQUF1RDtvQkFDN0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdMaWJzVWlDb21wb25lbnRzTGlzdEdyb3VwQ2FsY3VsYXRvck1hcmdpbkxlZnRJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JNYXJnaW5MZWZ0SXRlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0obGV2ZWw6IG51bWJlciwgbWF4TGV2ZWw6IG51bWJlciwgaXNUcmVlVmlldz86IGJvb2xlYW4sIGlzVmlld1RyZWVKc29uPzogYm9vbGVhbiwgaGFzSWNvbj86IGJvb2xlYW4sIGlzVmlld0xhYmVsRW1wdHk/OiBib29sZWFuKTogbnVtYmVyIHtcblxuICAgIGlmICghbGV2ZWwpIHtcbiAgICAgIHJldHVybiAxNjtcbiAgICB9XG5cbiAgICBpZiAoaXNWaWV3VHJlZUpzb24pIHtcbiAgICAgIGlmIChsZXZlbCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgobGV2ZWwgLSAyKSAqIDI0KTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVHJlZVZpZXcpIHtcbiAgICAgIGlmIChtYXhMZXZlbCA+IDIgJiYgbGV2ZWwgPiAyKSB7XG4gICAgICAgIGxldCBtYXJnaW5MZWZ0ID0gKGxldmVsIC0gMSkgKiAxMjtcblxuICAgICAgICBpZiAoaGFzSWNvbikge1xuICAgICAgICAgIG1hcmdpbkxlZnQgKz0gKGxldmVsIC0gMSkgKiA2O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hcmdpbkxlZnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGxldCBtYXJnaW5MZWZ0ID0gMjQgKiBsZXZlbCArIChpc1ZpZXdMYWJlbEVtcHR5ID8gOCA6IC0xNik7XG5cbiAgICBpZiAobWF4TGV2ZWwgPT09IGxldmVsICYmICFpc1ZpZXdMYWJlbEVtcHR5KSB7XG4gICAgICBtYXJnaW5MZWZ0IC09IDg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmdpbkxlZnQ7XG4gIH1cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1tYXJnaW4tbGVmdC1pdGVtLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2dyb3VwL3BpcGVzL2NhbGN1bGF0b3ItbWFyZ2luLWxlZnQtaXRlbS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8scURBQXFEO0lBQ2hFLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxVQUFvQixFQUFFLGNBQXdCLEVBQUUsT0FBaUIsRUFBRSxnQkFBMEI7UUFDdEksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBRUQsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLFVBQVUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRWxDLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osVUFBVSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFFRCxPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBRUQsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsSUFBSSxVQUFVLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxVQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO3dHQW5DVSxxREFBcUQ7c0dBQXJELHFEQUFxRDs7NEZBQXJELHFEQUFxRDtrQkFKakUsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsdURBQXVEO29CQUM3RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ0xpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yTWFyZ2luTGVmdEl0ZW1QaXBlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JNYXJnaW5MZWZ0SXRlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGxldmVsOiBudW1iZXIsIG1heExldmVsOiBudW1iZXIsIGlzVHJlZVZpZXc/OiBib29sZWFuLCBpc1ZpZXdUcmVlSnNvbj86IGJvb2xlYW4sIGhhc0ljb24/OiBib29sZWFuLCBpc1ZpZXdMYWJlbEVtcHR5PzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgaWYgKCFsZXZlbCkge1xuICAgICAgcmV0dXJuIDE2O1xuICAgIH1cblxuICAgIGlmIChpc1ZpZXdUcmVlSnNvbikge1xuICAgICAgaWYgKGxldmVsID09PSAxKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKGxldmVsIC0gMikgKiAyNDtcbiAgICB9XG5cbiAgICBpZiAoIWlzVHJlZVZpZXcpIHtcbiAgICAgIGlmIChtYXhMZXZlbCA+IDIgJiYgbGV2ZWwgPiAyKSB7XG4gICAgICAgIGxldCBtYXJnaW5MZWZ0ID0gKGxldmVsIC0gMSkgKiAxMjtcblxuICAgICAgICBpZiAoaGFzSWNvbikge1xuICAgICAgICAgIG1hcmdpbkxlZnQgKz0gKGxldmVsIC0gMSkgKiA2O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hcmdpbkxlZnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGxldCBtYXJnaW5MZWZ0ID0gMjQgKiBsZXZlbCArIChpc1ZpZXdMYWJlbEVtcHR5ID8gOCA6IC0xNik7XG5cbiAgICBpZiAobWF4TGV2ZWwgPT09IGxldmVsICYmICFpc1ZpZXdMYWJlbEVtcHR5KSB7XG4gICAgICBtYXJnaW5MZWZ0IC09IDg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmdpbkxlZnQ7XG4gIH1cbn1cbiJdfQ==
@@ -20,7 +20,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
20
20
  type: Pipe,
21
21
  args: [{
22
22
  name: 'LibsUiComponentsListGroupCalculatorPaddingLeftItemPipe',
23
- standalone: true
23
+ standalone: true,
24
24
  }]
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1wYWRkaW5nLWxlZnQtaXRlbS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9ncm91cC9waXBlcy9jYWxjdWxhdG9yLXBhZGRpbmctbGVmdC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxzREFBc0Q7SUFFakUsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLFVBQW9CLEVBQUUsY0FBd0IsRUFBRSxRQUFrQjtRQUMzRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLFVBQVUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQzt3R0FmVSxzREFBc0Q7c0dBQXRELHNEQUFzRDs7NEZBQXRELHNEQUFzRDtrQkFKbEUsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsd0RBQXdEO29CQUM5RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ0xpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yUGFkZGluZ0xlZnRJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RHcm91cENhbGN1bGF0b3JQYWRkaW5nTGVmdEl0ZW1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGxldmVsOiBudW1iZXIsIG1heExldmVsOiBudW1iZXIsIGlzVHJlZVZpZXc/OiBib29sZWFuLCBpc1RyZWVWaWV3SnNvbj86IGJvb2xlYW4sIGhhc0NoaWxkPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgaWYgKGlzVHJlZVZpZXdKc29uKSB7XG4gICAgICBpZiAobGV2ZWwgPT09IDEgfHwgIWhhc0NoaWxkKSB7XG4gICAgICAgIHJldHVybiAxNjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDg7XG4gICAgfVxuICAgIGlmIChpc1RyZWVWaWV3IHx8IGxldmVsID4gMikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChsZXZlbCAtIDEpICogMTY7XG4gIH1cbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1wYWRkaW5nLWxlZnQtaXRlbS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9ncm91cC9waXBlcy9jYWxjdWxhdG9yLXBhZGRpbmctbGVmdC1pdGVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxzREFBc0Q7SUFDakUsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFnQixFQUFFLFVBQW9CLEVBQUUsY0FBd0IsRUFBRSxRQUFrQjtRQUMzRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLFVBQVUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQzt3R0FkVSxzREFBc0Q7c0dBQXRELHNEQUFzRDs7NEZBQXRELHNEQUFzRDtrQkFKbEUsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsd0RBQXdEO29CQUM5RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ0xpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yUGFkZGluZ0xlZnRJdGVtUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0R3JvdXBDYWxjdWxhdG9yUGFkZGluZ0xlZnRJdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0obGV2ZWw6IG51bWJlciwgbWF4TGV2ZWw6IG51bWJlciwgaXNUcmVlVmlldz86IGJvb2xlYW4sIGlzVHJlZVZpZXdKc29uPzogYm9vbGVhbiwgaGFzQ2hpbGQ/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBpZiAoaXNUcmVlVmlld0pzb24pIHtcbiAgICAgIGlmIChsZXZlbCA9PT0gMSB8fCAhaGFzQ2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gODtcbiAgICB9XG4gICAgaWYgKGlzVHJlZVZpZXcgfHwgbGV2ZWwgPiAyKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGxldmVsIC0gMSkgKiAxNjtcbiAgfVxufVxuIl19