@acorex/modules 20.4.1 → 20.5.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/common/index.d.ts +5 -1
  2. package/data-management/index.d.ts +69 -6
  3. package/fesm2022/{acorex-modules-application-management-acorex-modules-application-management-3Z51H2O-.mjs → acorex-modules-application-management-acorex-modules-application-management-CQMnhxLa.mjs} +28 -7
  4. package/fesm2022/acorex-modules-application-management-acorex-modules-application-management-CQMnhxLa.mjs.map +1 -0
  5. package/fesm2022/acorex-modules-application-management-menu-list.component-BMbl5rtn.mjs +1046 -0
  6. package/fesm2022/acorex-modules-application-management-menu-list.component-BMbl5rtn.mjs.map +1 -0
  7. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  8. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BwMF7mXK.mjs → acorex-modules-auth-acorex-modules-auth-D1GLmcE-.mjs} +10 -10
  9. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BwMF7mXK.mjs.map → acorex-modules-auth-acorex-modules-auth-D1GLmcE-.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-auth-app-chooser.component-Y8ccBUCa.mjs → acorex-modules-auth-app-chooser.component-BwuQ1IDp.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-auth-app-chooser.component-Y8ccBUCa.mjs.map → acorex-modules-auth-app-chooser.component-BwuQ1IDp.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-auth-login.module-B-nJmy3_.mjs → acorex-modules-auth-login.module-C3YVgPHp.mjs} +4 -4
  13. package/fesm2022/{acorex-modules-auth-login.module-B-nJmy3_.mjs.map → acorex-modules-auth-login.module-C3YVgPHp.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-auth-master.layout-BhsnK28w.mjs → acorex-modules-auth-master.layout-D0iHJc_T.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-auth-master.layout-BhsnK28w.mjs.map → acorex-modules-auth-master.layout-D0iHJc_T.mjs.map} +1 -1
  16. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DojO-qYk.mjs → acorex-modules-auth-oauth-callback.component-CfTRvv9t.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DojO-qYk.mjs.map → acorex-modules-auth-oauth-callback.component-CfTRvv9t.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-auth-password.component-DauiGRQb.mjs → acorex-modules-auth-password.component-C-aos_5o.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-auth-password.component-DauiGRQb.mjs.map → acorex-modules-auth-password.component-C-aos_5o.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-auth-password.component-DxzlLZWK.mjs → acorex-modules-auth-password.component-DzWcZlfs.mjs} +2 -2
  21. package/fesm2022/{acorex-modules-auth-password.component-DxzlLZWK.mjs.map → acorex-modules-auth-password.component-DzWcZlfs.mjs.map} +1 -1
  22. package/fesm2022/{acorex-modules-auth-routes-BwJilKAK.mjs → acorex-modules-auth-routes-CR8yYe3M.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-auth-routes-BwJilKAK.mjs.map → acorex-modules-auth-routes-CR8yYe3M.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-auth-two-factor.module-CV70xdxY.mjs → acorex-modules-auth-two-factor.module-BzFLnBad.mjs} +2 -2
  25. package/fesm2022/{acorex-modules-auth-two-factor.module-CV70xdxY.mjs.map → acorex-modules-auth-two-factor.module-BzFLnBad.mjs.map} +1 -1
  26. package/fesm2022/{acorex-modules-auth-user-sessions.component-CYtCo5d1.mjs → acorex-modules-auth-user-sessions.component-Bfb74eNc.mjs} +3 -3
  27. package/fesm2022/acorex-modules-auth-user-sessions.component-Bfb74eNc.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-auth.mjs +1 -1
  29. package/fesm2022/acorex-modules-common.mjs +86 -12
  30. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  31. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  32. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  33. package/fesm2022/acorex-modules-data-management.mjs +526 -57
  34. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  35. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-CwVDh52l.mjs → acorex-modules-document-management-acorex-modules-document-management-BsfSETMk.mjs} +18 -18
  36. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BsfSETMk.mjs.map +1 -0
  37. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-KTVXeYE1.mjs → acorex-modules-document-management-attachment-widget.component-C4KhZ0gC.mjs} +2 -2
  38. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-KTVXeYE1.mjs.map → acorex-modules-document-management-attachment-widget.component-C4KhZ0gC.mjs.map} +1 -1
  39. package/fesm2022/{acorex-modules-document-management-details-view.component-Blo7DEM9.mjs → acorex-modules-document-management-details-view.component-DeI-r7-g.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-document-management-details-view.component-Blo7DEM9.mjs.map → acorex-modules-document-management-details-view.component-DeI-r7-g.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-wVF422mD.mjs → acorex-modules-document-management-document-signature-popup.component-DMFqz5jZ.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-wVF422mD.mjs.map → acorex-modules-document-management-document-signature-popup.component-DMFqz5jZ.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-document-management-drive-choose.component-Bk62GMxv.mjs → acorex-modules-document-management-drive-choose.component-BcLME_up.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-document-management-drive-choose.component-Bk62GMxv.mjs.map → acorex-modules-document-management-drive-choose.component-BcLME_up.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-document-management-drive.component-CdauFuwi.mjs → acorex-modules-document-management-drive.component-BVgm40pD.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-document-management-drive.component-CdauFuwi.mjs.map → acorex-modules-document-management-drive.component-BVgm40pD.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BkeEB1i8.mjs → acorex-modules-document-management-large-icons-view.component-D9NtNlWh.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BkeEB1i8.mjs.map → acorex-modules-document-management-large-icons-view.component-D9NtNlWh.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CTp5hvCU.mjs → acorex-modules-document-management-large-tiles-view.component-DUvlPflF.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CTp5hvCU.mjs.map → acorex-modules-document-management-large-tiles-view.component-DUvlPflF.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-document-management-link-dialog.component-BXzePJlW.mjs → acorex-modules-document-management-link-dialog.component-Gc-Cwsq-.mjs} +2 -2
  52. package/fesm2022/acorex-modules-document-management-link-dialog.component-Gc-Cwsq-.mjs.map +1 -0
  53. package/fesm2022/{acorex-modules-document-management-list-view.component-Ctk28jwC.mjs → acorex-modules-document-management-list-view.component-CulR4iN1.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-document-management-list-view.component-Ctk28jwC.mjs.map → acorex-modules-document-management-list-view.component-CulR4iN1.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-document-management-share-dialog.component-PCK4_jcD.mjs → acorex-modules-document-management-share-dialog.component-Cie7I04V.mjs} +2 -2
  56. package/fesm2022/acorex-modules-document-management-share-dialog.component-Cie7I04V.mjs.map +1 -0
  57. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-DZEoX29V.mjs → acorex-modules-document-management-share-email-dialog.component-DbRYaPFI.mjs} +2 -2
  58. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DbRYaPFI.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D81OAgYf.mjs → acorex-modules-document-management-small-icons-view.component-DJI_f_9F.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D81OAgYf.mjs.map → acorex-modules-document-management-small-icons-view.component-DJI_f_9F.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BNuswkkU.mjs → acorex-modules-document-management-small-tiles-view.component-kNOOhmcY.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BNuswkkU.mjs.map → acorex-modules-document-management-small-tiles-view.component-kNOOhmcY.mjs.map} +1 -1
  63. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  64. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CcVD1arq.mjs → acorex-modules-help-desk-acorex-modules-help-desk-BR0maKeU.mjs} +3 -3
  65. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CcVD1arq.mjs.map → acorex-modules-help-desk-acorex-modules-help-desk-BR0maKeU.mjs.map} +1 -1
  66. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BAD2K3Yk.mjs → acorex-modules-help-desk-capture-screen.component-DZFQUHUd.mjs} +2 -2
  67. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BAD2K3Yk.mjs.map → acorex-modules-help-desk-capture-screen.component-DZFQUHUd.mjs.map} +1 -1
  68. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  69. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-OuRcuL44.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-cb1hY8I2.mjs} +9 -9
  70. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-OuRcuL44.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-cb1hY8I2.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-CcfQMQcK.mjs → acorex-modules-human-capital-management-employee-skill.entity-DfdiUEju.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-CcfQMQcK.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-DfdiUEju.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DstZ_ed2.mjs → acorex-modules-human-capital-management-employee.entity-CP0J0udU.mjs} +2 -2
  74. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DstZ_ed2.mjs.map → acorex-modules-human-capital-management-employee.entity-CP0J0udU.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Cxpm2FR4.mjs → acorex-modules-human-capital-management-employment-type.entity-0nT4XSi2.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Cxpm2FR4.mjs.map → acorex-modules-human-capital-management-employment-type.entity-0nT4XSi2.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-wNFknszR.mjs → acorex-modules-human-capital-management-leave-request.entity-YGyl6MWh.mjs} +2 -2
  78. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-wNFknszR.mjs.map → acorex-modules-human-capital-management-leave-request.entity-YGyl6MWh.mjs.map} +1 -1
  79. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CS5I6afy.mjs → acorex-modules-human-capital-management-leave-type.entity-J9p3UIlS.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CS5I6afy.mjs.map → acorex-modules-human-capital-management-leave-type.entity-J9p3UIlS.mjs.map} +1 -1
  81. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-ClzIrdYi.mjs → acorex-modules-human-capital-management-position-assignment.entity-DBz-A04O.mjs} +2 -2
  82. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-ClzIrdYi.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-DBz-A04O.mjs.map} +1 -1
  83. package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-CA_afJbJ.mjs → acorex-modules-human-capital-management-skill-level.entity-CV9vEbTH.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-CA_afJbJ.mjs.map → acorex-modules-human-capital-management-skill-level.entity-CV9vEbTH.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-human-capital-management-skill.entity-B0rZeAGS.mjs → acorex-modules-human-capital-management-skill.entity-n6HyUWfU.mjs} +9 -3
  86. package/fesm2022/acorex-modules-human-capital-management-skill.entity-n6HyUWfU.mjs.map +1 -0
  87. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  88. package/fesm2022/{acorex-modules-report-management-report-create-root.component-Cy7fMpif.mjs → acorex-modules-report-management-report-create-root.component-w6pWujhV.mjs} +2 -2
  89. package/fesm2022/acorex-modules-report-management-report-create-root.component-w6pWujhV.mjs.map +1 -0
  90. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  91. package/fesm2022/acorex-modules-security-management.mjs +2 -2
  92. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  93. package/fesm2022/acorex-modules-text-template-management.mjs +1 -251
  94. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
  95. package/package.json +10 -10
  96. package/text-template-management/index.d.ts +2 -23
  97. package/fesm2022/acorex-modules-application-management-acorex-modules-application-management-3Z51H2O-.mjs.map +0 -1
  98. package/fesm2022/acorex-modules-application-management-menu-list.component-LIRwdWs6.mjs +0 -731
  99. package/fesm2022/acorex-modules-application-management-menu-list.component-LIRwdWs6.mjs.map +0 -1
  100. package/fesm2022/acorex-modules-auth-user-sessions.component-CYtCo5d1.mjs.map +0 -1
  101. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-CwVDh52l.mjs.map +0 -1
  102. package/fesm2022/acorex-modules-document-management-link-dialog.component-BXzePJlW.mjs.map +0 -1
  103. package/fesm2022/acorex-modules-document-management-share-dialog.component-PCK4_jcD.mjs.map +0 -1
  104. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DZEoX29V.mjs.map +0 -1
  105. package/fesm2022/acorex-modules-human-capital-management-skill.entity-B0rZeAGS.mjs.map +0 -1
  106. package/fesm2022/acorex-modules-report-management-report-create-root.component-Cy7fMpif.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-application-management-menu-list.component-LIRwdWs6.mjs","sources":["../tmp-esm2022/application-management/lib/features/menu-management/components/menu-tree-item/menu-tree-item.component.js","../tmp-esm2022/application-management/lib/features/menu-management/menu-management.service.js","../tmp-esm2022/application-management/lib/features/menu-management/pages/menu-list/menu-list.component.js"],"sourcesContent":["import { CdkDrag, CdkDropList, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/dropdown-button\";\nimport * as i4 from \"@acorex/components/dropdown\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@acorex/core/translation\";\n//#region ---- Menu Tree Item Component ----\nexport class AXMMenuTreeItemComponent {\n constructor() {\n //#region ---- Inputs ----\n this.item = input.required(...(ngDevMode ? [{ debugName: \"item\" }] : []));\n this.level = input(0, ...(ngDevMode ? [{ debugName: \"level\" }] : []));\n this.canDelete = input(false, ...(ngDevMode ? [{ debugName: \"canDelete\" }] : []));\n //#endregion\n //#region ---- Outputs ----\n this.actionTriggered = output();\n this.itemDropped = output();\n //#endregion\n //#region ---- Component State ----\n this.isExpanded = signal(true, ...(ngDevMode ? [{ debugName: \"isExpanded\" }] : []));\n }\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Toggle expand/collapse\n */\n toggleExpand() {\n this.isExpanded.update((expanded) => !expanded);\n }\n /**\n * Handle action trigger\n */\n onAction(action) {\n this.actionTriggered.emit({ action, item: this.item() });\n }\n /**\n * Handle drop event\n */\n onDrop(event) {\n this.itemDropped.emit(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMMenuTreeItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXMMenuTreeItemComponent, isStandalone: true, selector: \"axm-menu-tree-item\", inputs: { item: { classPropertyName: \"item\", publicName: \"item\", isSignal: true, isRequired: true, transformFunction: null }, level: { classPropertyName: \"level\", publicName: \"level\", isSignal: true, isRequired: false, transformFunction: null }, canDelete: { classPropertyName: \"canDelete\", publicName: \"canDelete\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionTriggered: \"actionTriggered\", itemDropped: \"itemDropped\" }, host: { classAttribute: \"axm-menu-tree-item\" }, ngImport: i0, template: \"<div class=\\\"axm-menu-tree-item__container\\\" [style.padding-left.rem]=\\\"level()\\\">\\n <div class=\\\"axm-menu-tree-item__content\\\" cdkDrag [cdkDragData]=\\\"item()\\\" [class.--hidden]=\\\"item().isHidden\\\"\\n [class.--custom]=\\\"item().isCustom\\\">\\n <!-- Drag Handle -->\\n <div class=\\\"axm-menu-tree-item__drag-handle\\\" cdkDragHandle>\\n <i class=\\\"fa-light fa-grip-dots-vertical\\\"></i>\\n </div>\\n\\n <!-- Expand/Collapse Button -->\\n @if (item().children && item().children!.length > 0) {\\n <ax-button class=\\\"axm-menu-tree-item__expand-btn\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" (onClick)=\\\"toggleExpand()\\\">\\n <i [class]=\\\"isExpanded() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-right'\\\"></i>\\n </ax-button>\\n } @else {\\n <div class=\\\"axm-menu-tree-item__spacer\\\"></div>\\n }\\n\\n <!-- Icon -->\\n @if (item().icon) {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item().icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item().text) {\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item().text | translate | async }}\\n </span>\\n } @else if (item().path) {\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item().path }}\\n </span>\\n } @else {\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@application-management:menu-management.badge.divider' | translate | async }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item().name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">\\n {{ item().name }}\\n </code>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-dropdown-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\">\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Show/Hide (only for items with names) -->\\n @if (item().name && item().isBuiltIn) {\\n @if (item().isHidden) {\\n <ax-button-item (onClick)=\\\"onAction('show'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.show' | translate | async }}\\n </ax-button-item>\\n } @else {\\n <ax-button-item (onClick)=\\\"onAction('hide'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.hide' | translate | async }}\\n </ax-button-item>\\n }\\n }\\n\\n <!-- Edit (only for items with names) -->\\n @if (item().name) {\\n <ax-button-item (onClick)=\\\"onAction('edit'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n {{ '@general:actions.edit.title' | translate | async }}\\n </ax-button-item>\\n }\\n\\n <!-- Add Child -->\\n <ax-button-item (onClick)=\\\"onAction('add-child'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.add-child' | translate | async }}\\n </ax-button-item>\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item().name && item().isCustom && canDelete()) {\\n <ax-divider></ax-divider>\\n <ax-button-item [color]=\\\"'danger'\\\" (onClick)=\\\"onAction('delete'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n {{ '@general:actions.delete.title' | translate | async }}\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item().name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@application-management:menu-management.messages.no-name-info' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-dropdown-button>\\n </div>\\n\\n <!-- Children -->\\n @if (item().children && item().children!.length > 0 && isExpanded()) {\\n <div class=\\\"axm-menu-tree-item__children\\\" cdkDropList [cdkDropListData]=\\\"item().children!\\\"\\n (cdkDropListDropped)=\\\"onDrop($event)\\\">\\n @for (child of item().children!; track child.name || child.path || $index) {\\n <axm-menu-tree-item [item]=\\\"child\\\" [level]=\\\"level() + 1\\\" [canDelete]=\\\"canDelete()\\\"\\n (actionTriggered)=\\\"actionTriggered.emit($event)\\\" (itemDropped)=\\\"itemDropped.emit($event)\\\" />\\n }\\n </div>\\n }\\n</div>\", styles: [\".axm-menu-tree-item__container{display:flex;flex-direction:column}.axm-menu-tree-item__content{display:flex;align-items:center;gap:.5rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-tree-item__content:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-tree-item__content.--hidden{opacity:.5}.axm-menu-tree-item__content.--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-tree-item__content.cdk-drag-preview{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-tree-item__drag-handle{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:move}.axm-menu-tree-item__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__expand-btn{height:1.5rem;width:1.5rem}.axm-menu-tree-item__spacer{width:1.5rem}.axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-tree-item__divider,.axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__divider i,.axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;-moz-user-select:all;user-select:all}.axm-menu-tree-item__actions{margin-left:.5rem}.axm-menu-tree-item__children{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem;padding-left:1rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}\\n\"], dependencies: [{ kind: \"component\", type: AXMMenuTreeItemComponent, selector: \"axm-menu-tree-item\", inputs: [\"item\", \"level\", \"canDelete\"], outputs: [\"actionTriggered\", \"itemDropped\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i3.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i4.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMMenuTreeItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-menu-tree-item', imports: [\n CommonModule,\n CdkDrag,\n CdkDragHandle,\n CdkDropList,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axm-menu-tree-item' }, template: \"<div class=\\\"axm-menu-tree-item__container\\\" [style.padding-left.rem]=\\\"level()\\\">\\n <div class=\\\"axm-menu-tree-item__content\\\" cdkDrag [cdkDragData]=\\\"item()\\\" [class.--hidden]=\\\"item().isHidden\\\"\\n [class.--custom]=\\\"item().isCustom\\\">\\n <!-- Drag Handle -->\\n <div class=\\\"axm-menu-tree-item__drag-handle\\\" cdkDragHandle>\\n <i class=\\\"fa-light fa-grip-dots-vertical\\\"></i>\\n </div>\\n\\n <!-- Expand/Collapse Button -->\\n @if (item().children && item().children!.length > 0) {\\n <ax-button class=\\\"axm-menu-tree-item__expand-btn\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" (onClick)=\\\"toggleExpand()\\\">\\n <i [class]=\\\"isExpanded() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-right'\\\"></i>\\n </ax-button>\\n } @else {\\n <div class=\\\"axm-menu-tree-item__spacer\\\"></div>\\n }\\n\\n <!-- Icon -->\\n @if (item().icon) {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item().icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item().text) {\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item().text | translate | async }}\\n </span>\\n } @else if (item().path) {\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item().path }}\\n </span>\\n } @else {\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@application-management:menu-management.badge.divider' | translate | async }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item().name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">\\n {{ item().name }}\\n </code>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-dropdown-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\">\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Show/Hide (only for items with names) -->\\n @if (item().name && item().isBuiltIn) {\\n @if (item().isHidden) {\\n <ax-button-item (onClick)=\\\"onAction('show'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.show' | translate | async }}\\n </ax-button-item>\\n } @else {\\n <ax-button-item (onClick)=\\\"onAction('hide'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.hide' | translate | async }}\\n </ax-button-item>\\n }\\n }\\n\\n <!-- Edit (only for items with names) -->\\n @if (item().name) {\\n <ax-button-item (onClick)=\\\"onAction('edit'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n {{ '@general:actions.edit.title' | translate | async }}\\n </ax-button-item>\\n }\\n\\n <!-- Add Child -->\\n <ax-button-item (onClick)=\\\"onAction('add-child'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n {{ '@application-management:menu-management.actions.add-child' | translate | async }}\\n </ax-button-item>\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item().name && item().isCustom && canDelete()) {\\n <ax-divider></ax-divider>\\n <ax-button-item [color]=\\\"'danger'\\\" (onClick)=\\\"onAction('delete'); panel.close()\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n {{ '@general:actions.delete.title' | translate | async }}\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item().name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@application-management:menu-management.messages.no-name-info' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-dropdown-button>\\n </div>\\n\\n <!-- Children -->\\n @if (item().children && item().children!.length > 0 && isExpanded()) {\\n <div class=\\\"axm-menu-tree-item__children\\\" cdkDropList [cdkDropListData]=\\\"item().children!\\\"\\n (cdkDropListDropped)=\\\"onDrop($event)\\\">\\n @for (child of item().children!; track child.name || child.path || $index) {\\n <axm-menu-tree-item [item]=\\\"child\\\" [level]=\\\"level() + 1\\\" [canDelete]=\\\"canDelete()\\\"\\n (actionTriggered)=\\\"actionTriggered.emit($event)\\\" (itemDropped)=\\\"itemDropped.emit($event)\\\" />\\n }\\n </div>\\n }\\n</div>\", styles: [\".axm-menu-tree-item__container{display:flex;flex-direction:column}.axm-menu-tree-item__content{display:flex;align-items:center;gap:.5rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-tree-item__content:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-tree-item__content.--hidden{opacity:.5}.axm-menu-tree-item__content.--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-tree-item__content.cdk-drag-preview{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-tree-item__drag-handle{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:move}.axm-menu-tree-item__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__expand-btn{height:1.5rem;width:1.5rem}.axm-menu-tree-item__spacer{width:1.5rem}.axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-tree-item__divider,.axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__divider i,.axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;-moz-user-select:all;user-select:all}.axm-menu-tree-item__actions{margin-left:.5rem}.axm-menu-tree-item__children{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem;padding-left:1rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10cmVlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvY29tcG9uZW50cy9tZW51LXRyZWUtaXRlbS9tZW51LXRyZWUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9jb21wb25lbnRzL21lbnUtdHJlZS1pdGVtL21lbnUtdHJlZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUd2QixnREFBZ0Q7QUFxQmhELE1BQU0sT0FBTyx3QkFBd0I7SUFuQnJDO1FBcUJJLDhCQUE4QjtRQUU5QixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsK0NBQW1CLENBQUM7UUFDekMsVUFBSyxHQUFHLEtBQUssQ0FBUyxDQUFDLGlEQUFDLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLHFEQUFDLENBQUM7UUFFbEMsWUFBWTtRQUVaLCtCQUErQjtRQUUvQixvQkFBZSxHQUFHLE1BQU0sRUFBd0QsQ0FBQztRQUNqRixnQkFBVyxHQUFHLE1BQU0sRUFBa0MsQ0FBQztRQUV2RCxZQUFZO1FBRVosdUNBQXVDO1FBRXZDLGVBQVUsR0FBRyxNQUFNLENBQVUsSUFBSSxzREFBQyxDQUFDO0tBNEJ0QztJQTFCRyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ08sWUFBWTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsTUFBeUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ08sTUFBTSxDQUFDLEtBQXFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBNUNRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHVrQkN0Q3JDLGl2SkEwSE0seTJHRHBGTyx3QkFBd0IsbUpBaEI3QixZQUFZLCtCQUNaLE9BQU8sd2NBQ1AsYUFBYSwrRkFDYixXQUFXLHFoQkFDWCxjQUFjLG91QkFDZCxpQkFBaUIscVBBQ2pCLHNCQUFzQiw0U0FDdEIsZ0JBQWdCLHFRQUNoQixtQkFBbUI7OzJGQVFkLHdCQUF3QjtrQkFuQnBDLFNBQVM7K0JBQ0ksb0JBQW9CLFdBQ3JCO3dCQUNMLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBQ3RCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0LCBDZGtEcmFnSGFuZGxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQTWVudUl0ZW1BY3Rpb24sIEFYUE1lbnVJdGVtTm9kZSB9IGZyb20gJy4uLy4uL21lbnUtY3VzdG9taXphdGlvbi50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgTWVudSBUcmVlIEl0ZW0gQ29tcG9uZW50ICAgLS0tLVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4bS1tZW51LXRyZWUtaXRlbScsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIENka0RyYWcsXG4gICAgICAgIENka0RyYWdIYW5kbGUsXG4gICAgICAgIENka0Ryb3BMaXN0LFxuICAgICAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lbnUtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYXhtLW1lbnUtdHJlZS1pdGVtJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWE1NZW51VHJlZUl0ZW1Db21wb25lbnQge1xuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBJbnB1dHMgICAtLS0tXG5cbiAgICBpdGVtID0gaW5wdXQucmVxdWlyZWQ8QVhQTWVudUl0ZW1Ob2RlPigpO1xuICAgIGxldmVsID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgICBjYW5EZWxldGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgT3V0cHV0cyAgIC0tLS1cblxuICAgIGFjdGlvblRyaWdnZXJlZCA9IG91dHB1dDx7IGFjdGlvbjogQVhQTWVudUl0ZW1BY3Rpb247IGl0ZW06IEFYUE1lbnVJdGVtTm9kZSB9PigpO1xuICAgIGl0ZW1Ecm9wcGVkID0gb3V0cHV0PENka0RyYWdEcm9wPEFYUE1lbnVJdGVtTm9kZVtdPj4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDb21wb25lbnQgU3RhdGUgICAtLS0tXG5cbiAgICBpc0V4cGFuZGVkID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGV4cGFuZC9jb2xsYXBzZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0b2dnbGVFeHBhbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZC51cGRhdGUoKGV4cGFuZGVkKSA9PiAhZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBhY3Rpb24gdHJpZ2dlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbkFjdGlvbihhY3Rpb246IEFYUE1lbnVJdGVtQWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uVHJpZ2dlcmVkLmVtaXQoeyBhY3Rpb24sIGl0ZW06IHRoaXMuaXRlbSgpIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBkcm9wIGV2ZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8QVhQTWVudUl0ZW1Ob2RlW10+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbURyb3BwZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iLCI8ZGl2IGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19jb250YWluZXJcIiBbc3R5bGUucGFkZGluZy1sZWZ0LnJlbV09XCJsZXZlbCgpXCI+XG4gIDxkaXYgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX2NvbnRlbnRcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJpdGVtKClcIiBbY2xhc3MuLS1oaWRkZW5dPVwiaXRlbSgpLmlzSGlkZGVuXCJcbiAgICBbY2xhc3MuLS1jdXN0b21dPVwiaXRlbSgpLmlzQ3VzdG9tXCI+XG4gICAgPCEtLSBEcmFnIEhhbmRsZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19kcmFnLWhhbmRsZVwiIGNka0RyYWdIYW5kbGU+XG4gICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWdyaXAtZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRXhwYW5kL0NvbGxhcHNlIEJ1dHRvbiAtLT5cbiAgICBAaWYgKGl0ZW0oKS5jaGlsZHJlbiAmJiBpdGVtKCkuY2hpbGRyZW4hLmxlbmd0aCA+IDApIHtcbiAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19leHBhbmQtYnRuXCIgW2xvb2tdPVwiJ2JsYW5rJ1wiIFtzaXplXT1cIidzbSdcIiAob25DbGljayk9XCJ0b2dnbGVFeHBhbmQoKVwiPlxuICAgICAgPGkgW2NsYXNzXT1cImlzRXhwYW5kZWQoKSA/ICdmYS1saWdodCBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWxpZ2h0IGZhLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxuICAgIDwvYXgtYnV0dG9uPlxuICAgIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX3NwYWNlclwiPjwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gSWNvbiAtLT5cbiAgICBAaWYgKGl0ZW0oKS5pY29uKSB7XG4gICAgPGkgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX2ljb25cIiBbY2xhc3NdPVwiaXRlbSgpLmljb25cIj48L2k+XG4gICAgfVxuXG4gICAgPCEtLSBUZXh0IG9yIEluZm8gLS0+XG4gICAgQGlmIChpdGVtKCkudGV4dCkge1xuICAgIDxzcGFuIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX190ZXh0XCI+XG4gICAgICB7eyBpdGVtKCkudGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKGl0ZW0oKS5wYXRoKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX3BhdGhcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtbGlua1wiPjwvaT5cbiAgICAgIHt7IGl0ZW0oKS5wYXRoIH19XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgIDxzcGFuIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19kaXZpZGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLW1pbnVzXCI+PC9pPlxuICAgICAge3sgJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5iYWRnZS5kaXZpZGVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgPC9zcGFuPlxuICAgIH1cblxuICAgIDwhLS0gTWVudSBOYW1lL0tleSAtLT5cbiAgICBAaWYgKGl0ZW0oKS5uYW1lKSB7XG4gICAgPGNvZGUgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX25hbWVcIj5cbiAgICAgICAge3sgaXRlbSgpLm5hbWUgfX1cbiAgICAgIDwvY29kZT5cbiAgICB9XG5cbiAgICA8IS0tIEFjdGlvbnMgRHJvcGRvd24gLS0+XG4gICAgPGF4LWRyb3Bkb3duLWJ1dHRvbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fYWN0aW9uc1wiIFtsb29rXT1cIidibGFuaydcIiBbc2l6ZV09XCInc20nXCI+XG4gICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuXG4gICAgICA8YXgtZHJvcGRvd24tcGFuZWwgI3BhbmVsPlxuICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8IS0tIFNob3cvSGlkZSAob25seSBmb3IgaXRlbXMgd2l0aCBuYW1lcykgLS0+XG4gICAgICAgICAgQGlmIChpdGVtKCkubmFtZSAmJiBpdGVtKCkuaXNCdWlsdEluKSB7XG4gICAgICAgICAgQGlmIChpdGVtKCkuaXNIaWRkZW4pIHtcbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gKG9uQ2xpY2spPVwib25BY3Rpb24oJ3Nob3cnKTsgcGFuZWwuY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIHt7ICdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5zaG93JyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gKG9uQ2xpY2spPVwib25BY3Rpb24oJ2hpZGUnKTsgcGFuZWwuY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1leWUtc2xhc2hcIj48L2k+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIHt7ICdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5oaWRlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBFZGl0IChvbmx5IGZvciBpdGVtcyB3aXRoIG5hbWVzKSAtLT5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5uYW1lKSB7XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdlZGl0Jyk7IHBhbmVsLmNsb3NlKClcIj5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtZWRpdFwiPjwvaT5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAge3sgJ0BnZW5lcmFsOmFjdGlvbnMuZWRpdC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBBZGQgQ2hpbGQgLS0+XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdhZGQtY2hpbGQnKTsgcGFuZWwuY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICB7eyAnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuYWRkLWNoaWxkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cblxuICAgICAgICAgIDwhLS0gRGVsZXRlIChvbmx5IGZvciBjdXN0b20gaXRlbXMgd2l0aCBuYW1lcykgLS0+XG4gICAgICAgICAgQGlmIChpdGVtKCkubmFtZSAmJiBpdGVtKCkuaXNDdXN0b20gJiYgY2FuRGVsZXRlKCkpIHtcbiAgICAgICAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFtjb2xvcl09XCInZGFuZ2VyJ1wiIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdkZWxldGUnKTsgcGFuZWwuY2xvc2UoKVwiPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS10cmFzaFwiPjwvaT5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAge3sgJ0BnZW5lcmFsOmFjdGlvbnMuZGVsZXRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEluZm8gbWVzc2FnZSBmb3IgaXRlbXMgd2l0aG91dCBuYW1lcyAtLT5cbiAgICAgICAgICBAaWYgKCFpdGVtKCkubmFtZSkge1xuICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcC0yIGF4LXRleHQteHMgYXgtdGV4dC1uZXV0cmFsLTUwMCBheC1pdGFsaWNcIj5cbiAgICAgICAgICAgIHt7ICdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMubm8tbmFtZS1pbmZvJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIENoaWxkcmVuIC0tPlxuICBAaWYgKGl0ZW0oKS5jaGlsZHJlbiAmJiBpdGVtKCkuY2hpbGRyZW4hLmxlbmd0aCA+IDAgJiYgaXNFeHBhbmRlZCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX2NoaWxkcmVuXCIgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJpdGVtKCkuY2hpbGRyZW4hXCJcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCI+XG4gICAgQGZvciAoY2hpbGQgb2YgaXRlbSgpLmNoaWxkcmVuITsgdHJhY2sgY2hpbGQubmFtZSB8fCBjaGlsZC5wYXRoIHx8ICRpbmRleCkge1xuICAgIDxheG0tbWVudS10cmVlLWl0ZW0gW2l0ZW1dPVwiY2hpbGRcIiBbbGV2ZWxdPVwibGV2ZWwoKSArIDFcIiBbY2FuRGVsZXRlXT1cImNhbkRlbGV0ZSgpXCJcbiAgICAgIChhY3Rpb25UcmlnZ2VyZWQpPVwiYWN0aW9uVHJpZ2dlcmVkLmVtaXQoJGV2ZW50KVwiIChpdGVtRHJvcHBlZCk9XCJpdGVtRHJvcHBlZC5lbWl0KCRldmVudClcIiAvPlxuICAgIH1cbiAgPC9kaXY+XG4gIH1cbjwvZGl2PiJdfQ==","import { AXPMenuProviderService } from '@acorex/platform/common';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport * as i0 from \"@angular/core\";\n//#region ---- Menu Management Service ----\nexport class AXPMenuManagementService {\n constructor() {\n //#region ---- Dependencies ----\n this.settingService = inject(AXPSettingService);\n this.menuProviderService = inject(AXPMenuProviderService);\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Get all menu items with customization metadata\n */\n async getMenuTree(scope) {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n // Convert to nodes with metadata\n return this.convertToNodes(baseItems, customization);\n }\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope) {\n try {\n const scopedSettings = this.settingService.scope(scope);\n const saved = await scopedSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n if (saved && saved.version) {\n return saved;\n }\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n catch (error) {\n console.warn('Failed to load menu customization, using defaults', error);\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope, customization) {\n const scopedSettings = this.settingService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n /**\n * Hide a menu item\n */\n async hideMenuItem(scope, menuName) {\n if (!menuName) {\n throw new Error('Menu item must have a name to be hidden');\n }\n const customization = await this.loadCustomization(scope);\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n customization.overrides[menuName].hidden = true;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Show a menu item\n */\n async showMenuItem(scope, menuName) {\n if (!menuName) {\n throw new Error('Menu item must have a name to be shown');\n }\n const customization = await this.loadCustomization(scope);\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n // Clean up if no other overrides exist\n if (Object.keys(customization.overrides[menuName]).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item priority\n */\n async updateMenuPriority(scope, menuName, priority) {\n const customization = await this.loadCustomization(scope);\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n customization.overrides[menuName].priority = priority;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Move menu item to different parent\n */\n async moveMenuItem(scope, menuName, newParentName) {\n const customization = await this.loadCustomization(scope);\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n if (newParentName) {\n customization.overrides[menuName].parentName = newParentName;\n }\n else {\n delete customization.overrides[menuName].parentName;\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item properties\n */\n async updateMenuProperties(scope, menuName, properties) {\n const customization = await this.loadCustomization(scope);\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n await this.saveCustomization(scope, customization);\n }\n /**\n * Add custom menu item\n */\n async addCustomMenuItem(scope, menuItem) {\n const customization = await this.loadCustomization(scope);\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n customization.customItems.push(menuItem);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update custom menu item\n */\n async updateCustomMenuItem(scope, menuName, menuItem) {\n const customization = await this.loadCustomization(scope);\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n if (index !== -1) {\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n }\n /**\n * Delete custom menu item\n */\n async deleteCustomMenuItem(scope, menuName) {\n const customization = await this.loadCustomization(scope);\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Reset all customizations for a scope\n */\n async resetCustomizations(scope) {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n /**\n * Reorder menu items based on drag-drop\n */\n async reorderMenuItems(scope, items, parentName) {\n const customization = await this.loadCustomization(scope);\n // Update priorities for all items at this level (only for items with names)\n items.forEach((item, index) => {\n if (item.name) {\n if (!customization.overrides[item.name]) {\n customization.overrides[item.name] = {};\n }\n customization.overrides[item.name].priority = index * 100;\n // Update parent if moved\n if (parentName !== undefined) {\n customization.overrides[item.name].parentName = parentName || undefined;\n }\n // Recursively handle children\n if (item.children && item.children.length > 0) {\n this.reorderChildrenRecursive(customization, item.children, item.name);\n }\n }\n });\n await this.saveCustomization(scope, customization);\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Convert menu items to nodes with metadata\n */\n convertToNodes(items, customization) {\n const nodes = items.map((item) => {\n // Only use items that have a proper name property\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n const node = {\n ...item,\n name: itemName,\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: undefined,\n // Apply priority override if it exists\n priority: override?.priority !== undefined ? override.priority : item.priority,\n children: item.children ? this.convertToNodes(item.children, customization) : undefined,\n };\n return node;\n });\n // Sort by priority (after applying overrides)\n nodes.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n return nodes;\n }\n /**\n * Recursively update children priorities\n */\n reorderChildrenRecursive(customization, children, parentName) {\n children.forEach((child, index) => {\n if (child.name) {\n if (!customization.overrides[child.name]) {\n customization.overrides[child.name] = {};\n }\n customization.overrides[child.name].priority = index * 100;\n if (parentName) {\n customization.overrides[child.name].parentName = parentName;\n }\n }\n if (child.children && child.children.length > 0) {\n this.reorderChildrenRecursive(customization, child.children, child.name);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPMenuManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPMenuManagementService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPMenuManagementService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9tZW51LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUd4RywrQ0FBK0M7QUFHL0MsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUdJLG9DQUFvQztRQUU1QixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBcVNoRTtJQW5TRyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUF1QjtRQUNyQyxrRUFBa0U7UUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFNUQsMENBQTBDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFELGlDQUFpQztRQUNqQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lB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RUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM3QyxDQUFDO2dCQUVELGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUUzRCxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNiLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQ2hFLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBdlNRLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRFgsTUFBTTs7MkZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBNZW51SXRlbSwgQVhQTWVudVByb3ZpZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQsIEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZIH0gZnJvbSAnLi9tZW51LWN1c3RvbWl6YXRpb24uY29uc3QnO1xuaW1wb3J0IHsgQVhQTWVudUN1c3RvbWl6YXRpb24sIEFYUE1lbnVJdGVtTm9kZSwgQVhQTWVudUl0ZW1PdmVycmlkZSB9IGZyb20gJy4vbWVudS1jdXN0b21pemF0aW9uLnR5cGVzJztcblxuLy8jcmVnaW9uIC0tLS0gICBNZW51IE1hbmFnZW1lbnQgU2VydmljZSAgIC0tLS1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBNZW51TWFuYWdlbWVudFNlcnZpY2Uge1xuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIG1lbnVQcm92aWRlclNlcnZpY2UgPSBpbmplY3QoQVhQTWVudVByb3ZpZGVyU2VydmljZSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIE1ldGhvZHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIG1lbnUgaXRlbXMgd2l0aCBjdXN0b21pemF0aW9uIG1ldGFkYXRhXG4gICAgICovXG4gICAgYXN5bmMgZ2V0TWVudVRyZWUoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUpOiBQcm9taXNlPEFYUE1lbnVJdGVtTm9kZVtdPiB7XG4gICAgICAgIC8vIEdldCBSQVcgbWVudSBpdGVtcyBXSVRIT1VUIG1pZGRsZXdhcmUgKGZvciBtYW5hZ2VtZW50IHB1cnBvc2VzKVxuICAgICAgICBjb25zdCBiYXNlSXRlbXMgPSBhd2FpdCB0aGlzLm1lbnVQcm92aWRlclNlcnZpY2UucmF3SXRlbXMoKTtcblxuICAgICAgICAvLyBMb2FkIGN1c3RvbWl6YXRpb25zIGZvciB0aGUgZ2l2ZW4gc2NvcGVcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gbm9kZXMgd2l0aCBtZXRhZGF0YVxuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Ob2RlcyhiYXNlSXRlbXMsIGN1c3RvbWl6YXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgbWVudSBjdXN0b21pemF0aW9uIGZvciBhIHNwZWNpZmljIHNjb3BlXG4gICAgICovXG4gICAgYXN5bmMgbG9hZEN1c3RvbWl6YXRpb24oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUpOiBQcm9taXNlPEFYUE1lbnVDdXN0b21pemF0aW9uPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzY29wZWRTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2NvcGUoc2NvcGUpO1xuICAgICAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBzY29wZWRTZXR0aW5ncy5nZXQ8QVhQTWVudUN1c3RvbWl6YXRpb24+KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZKTtcblxuICAgICAgICAgICAgaWYgKHNhdmVkICYmIHNhdmVkLnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbWVudSBjdXN0b21pemF0aW9uLCB1c2luZyBkZWZhdWx0cycsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmUgbWVudSBjdXN0b21pemF0aW9uIGZvciBhIHNwZWNpZmljIHNjb3BlXG4gICAgICovXG4gICAgYXN5bmMgc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHNjb3BlZFNldHRpbmdzID0gdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShzY29wZSk7XG4gICAgICAgIGF3YWl0IHNjb3BlZFNldHRpbmdzLnNldChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0tFWSwgY3VzdG9taXphdGlvbik7XG5cbiAgICAgICAgLy8gQ2xlYXIgbWVudSBjYWNoZSB0byBmb3JjZSByZWxvYWRcbiAgICAgICAgdGhpcy5tZW51UHJvdmlkZXJTZXJ2aWNlLmNsZWFyQ2FjaGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIGEgbWVudSBpdGVtXG4gICAgICovXG4gICAgYXN5bmMgaGlkZU1lbnVJdGVtKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBtZW51TmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghbWVudU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWVudSBpdGVtIG11c3QgaGF2ZSBhIG5hbWUgdG8gYmUgaGlkZGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICAgICAgaWYgKCFjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0pIHtcbiAgICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbiA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBhIG1lbnUgaXRlbVxuICAgICAqL1xuICAgIGFzeW5jIHNob3dNZW51SXRlbShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIW1lbnVOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01lbnUgaXRlbSBtdXN0IGhhdmUgYSBuYW1lIHRvIGJlIHNob3duJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSkge1xuICAgICAgICAgICAgZGVsZXRlIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5oaWRkZW47XG5cbiAgICAgICAgICAgIC8vIENsZWFuIHVwIGlmIG5vIG90aGVyIG92ZXJyaWRlcyBleGlzdFxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJpb3JpdHlcbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVNZW51UHJpb3JpdHkoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIHByaW9yaXR5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgICAgIGlmICghY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5wcmlvcml0eSA9IHByaW9yaXR5O1xuXG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmUgbWVudSBpdGVtIHRvIGRpZmZlcmVudCBwYXJlbnRcbiAgICAgKi9cbiAgICBhc3luYyBtb3ZlTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIG5ld1BhcmVudE5hbWU6IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgICAgIGlmICghY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdQYXJlbnROYW1lKSB7XG4gICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucGFyZW50TmFtZSA9IG5ld1BhcmVudE5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLnBhcmVudE5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgbWVudSBpdGVtIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVNZW51UHJvcGVydGllcyhcbiAgICAgICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsXG4gICAgICAgIG1lbnVOYW1lOiBzdHJpbmcsXG4gICAgICAgIHByb3BlcnRpZXM6IFBhcnRpYWw8QVhQTWVudUl0ZW0+XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uKHNjb3BlKTtcblxuICAgICAgICBpZiAoIWN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSkge1xuICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgY3VzdG9tIG1lbnUgaXRlbVxuICAgICAqL1xuICAgIGFzeW5jIGFkZEN1c3RvbU1lbnVJdGVtKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBtZW51SXRlbTogQVhQTWVudUl0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIHVuaXF1ZSBuYW1lIGlmIG5vdCBwcm92aWRlZFxuICAgICAgICBpZiAoIW1lbnVJdGVtLm5hbWUpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLm5hbWUgPSBgY3VzdG9tLW1lbnUtJHtEYXRlLm5vdygpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLnB1c2gobWVudUl0ZW0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBjdXN0b20gbWVudSBpdGVtXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlQ3VzdG9tTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIG1lbnVJdGVtOiBBWFBNZW51SXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtZW51TmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY3VzdG9taXphdGlvbi5jdXN0b21JdGVtc1tpbmRleF0gPSBtZW51SXRlbTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGN1c3RvbSBtZW51IGl0ZW1cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVDdXN0b21NZW51SXRlbShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICAgICAgY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcyA9IGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm5hbWUgIT09IG1lbnVOYW1lKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBhbGwgY3VzdG9taXphdGlvbnMgZm9yIGEgc2NvcGVcbiAgICAgKi9cbiAgICBhc3luYyByZXNldEN1c3RvbWl6YXRpb25zKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIG1lbnUgaXRlbXMgYmFzZWQgb24gZHJhZy1kcm9wXG4gICAgICovXG4gICAgYXN5bmMgcmVvcmRlck1lbnVJdGVtcyhcbiAgICAgICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsXG4gICAgICAgIGl0ZW1zOiBBWFBNZW51SXRlbU5vZGVbXSxcbiAgICAgICAgcGFyZW50TmFtZT86IHN0cmluZ1xuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHByaW9yaXRpZXMgZm9yIGFsbCBpdGVtcyBhdCB0aGlzIGxldmVsIChvbmx5IGZvciBpdGVtcyB3aXRoIG5hbWVzKVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgICAgICAgIGlmICghY3VzdG9taXphdGlvbi5vdmVycmlkZXNbaXRlbS5uYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1tpdGVtLm5hbWVdID0ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbaXRlbS5uYW1lXS5wcmlvcml0eSA9IGluZGV4ICogMTAwO1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHBhcmVudCBpZiBtb3ZlZFxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbaXRlbS5uYW1lXS5wYXJlbnROYW1lID0gcGFyZW50TmFtZSB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckNoaWxkcmVuUmVjdXJzaXZlKGN1c3RvbWl6YXRpb24sIGl0ZW0uY2hpbGRyZW4sIGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBtZW51IGl0ZW1zIHRvIG5vZGVzIHdpdGggbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRUb05vZGVzKGl0ZW1zOiBBWFBNZW51SXRlbVtdLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IEFYUE1lbnVJdGVtTm9kZVtdIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIC8vIE9ubHkgdXNlIGl0ZW1zIHRoYXQgaGF2ZSBhIHByb3BlciBuYW1lIHByb3BlcnR5XG4gICAgICAgICAgICBjb25zdCBpdGVtTmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJyaWRlID0gaXRlbU5hbWUgPyBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1tpdGVtTmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBpc0N1c3RvbSA9IGl0ZW1OYW1lID8gY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5zb21lKChjaSkgPT4gY2kubmFtZSA9PT0gaXRlbU5hbWUpIDogZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IG5vZGU6IEFYUE1lbnVJdGVtTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW1OYW1lLFxuICAgICAgICAgICAgICAgIGlzQnVpbHRJbjogIWlzQ3VzdG9tLFxuICAgICAgICAgICAgICAgIGlzQ3VzdG9tLFxuICAgICAgICAgICAgICAgIGlzSGlkZGVuOiBvdmVycmlkZT8uaGlkZGVuIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJpb3JpdHk6IGl0ZW0ucHJpb3JpdHksXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxQYXJlbnROYW1lOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgLy8gQXBwbHkgcHJpb3JpdHkgb3ZlcnJpZGUgaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICAgICAgcHJpb3JpdHk6IG92ZXJyaWRlPy5wcmlvcml0eSAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGUucHJpb3JpdHkgOiBpdGVtLnByaW9yaXR5LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuID8gdGhpcy5jb252ZXJ0VG9Ob2RlcyhpdGVtLmNoaWxkcmVuLCBjdXN0b21pemF0aW9uKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTb3J0IGJ5IHByaW9yaXR5IChhZnRlciBhcHBseWluZyBvdmVycmlkZXMpXG4gICAgICAgIG5vZGVzLnNvcnQoKGEsIGIpID0+IChhLnByaW9yaXR5ID8/IDApIC0gKGIucHJpb3JpdHkgPz8gMCkpO1xuXG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSB1cGRhdGUgY2hpbGRyZW4gcHJpb3JpdGllc1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVvcmRlckNoaWxkcmVuUmVjdXJzaXZlKFxuICAgICAgICBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbixcbiAgICAgICAgY2hpbGRyZW46IEFYUE1lbnVJdGVtTm9kZVtdLFxuICAgICAgICBwYXJlbnROYW1lPzogc3RyaW5nXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2NoaWxkLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2NoaWxkLm5hbWVdID0ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbY2hpbGQubmFtZV0ucHJpb3JpdHkgPSBpbmRleCAqIDEwMDtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2NoaWxkLm5hbWVdLnBhcmVudE5hbWUgPSBwYXJlbnROYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuICYmIGNoaWxkLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJDaGlsZHJlblJlY3Vyc2l2ZShjdXN0b21pemF0aW9uLCBjaGlsZC5jaGlsZHJlbiwgY2hpbGQubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBaseComponent, AXPPageLayoutBase, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXMMenuTreeItemComponent } from '../../components/menu-tree-item/menu-tree-item.component';\nimport { AXPMenuManagementService } from '../../menu-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/core/translation\";\n//#region ---- Menu List Component ----\nexport class AXMMenuListComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Dependencies ----\n this.menuManagementService = inject(AXPMenuManagementService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.dialogService = inject(AXDialogService);\n this.toastService = inject(AXToastService);\n this.translationService = inject(AXTranslationService);\n this.route = inject(ActivatedRoute);\n //#endregion\n //#region ---- Component State ----\n this.menuItems = signal([], ...(ngDevMode ? [{ debugName: \"menuItems\" }] : []));\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.error = signal('', ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n this.currentScope = signal(AXPPlatformScope.User, ...(ngDevMode ? [{ debugName: \"currentScope\" }] : []));\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Get scope from route\n this.route.params.subscribe(async (params) => {\n const scope = params['scope'];\n if (scope) {\n this.currentScope.set(scope);\n await this.loadMenuItems();\n this.recompute(); // Update page header after loading\n }\n });\n }\n //#endregion\n //#region ---- Data Loading ----\n /**\n * Load menu items for current scope\n */\n async loadMenuItems() {\n try {\n this.isLoading.set(true);\n this.error.set('');\n const items = await this.menuManagementService.getMenuTree(this.currentScope());\n this.menuItems.set(items);\n this.recompute();\n }\n catch (error) {\n this.error.set(error instanceof Error ? error.message : 'Failed to load menu items');\n this.toastService.danger('@application-management:menu-management.messages.load-error');\n }\n finally {\n this.isLoading.set(false);\n }\n }\n //#endregion\n //#region ---- Page Layout Interface ----\n /**\n * Get page title\n */\n async getPageTitle() {\n const scopeName = this.currentScope();\n const scopeKey = scopeName === AXPPlatformScope.User ? 'user' : 'tenant';\n return this.translationService.translateAsync(`@application-management:menu-management.${scopeKey}.title`);\n }\n /**\n * Get page description\n */\n async getPageDescription() {\n return this.translationService.translateAsync('@application-management:menu-management.description');\n }\n /**\n * Get primary menu items (actions)\n */\n async getPrimaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@application-management:menu-management.actions.add-root'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n command: { name: 'add-root' },\n },\n ];\n }\n /**\n * Get secondary menu items\n */\n async getSecondaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@application-management:menu-management.actions.reset'),\n icon: 'fa-light fa-rotate-left',\n color: 'danger',\n command: { name: 'reset' },\n },\n ];\n }\n /**\n * Execute commands from page actions\n */\n async execute(command) {\n switch (command.name) {\n case 'add-root':\n await this.addRootMenuItem();\n break;\n case 'reset':\n await this.resetCustomizations();\n break;\n }\n }\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle menu item action\n */\n async onActionTriggered(event) {\n const { action, item } = event;\n switch (action) {\n case 'show':\n await this.showMenuItem(item);\n break;\n case 'hide':\n await this.hideMenuItem(item);\n break;\n case 'edit':\n await this.editMenuItem(item);\n break;\n case 'delete':\n await this.deleteMenuItem(item);\n break;\n case 'add-child':\n await this.addChildMenuItem(item);\n break;\n }\n }\n /**\n * Handle drag and drop\n */\n async onItemDropped(event) {\n try {\n if (event.previousContainer === event.container) {\n // Same container - just reorder\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n }\n else {\n // Different container - move between parents\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n }\n // Update signal to reflect the new order immediately\n this.menuItems.set([...this.menuItems()]);\n // Find which parent owns the target container and save with correct context\n const targetParent = this.findParentOfContainer(event.container.data, this.menuItems());\n const targetParentName = targetParent?.name;\n // Save the reordered items with their parent context\n await this.menuManagementService.reorderMenuItems(this.currentScope(), event.container.data, targetParentName);\n // If moved between containers, also update the source container\n if (event.previousContainer !== event.container) {\n const sourceParent = this.findParentOfContainer(event.previousContainer.data, this.menuItems());\n const sourceParentName = sourceParent?.name;\n await this.menuManagementService.reorderMenuItems(this.currentScope(), event.previousContainer.data, sourceParentName);\n }\n this.toastService.success('@application-management:menu-management.messages.reorder-success');\n // Don't reload - signal is already updated and changes are saved\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.reorder-error');\n // Reload on error to revert changes\n await this.loadMenuItems();\n }\n }\n /**\n * Find the parent item that owns a given children array\n */\n findParentOfContainer(containerData, items) {\n // Check if this is the root level\n if (containerData === items) {\n return null; // Root level has no parent\n }\n // Recursively search for the parent\n for (const item of items) {\n if (item.children === containerData) {\n return item;\n }\n if (item.children) {\n const found = this.findParentOfContainer(containerData, item.children);\n if (found !== undefined) {\n return found;\n }\n }\n }\n return undefined; // Not found (shouldn't happen)\n }\n /**\n * Add new root menu item\n */\n async addRootMenuItem() {\n await this.showMenuItemDialog(null);\n }\n /**\n * Reset customizations\n */\n async resetCustomizations() {\n const confirmed = await this.dialogService.confirm('@application-management:menu-management.reset.title', '@application-management:menu-management.reset.message');\n if (!confirmed)\n return;\n try {\n await this.menuManagementService.resetCustomizations(this.currentScope());\n this.toastService.success('@application-management:menu-management.messages.reset-success');\n await this.loadMenuItems();\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.reset-error');\n }\n }\n //#endregion\n //#region ---- Menu Item Actions ----\n /**\n * Show menu item\n */\n async showMenuItem(item) {\n try {\n if (!item.name)\n return;\n await this.menuManagementService.showMenuItem(this.currentScope(), item.name);\n this.toastService.success('@application-management:menu-management.messages.show-success');\n await this.loadMenuItems();\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.show-error');\n }\n }\n /**\n * Hide menu item\n */\n async hideMenuItem(item) {\n try {\n if (!item.name)\n return;\n await this.menuManagementService.hideMenuItem(this.currentScope(), item.name);\n this.toastService.success('@application-management:menu-management.messages.hide-success');\n await this.loadMenuItems();\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.hide-error');\n }\n }\n /**\n * Edit menu item\n */\n async editMenuItem(item) {\n await this.showMenuItemDialog(item);\n }\n /**\n * Delete custom menu item\n */\n async deleteMenuItem(item) {\n const confirmed = await this.dialogService.confirm('@general:actions.delete.title', '@application-management:menu-management.delete.message');\n if (!confirmed)\n return;\n try {\n if (!item.name)\n return;\n await this.menuManagementService.deleteCustomMenuItem(this.currentScope(), item.name);\n this.toastService.success('@application-management:menu-management.messages.delete-success');\n await this.loadMenuItems();\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.delete-error');\n }\n }\n /**\n * Add child menu item\n */\n async addChildMenuItem(parent) {\n await this.showMenuItemDialog(null, parent);\n }\n //#endregion\n //#region ---- Dialog Helpers ----\n /**\n * Show menu item dialog (add/edit)\n */\n async showMenuItemDialog(item, parent) {\n const isEdit = !!item;\n const title = isEdit\n ? '@application-management:menu-management.edit-dialog.title'\n : '@application-management:menu-management.add-dialog.title';\n const context = {\n name: item?.name || '',\n text: item?.text || '',\n icon: item?.icon || '',\n path: item?.path || '',\n priority: item?.priority || 0,\n description: item?.description || '',\n };\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(title)\n .setContext(context)\n .content((flex) => {\n flex\n .setDirection('column')\n .formField('@application-management:menu-management.fields.name', (field) => {\n field.path('name');\n field.textBox({\n placeholder: '@application-management:menu-management.fields.name',\n validations: [{ rule: 'required' }],\n readonly: isEdit && item?.isBuiltIn,\n });\n })\n .formField('@application-management:menu-management.fields.text', (field) => {\n field.path('text');\n field.textBox({\n placeholder: '@application-management:menu-management.fields.text',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@application-management:menu-management.fields.icon', (field) => {\n field.path('icon');\n field.textBox({\n placeholder: '@application-management:menu-management.fields.icon',\n });\n })\n .formField('@application-management:menu-management.fields.path', (field) => {\n field.path('path');\n field.textBox({\n placeholder: '@application-management:menu-management.fields.path',\n });\n })\n .formField('@application-management:menu-management.fields.priority', (field) => {\n field.path('priority');\n field.numberBox({\n placeholder: '@application-management:menu-management.fields.priority',\n });\n })\n .formField('@application-management:menu-management.fields.description', (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@application-management:menu-management.fields.description',\n rows: 3,\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n });\n })\n .show();\n const action = dialogRef.action();\n if (action === 'cancel') {\n dialogRef.close();\n return;\n }\n const formData = dialogRef.context();\n try {\n if (isEdit && item?.name) {\n // Update existing item\n if (item.isCustom) {\n await this.menuManagementService.updateCustomMenuItem(this.currentScope(), item.name, formData);\n }\n else {\n await this.menuManagementService.updateMenuProperties(this.currentScope(), item.name, formData);\n }\n }\n else {\n // Add new custom item\n const newItem = {\n name: formData.name,\n text: formData.text,\n icon: formData.icon,\n path: formData.path,\n priority: formData.priority,\n description: formData.description,\n };\n // If parent is specified, add as child\n if (parent?.name) {\n // This would require adding logic to insert as child\n // For now, add as root level item\n }\n await this.menuManagementService.addCustomMenuItem(this.currentScope(), newItem);\n }\n this.toastService.success('@application-management:menu-management.messages.save-success');\n await this.loadMenuItems();\n dialogRef.close();\n }\n catch (error) {\n this.toastService.danger('@application-management:menu-management.messages.save-error');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMMenuListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXMMenuListComponent, isStandalone: true, selector: \"axm-menu-list\", host: { classAttribute: \"axm-menu-list-page\" }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"('@application-management:menu-management.loading.title' | translate | async) || 'Loading...'\\\"\\n [description]=\\\"\\n ('@application-management:menu-management.loading.description' | translate | async) || 'Please wait'\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"('@application-management:menu-management.error.title' | translate | async) || 'Error'\\\"\\n [description]=\\\"error() || 'An error occurred'\\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (menuItems().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"('@application-management:menu-management.empty-state.title' | translate | async) || 'No menu items'\\\"\\n [description]=\\\"\\n ('@application-management:menu-management.empty-state.description' | translate | async) ||\\n 'Add a new menu item to get started'\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@application-management:menu-management.actions.add-root' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Info Banner -->\\n <div class=\\\"axm-menu-list__info-banner\\\">\\n <i class=\\\"fa-light fa-info-circle\\\"></i>\\n <span>{{ '@application-management:menu-management.info-banner' | translate | async }}</span>\\n </div>\\n\\n <!-- Menu Tree -->\\n <div\\n class=\\\"axm-menu-list__tree\\\"\\n cdkDropList\\n [cdkDropListData]=\\\"menuItems()\\\"\\n (cdkDropListDropped)=\\\"onItemDropped($event)\\\"\\n >\\n @for (item of menuItems(); track item.name || item.path || $index) {\\n <axm-menu-tree-item\\n [item]=\\\"item\\\"\\n [level]=\\\"0\\\"\\n [canDelete]=\\\"true\\\"\\n (actionTriggered)=\\\"onActionTriggered($event)\\\"\\n (itemDropped)=\\\"onItemDropped($event)\\\"\\n />\\n }\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__info-banner{display:flex;align-items:center;gap:.75rem;border-radius:.375rem;padding:1rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-list__info-banner i{font-size:1.125rem;line-height:1.75rem}.axm-menu-list-page .axm-menu-list__info-banner span{font-size:.875rem;line-height:1.25rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"component\", type: AXMMenuTreeItemComponent, selector: \"axm-menu-tree-item\", inputs: [\"item\", \"level\", \"canDelete\"], outputs: [\"actionTriggered\", \"itemDropped\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMMenuListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-menu-list', standalone: true, imports: [\n CommonModule,\n CdkDropList,\n AXButtonModule,\n AXTranslationModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXMMenuTreeItemComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], host: { class: 'axm-menu-list-page' }, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"('@application-management:menu-management.loading.title' | translate | async) || 'Loading...'\\\"\\n [description]=\\\"\\n ('@application-management:menu-management.loading.description' | translate | async) || 'Please wait'\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"('@application-management:menu-management.error.title' | translate | async) || 'Error'\\\"\\n [description]=\\\"error() || 'An error occurred'\\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (menuItems().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"('@application-management:menu-management.empty-state.title' | translate | async) || 'No menu items'\\\"\\n [description]=\\\"\\n ('@application-management:menu-management.empty-state.description' | translate | async) ||\\n 'Add a new menu item to get started'\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@application-management:menu-management.actions.add-root' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Info Banner -->\\n <div class=\\\"axm-menu-list__info-banner\\\">\\n <i class=\\\"fa-light fa-info-circle\\\"></i>\\n <span>{{ '@application-management:menu-management.info-banner' | translate | async }}</span>\\n </div>\\n\\n <!-- Menu Tree -->\\n <div\\n class=\\\"axm-menu-list__tree\\\"\\n cdkDropList\\n [cdkDropListData]=\\\"menuItems()\\\"\\n (cdkDropListDropped)=\\\"onItemDropped($event)\\\"\\n >\\n @for (item of menuItems(); track item.name || item.path || $index) {\\n <axm-menu-tree-item\\n [item]=\\\"item\\\"\\n [level]=\\\"0\\\"\\n [canDelete]=\\\"true\\\"\\n (actionTriggered)=\\\"onActionTriggered($event)\\\"\\n (itemDropped)=\\\"onItemDropped($event)\\\"\\n />\\n }\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__info-banner{display:flex;align-items:center;gap:.75rem;border-radius:.375rem;padding:1rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-list__info-banner i{font-size:1.125rem;line-height:1.75rem}.axm-menu-list-page .axm-menu-list__info-banner span{font-size:.875rem;line-height:1.25rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L3BhZ2VzL21lbnUtbGlzdC9tZW51LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvcGFnZXMvbWVudS1saXN0L21lbnUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0MsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFP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c0IsNERBQ3RCLDRCQUE0QixnaUJBQzVCLHdCQUF3QiwySEFDeEIsd0JBQXdCOzsyRkFjbkIsb0JBQW9CO2tCQXpCaEMsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUMzQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHNCQUFzQjt5QkFDcEM7cUJBQ0osUUFDSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUsIEFYUEFjdGlvbk1lbnVJdGVtLCBBWFBFeGVjdXRlQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LCBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCwgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBNZW51TWFuYWdlbWVudENvbmZpZyB9IGZyb20gJy4uLy4uL21lbnUtY3VzdG9taXphdGlvbi5jb25zdCc7XG5pbXBvcnQgeyBBWFBNZW51SXRlbUFjdGlvbiwgQVhQTWVudUl0ZW1Ob2RlIH0gZnJvbSAnLi4vLi4vbWVudS1jdXN0b21pemF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYTU1lbnVUcmVlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVudS10cmVlLWl0ZW0vbWVudS10cmVlLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUE1lbnVNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL21lbnUtbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBNZW51IExpc3QgQ29tcG9uZW50ICAgLS0tLVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4bS1tZW51LWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIENka0Ryb3BMaXN0LFxuICAgICAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICAgICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICBBWE1NZW51VHJlZUl0ZW1Db21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBBWE1NZW51TGlzdENvbXBvbmVudCxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdheG0tbWVudS1saXN0LXBhZ2UnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTU1lbnVMaXN0Q29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIG1lbnVNYW5hZ2VtZW50U2VydmljZSA9IGluamVjdChBWFBNZW51TWFuYWdlbWVudFNlcnZpY2UpO1xuICAgIHByaXZhdGUgbGF5b3V0QnVpbGRlciA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50IFN0YXRlICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIG1lbnVJdGVtcyA9IHNpZ25hbDxBWFBNZW51SXRlbU5vZGVbXT4oW10pO1xuICAgIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByb3RlY3RlZCBlcnJvciA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgY3VycmVudFNjb3BlID0gc2lnbmFsPEFYUFBsYXRmb3JtU2NvcGU+KEFYUFBsYXRmb3JtU2NvcGUuVXNlcik7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlICAgLS0tLVxuXG4gICAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgLy8gR2V0IHNjb3BlIGZyb20gcm91dGVcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjb3BlID0gcGFyYW1zWydzY29wZSddIGFzIEFYUFBsYXRmb3JtU2NvcGU7XG4gICAgICAgICAgICBpZiAoc2NvcGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTY29wZS5zZXQoc2NvcGUpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVjb21wdXRlKCk7IC8vIFVwZGF0ZSBwYWdlIGhlYWRlciBhZnRlciBsb2FkaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIExvYWRpbmcgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBMb2FkIG1lbnUgaXRlbXMgZm9yIGN1cnJlbnQgc2NvcGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1lbnVJdGVtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KCcnKTtcblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5nZXRNZW51VHJlZSh0aGlzLmN1cnJlbnRTY29wZSgpKTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNldChpdGVtcyk7XG4gICAgICAgICAgICB0aGlzLnJlY29tcHV0ZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnJvci5zZXQoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnRmFpbGVkIHRvIGxvYWQgbWVudSBpdGVtcycpO1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMubG9hZC1lcnJvcicpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIExheW91dCBJbnRlcmZhY2UgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgcGFnZSB0aXRsZVxuICAgICAqL1xuICAgIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBzY29wZU5hbWUgPSB0aGlzLmN1cnJlbnRTY29wZSgpO1xuICAgICAgICBjb25zdCBzY29wZUtleSA9IHNjb3BlTmFtZSA9PT0gQVhQUGxhdGZvcm1TY29wZS5Vc2VyID8gJ3VzZXInIDogJ3RlbmFudCc7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhgQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LiR7c2NvcGVLZXl9LnRpdGxlYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHBhZ2UgZGVzY3JpcHRpb25cbiAgICAgKi9cbiAgICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZGVzY3JpcHRpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgcHJpbWFyeSBtZW51IGl0ZW1zIChhY3Rpb25zKVxuICAgICAqL1xuICAgIG92ZXJyaWRlIGFzeW5jIGdldFByaW1hcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5hZGQtcm9vdCcpLFxuICAgICAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbHVzJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2FkZC1yb290JyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2Vjb25kYXJ5IG1lbnUgaXRlbXNcbiAgICAgKi9cbiAgICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5yZXNldCcpLFxuICAgICAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1yb3RhdGUtbGVmdCcsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ3Jlc2V0JyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlIGNvbW1hbmRzIGZyb20gcGFnZSBhY3Rpb25zXG4gICAgICovXG4gICAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnYWRkLXJvb3QnOlxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRkUm9vdE1lbnVJdGVtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNldEN1c3RvbWl6YXRpb25zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgbWVudSBpdGVtIGFjdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyBvbkFjdGlvblRyaWdnZXJlZChldmVudDogeyBhY3Rpb246IEFYUE1lbnVJdGVtQWN0aW9uOyBpdGVtOiBBWFBNZW51SXRlbU5vZGUgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGFjdGlvbiwgaXRlbSB9ID0gZXZlbnQ7XG5cbiAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd01lbnVJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oaWRlTWVudUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVkaXRNZW51SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVNZW51SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZC1jaGlsZCc6XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRDaGlsZE1lbnVJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGRyYWcgYW5kIGRyb3BcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgb25JdGVtRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8QVhQTWVudUl0ZW1Ob2RlW10+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIC8vIFNhbWUgY29udGFpbmVyIC0ganVzdCByZW9yZGVyXG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgY29udGFpbmVyIC0gbW92ZSBiZXR3ZWVuIHBhcmVudHNcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBzaWduYWwgdG8gcmVmbGVjdCB0aGUgbmV3IG9yZGVyIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zZXQoWy4uLnRoaXMubWVudUl0ZW1zKCldKTtcblxuICAgICAgICAgICAgLy8gRmluZCB3aGljaCBwYXJlbnQgb3ducyB0aGUgdGFyZ2V0IGNvbnRhaW5lciBhbmQgc2F2ZSB3aXRoIGNvcnJlY3QgY29udGV4dFxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gdGhpcy5maW5kUGFyZW50T2ZDb250YWluZXIoZXZlbnQuY29udGFpbmVyLmRhdGEsIHRoaXMubWVudUl0ZW1zKCkpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UGFyZW50TmFtZSA9IHRhcmdldFBhcmVudD8ubmFtZTtcblxuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgcmVvcmRlcmVkIGl0ZW1zIHdpdGggdGhlaXIgcGFyZW50IGNvbnRleHRcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLnJlb3JkZXJNZW51SXRlbXMoXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2NvcGUoKSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXJlbnROYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBJZiBtb3ZlZCBiZXR3ZWVuIGNvbnRhaW5lcnMsIGFsc28gdXBkYXRlIHRoZSBzb3VyY2UgY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgIT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhcmVudCA9IHRoaXMuZmluZFBhcmVudE9mQ29udGFpbmVyKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIHRoaXMubWVudUl0ZW1zKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhcmVudE5hbWUgPSBzb3VyY2VQYXJlbnQ/Lm5hbWU7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5yZW9yZGVyTWVudUl0ZW1zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTY29wZSgpLFxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VQYXJlbnROYW1lXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnJlb3JkZXItc3VjY2VzcycpO1xuICAgICAgICAgICAgLy8gRG9uJ3QgcmVsb2FkIC0gc2lnbmFsIGlzIGFscmVhZHkgdXBkYXRlZCBhbmQgY2hhbmdlcyBhcmUgc2F2ZWRcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnJlb3JkZXItZXJyb3InKTtcbiAgICAgICAgICAgIC8vIFJlbG9hZCBvbiBlcnJvciB0byByZXZlcnQgY2hhbmdlc1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kIHRoZSBwYXJlbnQgaXRlbSB0aGF0IG93bnMgYSBnaXZlbiBjaGlsZHJlbiBhcnJheVxuICAgICAqL1xuICAgIHByaXZhdGUgZmluZFBhcmVudE9mQ29udGFpbmVyKFxuICAgICAgICBjb250YWluZXJEYXRhOiBBWFBNZW51SXRlbU5vZGVbXSxcbiAgICAgICAgaXRlbXM6IEFYUE1lbnVJdGVtTm9kZVtdXG4gICAgKTogQVhQTWVudUl0ZW1Ob2RlIHwgbnVsbCB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIHJvb3QgbGV2ZWxcbiAgICAgICAgaWYgKGNvbnRhaW5lckRhdGEgPT09IGl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gUm9vdCBsZXZlbCBoYXMgbm8gcGFyZW50XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWN1cnNpdmVseSBzZWFyY2ggZm9yIHRoZSBwYXJlbnRcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiA9PT0gY29udGFpbmVyRGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZFBhcmVudE9mQ29udGFpbmVyKGNvbnRhaW5lckRhdGEsIGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkIGFzIGFueTsgLy8gTm90IGZvdW5kIChzaG91bGRuJ3QgaGFwcGVuKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcm9vdCBtZW51IGl0ZW1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWRkUm9vdE1lbnVJdGVtKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbURpYWxvZyhudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBjdXN0b21pemF0aW9uc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyByZXNldEN1c3RvbWl6YXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucmVzZXQudGl0bGUnLFxuICAgICAgICAgICAgJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5yZXNldC5tZXNzYWdlJ1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY29uZmlybWVkKSByZXR1cm47XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLnJlc2V0Q3VzdG9taXphdGlvbnModGhpcy5jdXJyZW50U2NvcGUoKSk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMucmVzZXQtc3VjY2VzcycpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5yZXNldC1lcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIE1lbnUgSXRlbSBBY3Rpb25zICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBtZW51IGl0ZW1cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIHNob3dNZW51SXRlbShpdGVtOiBBWFBNZW51SXRlbU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5uYW1lKSByZXR1cm47XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLnNob3dNZW51SXRlbSh0aGlzLmN1cnJlbnRTY29wZSgpLCBpdGVtLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnNob3ctc3VjY2VzcycpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIoJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zaG93LWVycm9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIG1lbnUgaXRlbVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgaGlkZU1lbnVJdGVtKGl0ZW06IEFYUE1lbnVJdGVtTm9kZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFpdGVtLm5hbWUpIHJldHVybjtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuaGlkZU1lbnVJdGVtKHRoaXMuY3VycmVudFNjb3BlKCksIGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuaGlkZS1zdWNjZXNzJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmhpZGUtZXJyb3InKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVkaXQgbWVudSBpdGVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBlZGl0TWVudUl0ZW0oaXRlbTogQVhQTWVudUl0ZW1Ob2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2hvd01lbnVJdGVtRGlhbG9nKGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBjdXN0b20gbWVudSBpdGVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBkZWxldGVNZW51SXRlbShpdGVtOiBBWFBNZW51SXRlbU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICAgICAnQGdlbmVyYWw6YWN0aW9ucy5kZWxldGUudGl0bGUnLFxuICAgICAgICAgICAgJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5kZWxldGUubWVzc2FnZSdcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0ubmFtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5kZWxldGVDdXN0b21NZW51SXRlbSh0aGlzLmN1cnJlbnRTY29wZSgpLCBpdGVtLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmRlbGV0ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcignQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmRlbGV0ZS1lcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGNoaWxkIG1lbnUgaXRlbVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgYWRkQ2hpbGRNZW51SXRlbShwYXJlbnQ6IEFYUE1lbnVJdGVtTm9kZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbURpYWxvZyhudWxsLCBwYXJlbnQpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEaWFsb2cgSGVscGVycyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIFNob3cgbWVudSBpdGVtIGRpYWxvZyAoYWRkL2VkaXQpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBzaG93TWVudUl0ZW1EaWFsb2coaXRlbTogQVhQTWVudUl0ZW1Ob2RlIHwgbnVsbCwgcGFyZW50PzogQVhQTWVudUl0ZW1Ob2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlzRWRpdCA9ICEhaXRlbTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBpc0VkaXRcbiAgICAgICAgICAgID8gJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5lZGl0LWRpYWxvZy50aXRsZSdcbiAgICAgICAgICAgIDogJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hZGQtZGlhbG9nLnRpdGxlJztcblxuICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0/LnRleHQgfHwgJycsXG4gICAgICAgICAgICBpY29uOiBpdGVtPy5pY29uIHx8ICcnLFxuICAgICAgICAgICAgcGF0aDogaXRlbT8ucGF0aCB8fCAnJyxcbiAgICAgICAgICAgIHByaW9yaXR5OiBpdGVtPy5wcmlvcml0eSB8fCAwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogYW55ID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAgIC5kaWFsb2coKGRpYWxvZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZSh0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoY29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGZsZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXREaXJlY3Rpb24oJ2NvbHVtbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5uYW1lJywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6IGlzRWRpdCAmJiBpdGVtPy5pc0J1aWx0SW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy50ZXh0JywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgndGV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy50ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMuaWNvbicsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2ljb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMuaWNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wYXRoJywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgncGF0aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wYXRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLnByaW9yaXR5JywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgncHJpb3JpdHknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wcmlvcml0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5kZXNjcmlwdGlvbicsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmxhcmdlVGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMuZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5zZXRBY3Rpb25zKChhY3Rpb25zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMuY2FuY2VsKCdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScpLnN1Ym1pdCgnQGdlbmVyYWw6YWN0aW9ucy5zYXZlLnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zaG93KCk7XG5cbiAgICAgICAgY29uc3QgYWN0aW9uID0gZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICBpZiAoYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCkgYXMgUGFydGlhbDxBWFBNZW51SXRlbT47XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChpc0VkaXQgJiYgaXRlbT8ubmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBpdGVtXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXNDdXN0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UudXBkYXRlQ3VzdG9tTWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgaXRlbS5uYW1lLCBmb3JtRGF0YSBhcyBBWFBNZW51SXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UudXBkYXRlTWVudVByb3BlcnRpZXModGhpcy5jdXJyZW50U2NvcGUoKSwgaXRlbS5uYW1lLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGN1c3RvbSBpdGVtXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbTogQVhQTWVudUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZvcm1EYXRhLm5hbWUhLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmb3JtRGF0YS50ZXh0ISxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogZm9ybURhdGEuaWNvbixcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogZm9ybURhdGEucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IGZvcm1EYXRhLnByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIElmIHBhcmVudCBpcyBzcGVjaWZpZWQsIGFkZCBhcyBjaGlsZFxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQ/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCByZXF1aXJlIGFkZGluZyBsb2dpYyB0byBpbnNlcnQgYXMgY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIG5vdywgYWRkIGFzIHJvb3QgbGV2ZWwgaXRlbVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLmFkZEN1c3RvbU1lbnVJdGVtKHRoaXMuY3VycmVudFNjb3BlKCksIG5ld0l0ZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc2F2ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc2F2ZS1lcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iLCI8YXhwLXBhZ2UtbGF5b3V0PlxuICA8YXhwLXBhZ2UtY29udGVudD5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgbW9kZT1cImxvYWRpbmdcIlxuICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtc3Bpbm5lci10aGlyZCBmYS1zcGluXCJcbiAgICAgICAgW3RpdGxlXT1cIignQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmxvYWRpbmcudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICdMb2FkaW5nLi4uJ1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAoJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5sb2FkaW5nLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnUGxlYXNlIHdhaXQnXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH0gQGVsc2UgaWYgKGVycm9yKCkpIHtcbiAgICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgbW9kZT1cImVycm9yXCJcbiAgICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNpcmNsZS1leGNsYW1hdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCIoJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5lcnJvci50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ0Vycm9yJ1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJlcnJvcigpIHx8ICdBbiBlcnJvciBvY2N1cnJlZCdcIlxuICAgICAgPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgc2xvdD1cImFjdGlvbnNcIlxuICAgICAgICAgIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLnJldHJ5LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICBbbG9va109XCInb3V0bGluZSdcIlxuICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImxvYWRNZW51SXRlbXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXJvdGF0ZS1sZWZ0XCI+PC9pPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSBpZiAobWVudUl0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIG1vZGU9XCJlbXB0eVwiXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1iYXJzXCJcbiAgICAgICAgW3RpdGxlXT1cIignQGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmVtcHR5LXN0YXRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnTm8gbWVudSBpdGVtcydcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiXG4gICAgICAgICAgKCdAYXBwbGljYXRpb24tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZW1wdHktc3RhdGUuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8XG4gICAgICAgICAgJ0FkZCBhIG5ldyBtZW51IGl0ZW0gdG8gZ2V0IHN0YXJ0ZWQnXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBzbG90PVwiYWN0aW9uc1wiXG4gICAgICAgICAgW3RleHRdPVwiJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmFkZC1yb290JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICBbbG9va109XCInc29saWQnXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAob25DbGljayk9XCJhZGRSb290TWVudUl0ZW0oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXBsdXNcIj48L2k+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDwhLS0gTWVudSBUcmVlIENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXhtLW1lbnUtbGlzdF9fY29udGFpbmVyXCI+XG4gICAgICAgIDwhLS0gSW5mbyBCYW5uZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheG0tbWVudS1saXN0X19pbmZvLWJhbm5lclwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BhcHBsaWNhdGlvbi1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5pbmZvLWJhbm5lcicgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBNZW51IFRyZWUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImF4bS1tZW51LWxpc3RfX3RyZWVcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJtZW51SXRlbXMoKVwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SXRlbXMoKTsgdHJhY2sgaXRlbS5uYW1lIHx8IGl0ZW0ucGF0aCB8fCAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxheG0tbWVudS10cmVlLWl0ZW1cbiAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgIFtsZXZlbF09XCIwXCJcbiAgICAgICAgICAgICAgW2NhbkRlbGV0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGFjdGlvblRyaWdnZXJlZCk9XCJvbkFjdGlvblRyaWdnZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGl0ZW1Ecm9wcGVkKT1cIm9uSXRlbURyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19"],"names":["i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;AACO,MAAM,wBAAwB,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE;AACvC,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;AACnC;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC;AACvD,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,ivJAAivJ,EAAE,MAAM,EAAE,CAAC,izGAAizG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACx4X;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE;AAC9D,wBAAwB,YAAY;AACpC,wBAAwB,OAAO;AAC/B,wBAAwB,aAAa;AACrC,wBAAwB,WAAW;AACnC,wBAAwB,cAAc;AACtC,wBAAwB,iBAAiB;AACzC,wBAAwB,sBAAsB;AAC9C,wBAAwB,gBAAgB;AACxC,wBAAwB,mBAAmB;AAC3C,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,ivJAAivJ,EAAE,MAAM,EAAE,CAAC,izGAAizG,CAAC,EAAE;AAChtQ,SAAS,CAAC,EAAE,CAAC;;AC5Db;AACO,MAAM,wBAAwB,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACjE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,KAAK,EAAE;AAC7B;AACA,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AACnE;AACA,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE;AACA,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC;AAC5D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;AACnE,YAAY,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC9E,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AACxC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,YAAY,OAAO,SAAS,CAAC,8BAA8B,CAAC;AAC5D,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,KAAK,CAAC;AACpF,YAAY,OAAO,SAAS,CAAC,8BAA8B,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE;AAClD,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/D,QAAQ,MAAM,cAAc,CAAC,GAAG,CAAC,0BAA0B,EAAE,aAAa,CAAC;AAC3E;AACA,QAAQ,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;AAC7C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AACtE,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAChD,YAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClD,QAAQ;AACR,QAAQ,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI;AACvD,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACrE,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAY,OAAO,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM;AAC3D;AACA,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7E,gBAAgB,OAAO,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;AACxD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAChD,YAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClD,QAAQ;AACR,QAAQ,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,QAAQ;AAC7D,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAChD,YAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClD,QAAQ;AACR,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,aAAa;AACxE,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU;AAC/D,QAAQ;AACR,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC5D,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAChD,YAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClD,QAAQ;AACR,QAAQ,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG;AACvD,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU;AAC3D,YAAY,GAAG,UAAU;AACzB,SAAS;AACT,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5B,YAAY,QAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,QAAQ;AACR,QAAQ,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC1D,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3F,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAC1B,YAAY,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ;AACvD,YAAY,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC9D,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE,QAAQ,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AACtG,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,CAAC,KAAK,EAAE;AACrC,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,8BAA8B,CAAC,CAAC;AACtF,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;AACrD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjE;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzD,oBAAoB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC3D,gBAAgB;AAChB,gBAAgB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG;AACzE;AACA,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,IAAI,SAAS;AAC3F,gBAAgB;AAChB;AACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/D,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1F,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;AACzC,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC1C;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AACtC,YAAY,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS;AACrF,YAAY,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,KAAK;AAC5G,YAAY,MAAM,IAAI,GAAG;AACzB,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,SAAS,EAAE,CAAC,QAAQ;AACpC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK;AACnD,gBAAgB,gBAAgB,EAAE,IAAI,CAAC,QAAQ;AAC/C,gBAAgB,kBAAkB,EAAE,SAAS;AAC7C;AACA,gBAAgB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK,SAAS,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9F,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,SAAS;AACvG,aAAa;AACb,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACnE,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE;AAClE,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAC3C,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE;AAC5B,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC1D,oBAAoB,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AAC5D,gBAAgB;AAChB,gBAAgB,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG;AAC1E,gBAAgB,IAAI,UAAU,EAAE;AAChC,oBAAoB,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU;AAC/E,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;AACxF,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;AC7Nb;AACO,MAAM,oBAAoB,SAAS,0BAA0B,CAAC;AACrE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACrE,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC5D,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAClD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChH,IAAI;AACJ;AACA;AACA,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,MAAM,KAAK,CAAC,QAAQ,EAAE;AAC9B;AACA,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,MAAM,KAAK;AACtD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACzC,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5C,gBAAgB,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1C,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9B,YAAY,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3F,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,2BAA2B,CAAC;AAChG,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,6DAA6D,CAAC;AACnG,QAAQ;AACR,gBAAgB;AAChB,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7C,QAAQ,MAAM,QAAQ,GAAG,SAAS,KAAK,gBAAgB,CAAC,IAAI,GAAG,MAAM,GAAG,QAAQ;AAChF,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,wCAAwC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClH,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,qDAAqD,CAAC;AAC5G,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,0DAA0D,CAAC;AAC/H,gBAAgB,IAAI,EAAE,kBAAkB;AACxC,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC7C,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uDAAuD,CAAC;AAC5H,gBAAgB,IAAI,EAAE,yBAAyB;AAC/C,gBAAgB,KAAK,EAAE,QAAQ;AAC/B,gBAAgB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC1C,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,QAAQ,OAAO,CAAC,IAAI;AAC5B,YAAY,KAAK,UAAU;AAC3B,gBAAgB,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5C,gBAAgB;AAChB,YAAY,KAAK,OAAO;AACxB,gBAAgB,MAAM,IAAI,CAAC,mBAAmB,EAAE;AAChD,gBAAgB;AAChB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,KAAK,EAAE;AACnC,QAAQ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;AACtC,QAAQ,QAAQ,MAAM;AACtB,YAAY,KAAK,MAAM;AACvB,gBAAgB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/C,gBAAgB;AAChB,YAAY,KAAK,WAAW;AAC5B,gBAAgB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACjD,gBAAgB;AAChB;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI;AACZ,YAAY,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC7D;AACA,gBAAgB,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;AAC9F,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;AAC9H,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACrD;AACA,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnG,YAAY,MAAM,gBAAgB,GAAG,YAAY,EAAE,IAAI;AACvD;AACA,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAC1H;AACA,YAAY,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC7D,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/G,gBAAgB,MAAM,gBAAgB,GAAG,YAAY,EAAE,IAAI;AAC3D,gBAAgB,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACtI,YAAY;AACZ,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kEAAkE,CAAC;AACzG;AACA,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gEAAgE,CAAC;AACtG;AACA,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE;AAChD;AACA,QAAQ,IAAI,aAAa,KAAK,KAAK,EAAE;AACrC,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AACjD,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;AACtF,gBAAgB,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,oBAAoB,OAAO,KAAK;AAChC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC;AACzB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,qDAAqD,EAAE,uDAAuD,CAAC;AAC1K,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACrF,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,gEAAgE,CAAC;AACvG,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,8DAA8D,CAAC;AACpG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,gBAAgB;AAChB,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACzF,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+DAA+D,CAAC;AACtG,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,6DAA6D,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,gBAAgB;AAChB,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACzF,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+DAA+D,CAAC;AACtG,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,6DAA6D,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE;AAC7B,QAAQ,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE;AAC/B,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,+BAA+B,EAAE,wDAAwD,CAAC;AACrJ,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,gBAAgB;AAChB,YAAY,MAAM,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACjG,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,iEAAiE,CAAC;AACxG,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,+DAA+D,CAAC;AACrG,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,MAAM,EAAE;AACnC,QAAQ,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI;AAC7B,QAAQ,MAAM,KAAK,GAAG;AACtB,cAAc;AACd,cAAc,0DAA0D;AACxE,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AAClC,YAAY,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AAClC,YAAY,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AAClC,YAAY,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AAClC,YAAY,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAC;AACzC,YAAY,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE;AAChD,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AACrC,aAAa,MAAM;AACnB,aAAa,MAAM,CAAC,CAAC,MAAM,KAAK;AAChC,YAAY;AACZ,iBAAiB,QAAQ,CAAC,KAAK;AAC/B,iBAAiB,UAAU,CAAC,OAAO;AACnC,iBAAiB,OAAO,CAAC,CAAC,IAAI,KAAK;AACnC,gBAAgB;AAChB,qBAAqB,YAAY,CAAC,QAAQ;AAC1C,qBAAqB,SAAS,CAAC,qDAAqD,EAAE,CAAC,KAAK,KAAK;AACjG,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,oBAAoB,KAAK,CAAC,OAAO,CAAC;AAClC,wBAAwB,WAAW,EAAE,qDAAqD;AAC1F,wBAAwB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC3D,wBAAwB,QAAQ,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS;AAC3D,qBAAqB,CAAC;AACtB,gBAAgB,CAAC;AACjB,qBAAqB,SAAS,CAAC,qDAAqD,EAAE,CAAC,KAAK,KAAK;AACjG,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,oBAAoB,KAAK,CAAC,OAAO,CAAC;AAClC,wBAAwB,WAAW,EAAE,qDAAqD;AAC1F,wBAAwB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC3D,qBAAqB,CAAC;AACtB,gBAAgB,CAAC;AACjB,qBAAqB,SAAS,CAAC,qDAAqD,EAAE,CAAC,KAAK,KAAK;AACjG,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,oBAAoB,KAAK,CAAC,OAAO,CAAC;AAClC,wBAAwB,WAAW,EAAE,qDAAqD;AAC1F,qBAAqB,CAAC;AACtB,gBAAgB,CAAC;AACjB,qBAAqB,SAAS,CAAC,qDAAqD,EAAE,CAAC,KAAK,KAAK;AACjG,oBAAoB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,oBAAoB,KAAK,CAAC,OAAO,CAAC;AAClC,wBAAwB,WAAW,EAAE,qDAAqD;AAC1F,qBAAqB,CAAC;AACtB,gBAAgB,CAAC;AACjB,qBAAqB,SAAS,CAAC,yDAAyD,EAAE,CAAC,KAAK,KAAK;AACrG,oBAAoB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,oBAAoB,KAAK,CAAC,SAAS,CAAC;AACpC,wBAAwB,WAAW,EAAE,yDAAyD;AAC9F,qBAAqB,CAAC;AACtB,gBAAgB,CAAC;AACjB,qBAAqB,SAAS,CAAC,4DAA4D,EAAE,CAAC,KAAK,KAAK;AACxG,oBAAoB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,oBAAoB,KAAK,CAAC,YAAY,CAAC;AACvC,wBAAwB,WAAW,EAAE,4DAA4D;AACjG,wBAAwB,IAAI,EAAE,CAAC;AAC/B,qBAAqB,CAAC;AACtB,gBAAgB,CAAC,CAAC;AAClB,YAAY,CAAC;AACb,iBAAiB,UAAU,CAAC,CAAC,OAAO,KAAK;AACzC,gBAAgB,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACrG,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC;AACT,aAAa,IAAI,EAAE;AACnB,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;AACzC,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,SAAS,CAAC,KAAK,EAAE;AAC7B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE;AAC5C,QAAQ,IAAI;AACZ,YAAY,IAAI,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE;AACtC;AACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,oBAAoB,MAAM,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnH,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,MAAM,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnH,gBAAgB;AAChB,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACvC,oBAAoB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACvC,oBAAoB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACvC,oBAAoB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACvC,oBAAoB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC/C,oBAAoB,WAAW,EAAE,QAAQ,CAAC,WAAW;AACrD,iBAAiB;AACjB;AACA,gBAAgB,IAAI,MAAM,EAAE,IAAI,EAAE;AAClC;AACA;AACA,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC;AAChG,YAAY;AACZ,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+DAA+D,CAAC;AACtG,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE;AACtC,YAAY,SAAS,CAAC,KAAK,EAAE;AAC7B,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,6DAA6D,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE;AAClO,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,oBAAoB;AACjD,aAAa;AACb,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,q7FAAq7F,EAAE,MAAM,EAAE,CAAC,+pBAA+pB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,qfAAqf,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEA,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACr1L;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3E,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,cAAc;AACtC,wBAAwB,mBAAmB;AAC3C,wBAAwB,sBAAsB;AAC9C,wBAAwB,4BAA4B;AACpD,wBAAwB,wBAAwB;AAChD,wBAAwB,wBAAwB;AAChD,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC1H,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,oBAAoB;AAC7D,yBAAyB;AACzB,qBAAqB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,q7FAAq7F,EAAE,MAAM,EAAE,CAAC,+pBAA+pB,CAAC,EAAE;AAC1qH,SAAS,CAAC,EAAE,CAAC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-auth-user-sessions.component-CYtCo5d1.mjs","sources":["../tmp-esm2022/auth/lib/pages/account/user-sessions/user-sessions.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMUserDeviceSessionsService } from './user-sessions.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/select-box\";\nimport * as i4 from \"@angular/common\";\nexport class AXMUserSessionsComponent {\n constructor() {\n this.AXPTokenExpirationDurations = {\n oneWeek: 'oneWeek',\n oneMonth: 'oneMonth',\n threeMonths: 'threeMonths',\n sixMonths: 'sixMonths',\n };\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.activeSession = signal(undefined, ...(ngDevMode ? [{ debugName: \"activeSession\" }] : []));\n this.expireTime = signal(null, ...(ngDevMode ? [{ debugName: \"expireTime\" }] : []));\n this.expirationItems = [\n { name: 'Terminate in 1 week', id: this.AXPTokenExpirationDurations.oneWeek },\n { name: 'Terminate in 1 month', id: this.AXPTokenExpirationDurations.oneMonth },\n { name: 'Terminate in 3 month', id: this.AXPTokenExpirationDurations.threeMonths },\n { name: 'Terminate in 6 month', id: this.AXPTokenExpirationDurations.sixMonths },\n ];\n this.dataSource = new AXDataSource({\n pageSize: 10,\n key: 'id',\n load: async (e) => {\n let items = this.expirationItems;\n return {\n items,\n total: items.length,\n };\n },\n });\n this.userDeviceSessionsService = inject(AXMUserDeviceSessionsService);\n this.cdRef = inject(ChangeDetectorRef);\n this.popupService = inject(AXPopupService);\n this.platform = inject(AXPlatform);\n this.translateService = inject(AXTranslationService);\n this.sessionService = inject(AXPSessionService);\n this.settingService = inject(AXPSettingService);\n // ✅ Use a computed signal to update dynamically when items change\n this.itemsWithIcons = computed(() => this.items().map((item) => ({\n ...item,\n icon: this.getDeviceIcon(item.deviceName),\n })), ...(ngDevMode ? [{ debugName: \"itemsWithIcons\" }] : []));\n this.loadUserSessions();\n }\n async loadUserSessions() {\n try {\n let sessions = await this.userDeviceSessionsService.getSessions();\n this.items.set(sessions);\n try {\n const activeSession = await this.userDeviceSessionsService.getCurrentActiveSessions();\n this.activeSession.set(activeSession);\n }\n catch (error) {\n console.warn('No active session found:', error);\n this.activeSession.set(undefined);\n }\n const sessionTimeout = await this.settingService.scope(AXPPlatformScope.User).get('session-timeout');\n if (sessionTimeout && sessionTimeout.id in this.AXPTokenExpirationDurations) {\n let selectedItem = this.expirationItems.find((item) => item.id === sessionTimeout.id);\n if (selectedItem) {\n this.expireTime.set({ name: selectedItem.name, id: selectedItem.id });\n }\n }\n }\n catch (error) {\n console.error('Error loading user sessions', error);\n }\n }\n getDeviceIcon(deviceName) {\n if (!deviceName)\n return 'fa-solid fa-question'; // Default icon if no name is provided\n const lowerCaseName = deviceName.toLowerCase();\n if (lowerCaseName.includes('windows'))\n return 'fa-brands fa-windows';\n if (lowerCaseName.includes('macbook') || lowerCaseName.includes('mac'))\n return 'fa-brands fa-apple';\n if (lowerCaseName.includes('linux'))\n return 'fa-brands fa-linux';\n if (lowerCaseName.includes('android'))\n return 'fa-brands fa-android';\n if (lowerCaseName.includes('ios') || lowerCaseName.includes('iphone') || lowerCaseName.includes('ipad'))\n return 'fa-brands fa-apple';\n return 'fa-solid fa-desktop'; // Default icon for unknown devices\n }\n onChangeSessionExpireTime(e) {\n this.userDeviceSessionsService.setTokenLifetimeMinutes(e.component.selectedItems[0]);\n }\n async onTerminate(sessionId) {\n if (!sessionId) {\n console.error('No item to terminate');\n return;\n }\n await this.userDeviceSessionsService.terminateSession(sessionId);\n await this.loadUserSessions();\n }\n async onTerminateAll() {\n await this.userDeviceSessionsService.terminateAllSession();\n await this.loadUserSessions();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMUserSessionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXMUserSessionsComponent, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i3.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"pipe\", type: i4.DatePipe, name: \"date\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXMUserSessionsComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXButtonModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXDropdownModule,\n AXPopoverModule,\n ], template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2FjY291bnQvdXNlci1zZXNzaW9ucy91c2VyLXNlc3Npb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvcGFnZXMvYWNjb3VudC91c2VyLXNlc3Npb25zL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9D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bUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDaEMsQ0FBQzs4R0F4R1Usd0JBQXdCO2tHQUF4Qix3QkFBd0Isd0VDOUJyQyxzOEhBeUZBLDJDRHBFSSxjQUFjLDhCQUNkLGlCQUFpQixxUEFDakIsWUFBWSw4QkFDWixXQUFXLDhWQUNYLGlCQUFpQiwrckJBQ2pCLGdCQUFnQiw4QkFDaEIsZUFBZTs7MkZBR04sd0JBQXdCO2tCQWJwQyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2Vzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1TZWN1cml0eU1hbmFnZW1lbnREZXZpY2VTZXNzaW9uc0VudGl0eU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzL2RldmljZS1zZXNzaW9ucy50eXBlcyc7XG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVXNlclNlc3Npb25zQ29tcG9uZW50IHtcbiAgQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zID0ge1xuICAgIG9uZVdlZWs6ICdvbmVXZWVrJyxcbiAgICBvbmVNb250aDogJ29uZU1vbnRoJyxcbiAgICB0aHJlZU1vbnRoczogJ3RocmVlTW9udGhzJyxcbiAgICBzaXhNb250aHM6ICdzaXhNb250aHMnLFxuICB9O1xuXG4gIGl0ZW1zID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWxbXT4oW10pO1xuICBhY3RpdmVTZXNzaW9uID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWwgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGV4cGlyZVRpbWUgPSBzaWduYWw8eyBuYW1lOiBzdHJpbmc7IGlkOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpO1xuXG4gIGV4cGlyYXRpb25JdGVtcyA9IFtcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSB3ZWVrJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLm9uZVdlZWsgfSxcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSBtb250aCcsIGlkOiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucy5vbmVNb250aCB9LFxuICAgIHsgbmFtZTogJ1Rlcm1pbmF0ZSBpbiAzIG1vbnRoJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLnRocmVlTW9udGhzIH0sXG4gICAgeyBuYW1lOiAnVGVybWluYXRlIGluIDYgbW9udGgnLCBpZDogdGhpcy5BWFBUb2tlbkV4cGlyYXRpb25EdXJhdGlvbnMuc2l4TW9udGhzIH0sXG4gIF07XG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZTxhbnk+KHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAga2V5OiAnaWQnLFxuICAgIGxvYWQ6IGFzeW5jIChlKSA9PiB7XG4gICAgICBsZXQgaXRlbXMgPSB0aGlzLmV4cGlyYXRpb25JdGVtcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICB0b3RhbDogaXRlbXMubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbiAgcHJpdmF0ZSB1c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlID0gaW5qZWN0KEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHBsYXRmb3JtID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkVXNlclNlc3Npb25zKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyU2Vzc2lvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IHRoaXMudXNlckRldmljZVNlc3Npb25zU2VydmljZS5nZXRTZXNzaW9ucygpO1xuICAgICAgdGhpcy5pdGVtcy5zZXQoc2Vzc2lvbnMpO1xuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhY3RpdmVTZXNzaW9uID0gYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLmdldEN1cnJlbnRBY3RpdmVTZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmFjdGl2ZVNlc3Npb24uc2V0KGFjdGl2ZVNlc3Npb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyBhY3RpdmUgc2Vzc2lvbiBmb3VuZDonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWN0aXZlU2Vzc2lvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc2Vzc2lvblRpbWVvdXQgPSBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuZ2V0KCdzZXNzaW9uLXRpbWVvdXQnKTtcbiAgICAgIGlmIChzZXNzaW9uVGltZW91dCAmJiBzZXNzaW9uVGltZW91dC5pZCBpbiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucykge1xuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5leHBpcmF0aW9uSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gc2Vzc2lvblRpbWVvdXQuaWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgdGhpcy5leHBpcmVUaW1lLnNldCh7IG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lLCBpZDogc2VsZWN0ZWRJdGVtLmlkIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdXNlciBzZXNzaW9ucycsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyDinIUgVXNlIGEgY29tcHV0ZWQgc2lnbmFsIHRvIHVwZGF0ZSBkeW5hbWljYWxseSB3aGVuIGl0ZW1zIGNoYW5nZVxuICBpdGVtc1dpdGhJY29ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pdGVtcygpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBpY29uOiB0aGlzLmdldERldmljZUljb24oaXRlbS5kZXZpY2VOYW1lKSxcbiAgICB9KSksXG4gICk7XG5cbiAgZ2V0RGV2aWNlSWNvbihkZXZpY2VOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghZGV2aWNlTmFtZSkgcmV0dXJuICdmYS1zb2xpZCBmYS1xdWVzdGlvbic7IC8vIERlZmF1bHQgaWNvbiBpZiBubyBuYW1lIGlzIHByb3ZpZGVkXG5cbiAgICBjb25zdCBsb3dlckNhc2VOYW1lID0gZGV2aWNlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ3dpbmRvd3MnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtd2luZG93cyc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ21hY2Jvb2snKSB8fCBsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdtYWMnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuICAgIGlmIChsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdsaW51eCcpKSByZXR1cm4gJ2ZhLWJyYW5kcyBmYS1saW51eCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2FuZHJvaWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYW5kcm9pZCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lvcycpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwaG9uZScpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwYWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuXG4gICAgcmV0dXJuICdmYS1zb2xpZCBmYS1kZXNrdG9wJzsgLy8gRGVmYXVsdCBpY29uIGZvciB1bmtub3duIGRldmljZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoYW5nZVNlc3Npb25FeHBpcmVUaW1lKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2Uuc2V0VG9rZW5MaWZldGltZU1pbnV0ZXMoZS5jb21wb25lbnQuc2VsZWN0ZWRJdGVtc1swXSk7XG4gIH1cblxuICBhc3luYyBvblRlcm1pbmF0ZShzZXNzaW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBpdGVtIHRvIHRlcm1pbmF0ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UudGVybWluYXRlU2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZFVzZXJTZXNzaW9ucygpO1xuICB9XG5cbiAgYXN5bmMgb25UZXJtaW5hdGVBbGwoKSB7XG4gICAgYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLnRlcm1pbmF0ZUFsbFNlc3Npb24oKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyU2Vzc2lvbnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW14LWF1dG8gYXgtcC02IGF4LXctZnVsbFwiPlxuICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3QgYXgtbWItNFwiPlRoaXMgRGV2aWNlPC9wPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ib3JkZXItcHJpbWFyeS0yMDAgYXgtYm9yZGVyIGF4LWJnLXByaW1hcnktNTAgYXgtcm91bmRlZC1sZ1wiPlxuICAgICAgPGkgY2xhc3M9XCJ7eyBnZXREZXZpY2VJY29uKGFjdGl2ZVNlc3Npb24oKT8uZGV2aWNlTmFtZSkgfX0gYXgtdGV4dC1wcmltYXJ5LTUwMCBheC1tLTNcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgQGlmIChhY3RpdmVTZXNzaW9uKCkpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBhY3RpdmVTZXNzaW9uKCk/LmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+e3sgYWN0aXZlU2Vzc2lvbigpPy5vcGVyYXRpbmdTeXN0ZW0gfX08L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQteHMgYXgtc3VidGl0bGUtb24tbGlnaHRlc3RcIj5cbiAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubG9jYXRpb24gfX0gPHNwYW4+XG4gICAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubGFzdExvZ2luRGF0ZSA/IChhY3RpdmVTZXNzaW9uKCk/Lmxhc3RMb2dpbkRhdGUgfCBkYXRlOiAneXl5eS9NTS9kZCBISDptbScpIDogJycgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGl0ZW1zV2l0aEljb25zKCkgJiYgaXRlbXNXaXRoSWNvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtYm9yZGVyLWRhbmdlci0yMDAgYXgtYm9yZGVyIGF4LWJnLWRhbmdlci01MCBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNsZWFyIGF4LXRleHQtZGFuZ2VyLTUwMCBheC1tLTNcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTIgYXgtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25UZXJtaW5hdGVBbGwoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj5UZXJtaW5hdGUgQWxsIE90aGVyIFNlc3Npb25zPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPkxvZyBvdXQgYWxsIGRldmljZXMgZXhlcHQgZm9yIHRoaXMgb25lLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoaXRlbXNXaXRoSWNvbnMoKSAmJiBpdGVtc1dpdGhJY29ucygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0IGF4LW10LTQgYXgtbWItNFwiPkFjdGl2ZSBEZXZpY2VzPC9wPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtc1dpdGhJY29ucygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcmVsYXRpdmUgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbG9zZSBheC1hYnNvbHV0ZSBheC1lbmQtMiBheC10b3AtMiBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblRlcm1pbmF0ZShpdGVtLmlkKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlciBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3sgaXRlbS5pY29uIH19IGF4LW0tM1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWwtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBpdGVtLmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtc20gYXgtdGV4dC1vbi1saWdodGVzdFwiPnt7IGl0ZW0ub3BlcmF0aW5nU3lzdGVtIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC14cyBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubG9jYXRpb24gfX0gPHNwYW4+e3sgaXRlbS5sYXN0TG9naW5EYXRlID8gKGl0ZW0ubGFzdExvZ2luRGF0ZSB8IGRhdGU6ICd5eXl5L01NL2RkIEhIOm1tJykgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbjxheC1mb290ZXI+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4LWNvbCBheC13LWZ1bGxcIj5cbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWRhbmdlci01MDAgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlXCI+VGVybWluYXRlIE9sZCBTZXNzaW9uczwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1tdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+SWYgaW5hY3RpdmUgZm9yLi4uPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctMy82XCI+XG4gICAgICAgICAgICA8YXgtc2VsZWN0LWJveFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHBpcmVUaW1lKClcIlxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25DaGFuZ2VTZXNzaW9uRXhwaXJlVGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkPVwiaWRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNob29zZS4uLlwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2F4LWZvb3Rlcj5cbiJdfQ=="],"names":["i4"],"mappings":"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"}