@acorex/components 21.0.2-next.37 → 21.0.2-next.38

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 (339) hide show
  1. package/{types/acorex-components-accordion.d.ts → accordion/index.d.ts} +1 -0
  2. package/{types/acorex-components-button.d.ts → button/index.d.ts} +3 -3
  3. package/{types/acorex-components-button-group.d.ts → button-group/index.d.ts} +12 -20
  4. package/{types/acorex-components-check-box.d.ts → check-box/index.d.ts} +1 -1
  5. package/{types/acorex-components-chips.d.ts → chips/index.d.ts} +8 -3
  6. package/collapse/README.md +3 -0
  7. package/collapse/index.d.ts +174 -0
  8. package/{types/acorex-components-color-palette.d.ts → color-palette/index.d.ts} +0 -2
  9. package/{types/acorex-components-conversation2.d.ts → conversation2/index.d.ts} +667 -667
  10. package/{types/acorex-components-data-table.d.ts → data-table/index.d.ts} +262 -4
  11. package/{types/acorex-components-datetime-box.d.ts → datetime-box/index.d.ts} +4 -5
  12. package/drawer-legacy/README.md +3 -0
  13. package/drawer-legacy/index.d.ts +86 -0
  14. package/{types/acorex-components-dropdown-button.d.ts → dropdown-button/index.d.ts} +2 -4
  15. package/fesm2022/acorex-components-accordion.mjs +37 -32
  16. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  17. package/fesm2022/acorex-components-action-sheet.mjs +32 -32
  18. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  19. package/fesm2022/acorex-components-alert.mjs +21 -21
  20. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  21. package/fesm2022/acorex-components-aspect-ratio.mjs +6 -6
  22. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  23. package/fesm2022/acorex-components-audio-wave.mjs +14 -15
  24. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  25. package/fesm2022/acorex-components-autocomplete.mjs +16 -16
  26. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  27. package/fesm2022/acorex-components-avatar.mjs +17 -17
  28. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  29. package/fesm2022/acorex-components-badge.mjs +11 -11
  30. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  31. package/fesm2022/acorex-components-bottom-navigation.mjs +15 -15
  32. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  33. package/fesm2022/acorex-components-breadcrumbs.mjs +14 -14
  34. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  35. package/fesm2022/acorex-components-button-group.mjs +28 -63
  36. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  37. package/fesm2022/acorex-components-button.mjs +31 -31
  38. package/fesm2022/acorex-components-button.mjs.map +1 -1
  39. package/fesm2022/acorex-components-calendar.mjs +27 -27
  40. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  41. package/fesm2022/acorex-components-check-box.mjs +12 -12
  42. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  43. package/fesm2022/acorex-components-chips.mjs +15 -13
  44. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  45. package/fesm2022/acorex-components-circular-progress.mjs +16 -18
  46. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  47. package/fesm2022/acorex-components-code-editor.mjs +30 -30
  48. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  49. package/fesm2022/acorex-components-collapse.mjs +366 -0
  50. package/fesm2022/acorex-components-collapse.mjs.map +1 -0
  51. package/fesm2022/acorex-components-color-box.mjs +16 -16
  52. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  53. package/fesm2022/acorex-components-color-palette.mjs +44 -85
  54. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  55. package/fesm2022/acorex-components-command.mjs +20 -20
  56. package/fesm2022/acorex-components-command.mjs.map +1 -1
  57. package/fesm2022/acorex-components-comment.mjs +37 -37
  58. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  59. package/fesm2022/acorex-components-conversation.mjs +119 -119
  60. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  61. package/fesm2022/acorex-components-conversation2.mjs +708 -720
  62. package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
  63. package/fesm2022/acorex-components-cron-job.mjs +60 -60
  64. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  65. package/fesm2022/acorex-components-data-list.mjs +34 -34
  66. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  67. package/fesm2022/acorex-components-data-pager.mjs +42 -42
  68. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  69. package/fesm2022/acorex-components-data-table.mjs +516 -69
  70. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  71. package/fesm2022/acorex-components-datetime-box.mjs +26 -26
  72. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  73. package/fesm2022/acorex-components-datetime-input.mjs +24 -24
  74. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  75. package/fesm2022/acorex-components-datetime-picker.mjs +30 -30
  76. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  77. package/fesm2022/acorex-components-decorators.mjs +49 -56
  78. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  79. package/fesm2022/acorex-components-dialog.mjs +16 -16
  80. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  81. package/fesm2022/acorex-components-drawer-legacy.mjs +218 -0
  82. package/fesm2022/acorex-components-drawer-legacy.mjs.map +1 -0
  83. package/fesm2022/acorex-components-drawer.mjs +26 -25
  84. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  85. package/fesm2022/acorex-components-dropdown-button.mjs +11 -19
  86. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  87. package/fesm2022/acorex-components-dropdown.mjs +22 -22
  88. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  89. package/fesm2022/acorex-components-editor.mjs +15 -15
  90. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  91. package/fesm2022/acorex-components-fab.mjs +18 -18
  92. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  93. package/fesm2022/acorex-components-file-explorer.mjs +307 -0
  94. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -0
  95. package/fesm2022/acorex-components-flow-chart.mjs +63 -80
  96. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  97. package/fesm2022/acorex-components-form.mjs +39 -47
  98. package/fesm2022/acorex-components-form.mjs.map +1 -1
  99. package/fesm2022/acorex-components-grid-layout-builder.mjs +19 -18
  100. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  101. package/fesm2022/acorex-components-image-editor.mjs +93 -93
  102. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  103. package/fesm2022/acorex-components-image.mjs +12 -12
  104. package/fesm2022/acorex-components-image.mjs.map +1 -1
  105. package/fesm2022/acorex-components-json-viewer.mjs +13 -13
  106. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  107. package/fesm2022/acorex-components-kanban.mjs +26 -28
  108. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  109. package/fesm2022/acorex-components-kbd.mjs +17 -17
  110. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  111. package/fesm2022/acorex-components-label.mjs +9 -9
  112. package/fesm2022/acorex-components-label.mjs.map +1 -1
  113. package/fesm2022/acorex-components-list.mjs +16 -16
  114. package/fesm2022/acorex-components-list.mjs.map +1 -1
  115. package/fesm2022/acorex-components-loading-dialog.mjs +20 -20
  116. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  117. package/fesm2022/acorex-components-loading.mjs +23 -23
  118. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  119. package/fesm2022/acorex-components-map.mjs +47 -47
  120. package/fesm2022/acorex-components-map.mjs.map +1 -1
  121. package/fesm2022/acorex-components-media-viewer.mjs +85 -85
  122. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  123. package/fesm2022/acorex-components-menu.mjs +49 -49
  124. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  125. package/fesm2022/{acorex-components-modal-acorex-components-modal-JpPBSiVh.mjs → acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs} +29 -29
  126. package/fesm2022/acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs.map +1 -0
  127. package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs +212 -0
  128. package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs.map +1 -0
  129. package/fesm2022/acorex-components-modal.mjs +1 -1
  130. package/fesm2022/acorex-components-navbar.mjs +9 -9
  131. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  132. package/fesm2022/acorex-components-notification.mjs +29 -29
  133. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  134. package/fesm2022/acorex-components-number-box-legacy.mjs +430 -0
  135. package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -0
  136. package/fesm2022/acorex-components-number-box.mjs +21 -21
  137. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  138. package/fesm2022/acorex-components-otp.mjs +13 -13
  139. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  140. package/fesm2022/acorex-components-page.mjs +10 -10
  141. package/fesm2022/acorex-components-page.mjs.map +1 -1
  142. package/fesm2022/acorex-components-paint.mjs +65 -60
  143. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  144. package/fesm2022/acorex-components-password-box.mjs +39 -31
  145. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  146. package/fesm2022/acorex-components-pdf-reader.mjs +10 -10
  147. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  148. package/fesm2022/acorex-components-phone-box.mjs +20 -20
  149. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  150. package/fesm2022/acorex-components-picker.mjs +33 -33
  151. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  152. package/fesm2022/acorex-components-popover.mjs +11 -11
  153. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  154. package/fesm2022/acorex-components-popup.mjs +25 -25
  155. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  156. package/fesm2022/acorex-components-progress-bar.mjs +9 -11
  157. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  158. package/fesm2022/acorex-components-qrcode.mjs +21 -38
  159. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  160. package/fesm2022/acorex-components-query-builder.mjs +15 -16
  161. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  162. package/fesm2022/acorex-components-radio.mjs +9 -10
  163. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  164. package/fesm2022/acorex-components-rail-navigation.mjs +51 -53
  165. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  166. package/fesm2022/acorex-components-range-slider.mjs +36 -36
  167. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  168. package/fesm2022/acorex-components-rate-picker.mjs +42 -27
  169. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  170. package/fesm2022/acorex-components-rest-api-generator.mjs +39 -39
  171. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  172. package/fesm2022/acorex-components-result.mjs +8 -8
  173. package/fesm2022/acorex-components-result.mjs.map +1 -1
  174. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  175. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  176. package/fesm2022/acorex-components-rrule.mjs +38 -38
  177. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  178. package/fesm2022/acorex-components-scheduler-picker.mjs +234 -228
  179. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  180. package/fesm2022/acorex-components-scheduler.mjs +302 -292
  181. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  182. package/fesm2022/acorex-components-scss.mjs +22 -0
  183. package/fesm2022/acorex-components-scss.mjs.map +1 -0
  184. package/fesm2022/acorex-components-search-box.mjs +13 -19
  185. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  186. package/fesm2022/acorex-components-select-box.mjs +25 -27
  187. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  188. package/fesm2022/acorex-components-selection-list-2.mjs +15 -15
  189. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  190. package/fesm2022/acorex-components-selection-list.mjs +12 -12
  191. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  192. package/fesm2022/acorex-components-side-menu.mjs +44 -44
  193. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  194. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  195. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  196. package/fesm2022/acorex-components-slider.mjs +13 -13
  197. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  198. package/fesm2022/acorex-components-sliding-item.mjs +28 -28
  199. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  200. package/fesm2022/acorex-components-step-wizard.mjs +41 -41
  201. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  202. package/fesm2022/acorex-components-switch.mjs +14 -14
  203. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  204. package/fesm2022/acorex-components-tabs.mjs +22 -22
  205. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  206. package/fesm2022/acorex-components-tag-box.mjs +20 -20
  207. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  208. package/fesm2022/acorex-components-tag.mjs +10 -10
  209. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  210. package/fesm2022/acorex-components-text-area.mjs +9 -9
  211. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  212. package/fesm2022/acorex-components-text-box.mjs +14 -14
  213. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  214. package/fesm2022/acorex-components-time-duration.mjs +31 -29
  215. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  216. package/fesm2022/acorex-components-time-line.mjs +21 -21
  217. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  218. package/fesm2022/acorex-components-toast.mjs +27 -27
  219. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  220. package/fesm2022/acorex-components-toolbar.mjs +14 -14
  221. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  222. package/fesm2022/acorex-components-tooltip.mjs +17 -17
  223. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  224. package/fesm2022/acorex-components-tree-view-legacy.mjs +511 -0
  225. package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -0
  226. package/fesm2022/acorex-components-tree-view.mjs +328 -69
  227. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  228. package/fesm2022/acorex-components-uploader.mjs +18 -18
  229. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  230. package/fesm2022/acorex-components-video-player.mjs +10 -10
  231. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  232. package/fesm2022/acorex-components-wysiwyg.mjs +58 -58
  233. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  234. package/fesm2022/acorex-components.mjs.map +1 -1
  235. package/file-explorer/README.md +3 -0
  236. package/file-explorer/index.d.ts +103 -0
  237. package/{types/acorex-components-flow-chart.d.ts → flow-chart/index.d.ts} +0 -4
  238. package/{types/acorex-components-form.d.ts → form/index.d.ts} +24 -24
  239. package/{types/acorex-components-grid-layout-builder.d.ts → grid-layout-builder/index.d.ts} +1 -0
  240. package/{types/acorex-components-loading.d.ts → loading/index.d.ts} +1 -1
  241. package/{types/acorex-components-menu.d.ts → menu/index.d.ts} +6 -6
  242. package/number-box-legacy/README.md +3 -0
  243. package/number-box-legacy/index.d.ts +191 -0
  244. package/package.json +141 -118
  245. package/{types/acorex-components-paint.d.ts → paint/index.d.ts} +6 -1
  246. package/{types/acorex-components-qrcode.d.ts → qrcode/index.d.ts} +0 -1
  247. package/{types/acorex-components-radio.d.ts → radio/index.d.ts} +1 -1
  248. package/{types/acorex-components-rate-picker.d.ts → rate-picker/index.d.ts} +15 -5
  249. package/{types/acorex-components-scheduler-picker.d.ts → scheduler-picker/index.d.ts} +81 -82
  250. package/scss/README.md +3 -0
  251. package/scss/index.d.ts +10 -0
  252. package/{types/acorex-components-select-box.d.ts → select-box/index.d.ts} +1 -2
  253. package/{types/acorex-components-slider.d.ts → slider/index.d.ts} +2 -2
  254. package/{types/acorex-components-tabs.d.ts → tabs/index.d.ts} +1 -1
  255. package/{types/acorex-components-tag.d.ts → tag/index.d.ts} +3 -3
  256. package/{types/acorex-components-tree-view.d.ts → tree-view/index.d.ts} +43 -2
  257. package/tree-view-legacy/README.md +3 -0
  258. package/tree-view-legacy/index.d.ts +184 -0
  259. package/fesm2022/acorex-components-modal-acorex-components-modal-JpPBSiVh.mjs.map +0 -1
  260. package/fesm2022/acorex-components-modal-modal-content.component-DKweXQfl.mjs +0 -214
  261. package/fesm2022/acorex-components-modal-modal-content.component-DKweXQfl.mjs.map +0 -1
  262. package/{types/acorex-components-action-sheet.d.ts → action-sheet/index.d.ts} +0 -0
  263. package/{types/acorex-components-alert.d.ts → alert/index.d.ts} +0 -0
  264. package/{types/acorex-components-aspect-ratio.d.ts → aspect-ratio/index.d.ts} +0 -0
  265. package/{types/acorex-components-audio-wave.d.ts → audio-wave/index.d.ts} +0 -0
  266. package/{types/acorex-components-autocomplete.d.ts → autocomplete/index.d.ts} +0 -0
  267. package/{types/acorex-components-avatar.d.ts → avatar/index.d.ts} +0 -0
  268. package/{types/acorex-components-badge.d.ts → badge/index.d.ts} +0 -0
  269. package/{types/acorex-components-bottom-navigation.d.ts → bottom-navigation/index.d.ts} +0 -0
  270. package/{types/acorex-components-breadcrumbs.d.ts → breadcrumbs/index.d.ts} +0 -0
  271. package/{types/acorex-components-calendar.d.ts → calendar/index.d.ts} +0 -0
  272. package/{types/acorex-components-circular-progress.d.ts → circular-progress/index.d.ts} +0 -0
  273. package/{types/acorex-components-code-editor.d.ts → code-editor/index.d.ts} +0 -0
  274. package/{types/acorex-components-color-box.d.ts → color-box/index.d.ts} +0 -0
  275. package/{types/acorex-components-command.d.ts → command/index.d.ts} +0 -0
  276. package/{types/acorex-components-comment.d.ts → comment/index.d.ts} +0 -0
  277. package/{types/acorex-components-conversation.d.ts → conversation/index.d.ts} +0 -0
  278. package/{types/acorex-components-cron-job.d.ts → cron-job/index.d.ts} +0 -0
  279. package/{types/acorex-components-data-list.d.ts → data-list/index.d.ts} +0 -0
  280. package/{types/acorex-components-data-pager.d.ts → data-pager/index.d.ts} +0 -0
  281. package/{types/acorex-components-datetime-input.d.ts → datetime-input/index.d.ts} +0 -0
  282. package/{types/acorex-components-datetime-picker.d.ts → datetime-picker/index.d.ts} +0 -0
  283. package/{types/acorex-components-decorators.d.ts → decorators/index.d.ts} +0 -0
  284. package/{types/acorex-components-dialog.d.ts → dialog/index.d.ts} +0 -0
  285. package/{types/acorex-components-drawer.d.ts → drawer/index.d.ts} +0 -0
  286. package/{types/acorex-components-dropdown.d.ts → dropdown/index.d.ts} +0 -0
  287. package/{types/acorex-components-editor.d.ts → editor/index.d.ts} +0 -0
  288. package/{types/acorex-components-fab.d.ts → fab/index.d.ts} +0 -0
  289. package/{types/acorex-components-image.d.ts → image/index.d.ts} +0 -0
  290. package/{types/acorex-components-image-editor.d.ts → image-editor/index.d.ts} +0 -0
  291. package/{types/acorex-components.d.ts → index.d.ts} +0 -0
  292. package/{types/acorex-components-json-viewer.d.ts → json-viewer/index.d.ts} +0 -0
  293. package/{types/acorex-components-kanban.d.ts → kanban/index.d.ts} +0 -0
  294. package/{types/acorex-components-kbd.d.ts → kbd/index.d.ts} +0 -0
  295. package/{types/acorex-components-label.d.ts → label/index.d.ts} +0 -0
  296. package/{types/acorex-components-list.d.ts → list/index.d.ts} +0 -0
  297. package/{types/acorex-components-loading-dialog.d.ts → loading-dialog/index.d.ts} +0 -0
  298. package/{types/acorex-components-map.d.ts → map/index.d.ts} +0 -0
  299. package/{types/acorex-components-media-viewer.d.ts → media-viewer/index.d.ts} +0 -0
  300. package/{types/acorex-components-modal.d.ts → modal/index.d.ts} +0 -0
  301. package/{types/acorex-components-navbar.d.ts → navbar/index.d.ts} +0 -0
  302. package/{types/acorex-components-notification.d.ts → notification/index.d.ts} +0 -0
  303. package/{types/acorex-components-number-box.d.ts → number-box/index.d.ts} +0 -0
  304. package/{types/acorex-components-otp.d.ts → otp/index.d.ts} +0 -0
  305. package/{types/acorex-components-page.d.ts → page/index.d.ts} +0 -0
  306. package/{types/acorex-components-password-box.d.ts → password-box/index.d.ts} +0 -0
  307. package/{types/acorex-components-pdf-reader.d.ts → pdf-reader/index.d.ts} +0 -0
  308. package/{types/acorex-components-phone-box.d.ts → phone-box/index.d.ts} +0 -0
  309. package/{types/acorex-components-picker.d.ts → picker/index.d.ts} +0 -0
  310. package/{types/acorex-components-popover.d.ts → popover/index.d.ts} +0 -0
  311. package/{types/acorex-components-popup.d.ts → popup/index.d.ts} +0 -0
  312. package/{types/acorex-components-progress-bar.d.ts → progress-bar/index.d.ts} +0 -0
  313. package/{types/acorex-components-query-builder.d.ts → query-builder/index.d.ts} +1 -1
  314. /package/{types/acorex-components-rail-navigation.d.ts → rail-navigation/index.d.ts} +0 -0
  315. /package/{types/acorex-components-range-slider.d.ts → range-slider/index.d.ts} +0 -0
  316. /package/{types/acorex-components-rest-api-generator.d.ts → rest-api-generator/index.d.ts} +0 -0
  317. /package/{types/acorex-components-result.d.ts → result/index.d.ts} +0 -0
  318. /package/{types/acorex-components-routing-progress.d.ts → routing-progress/index.d.ts} +0 -0
  319. /package/{types/acorex-components-rrule.d.ts → rrule/index.d.ts} +0 -0
  320. /package/{types/acorex-components-scheduler.d.ts → scheduler/index.d.ts} +0 -0
  321. /package/{types/acorex-components-search-box.d.ts → search-box/index.d.ts} +0 -0
  322. /package/{types/acorex-components-selection-list.d.ts → selection-list/index.d.ts} +0 -0
  323. /package/{types/acorex-components-selection-list-2.d.ts → selection-list-2/index.d.ts} +0 -0
  324. /package/{types/acorex-components-side-menu.d.ts → side-menu/index.d.ts} +0 -0
  325. /package/{types/acorex-components-skeleton.d.ts → skeleton/index.d.ts} +0 -0
  326. /package/{types/acorex-components-sliding-item.d.ts → sliding-item/index.d.ts} +0 -0
  327. /package/{types/acorex-components-step-wizard.d.ts → step-wizard/index.d.ts} +0 -0
  328. /package/{types/acorex-components-switch.d.ts → switch/index.d.ts} +0 -0
  329. /package/{types/acorex-components-tag-box.d.ts → tag-box/index.d.ts} +0 -0
  330. /package/{types/acorex-components-text-area.d.ts → text-area/index.d.ts} +0 -0
  331. /package/{types/acorex-components-text-box.d.ts → text-box/index.d.ts} +0 -0
  332. /package/{types/acorex-components-time-duration.d.ts → time-duration/index.d.ts} +0 -0
  333. /package/{types/acorex-components-time-line.d.ts → time-line/index.d.ts} +0 -0
  334. /package/{types/acorex-components-toast.d.ts → toast/index.d.ts} +0 -0
  335. /package/{types/acorex-components-toolbar.d.ts → toolbar/index.d.ts} +0 -0
  336. /package/{types/acorex-components-tooltip.d.ts → tooltip/index.d.ts} +0 -0
  337. /package/{types/acorex-components-uploader.d.ts → uploader/index.d.ts} +0 -0
  338. /package/{types/acorex-components-video-player.d.ts → video-player/index.d.ts} +0 -0
  339. /package/{types/acorex-components-wysiwyg.d.ts → wysiwyg/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-side-menu.mjs","sources":["../../../../packages/components/side-menu/src/lib/side-menu-base.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.html","../../../../packages/components/side-menu/src/lib/side-menu.component.ts","../../../../packages/components/side-menu/src/lib/side-menu.component.html","../../../../packages/components/side-menu/src/lib/side-menu.directive.ts","../../../../packages/components/side-menu/src/lib/side-menu.module.ts","../../../../packages/components/side-menu/src/acorex-components-side-menu.ts"],"sourcesContent":["import { Signal } from '@angular/core';\n\n/**\n * DI token for the parent `ax-side-menu`. Child `ax-side-menu-item`s inject this\n * to read shared state (e.g. the current display mode) without creating a\n * circular import on the concrete `AXSideMenuComponent` class.\n */\nexport abstract class AXSideMenuBase {\n abstract readonly mode: Signal<'full' | 'compact'>;\n}\n","import { AXClickEvent, AXComponent, AXRippleDirective, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXContextMenuComponent, AXContextMenuItemsClickEvent, AXMenuItem } from '@acorex/components/menu';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\n\nexport class AXSideMenuItemClickEvent extends AXClickEvent {\n handled = false;\n}\n\n/** Routes context-menu clicks back to the matching `ax-side-menu-item`. */\nexport interface AXSideMenuContextMenuItemData {\n sideMenuItem: AXSideMenuItemComponent;\n}\n\n@Component({\n selector: 'ax-side-menu-item',\n inputs: ['disabled'],\n templateUrl: './side-menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXRippleDirective,\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipModule,\n AXContextMenuComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }],\n})\nexport class AXSideMenuItemComponent extends MXInteractiveComponent {\n text = model('');\n active = model(false);\n isLoading = model(false);\n isCollapsed = model(true);\n onClick = output<AXSideMenuItemClickEvent>();\n\n readonly toggleOnClick = input(true);\n readonly href = input<string | null>();\n readonly routerLink = input<string | any[] | UrlTree | null>();\n readonly routerLinkActive = input<string | string[]>('ax-state-active');\n readonly routerLinkActiveOptions = input<{ exact: boolean } | IsActiveMatchOptions>({ exact: false });\n readonly target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n protected menuItemTrigger = viewChild.required<ElementRef<HTMLElement>>('menuItemTrigger');\n protected hasChild = signal(false);\n protected isCompactMode = computed(() => this.menuMode() === 'compact');\n\n /** Top-level rail entry in compact mode (opens the flyout context menu). */\n protected isFirstLevel = computed(() => {\n if (!this.isCompactMode()) {\n return false;\n }\n return !this.hostElement.parentElement?.closest('.ax-side-children-content');\n });\n\n /** Tooltip text for first-level items in compact mode only. */\n protected tooltipContent = computed(() => {\n if (!this.isFirstLevel()) return null;\n return this.text().trim() || this.contentLabel().trim() || null;\n });\n\n private readonly elem = inject(ElementRef<HTMLElement>);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly menuMode = signal<'full' | 'compact'>('full');\n private readonly contentLabel = signal('');\n\n private childObserver: MutationObserver | null = null;\n private childRefreshScheduled = false;\n private readonly childItems = contentChildren(AXSideMenuItemComponent, { descendants: true });\n private readonly childrenSlot = viewChild<ElementRef<HTMLElement>>('childrenSlot');\n private readonly childrenContextMenu = viewChild<AXContextMenuComponent>('childrenContextMenu');\n\n private get hostElement(): HTMLElement {\n return this.elem.nativeElement;\n }\n\n #childCheckEffect = effect(() => {\n if (this.childItems().length) {\n this.updateHasChild();\n }\n });\n\n #initChildren = afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.reparentOrphanedChildren();\n this.updateHasChild();\n this.updateContentLabel();\n this.childObserver = new MutationObserver((records) => {\n if (!this.hasRelevantMutation(records)) {\n return;\n }\n this.scheduleChildRefresh();\n });\n this.childObserver.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.destroyRef.onDestroy(() => this.childObserver?.disconnect());\n });\n\n #contextMenuSync = effect(() => {\n if (!this.isCompactMode() || !isPlatformBrowser(this.platformId) || !this.isFirstLevel() || !this.hasChild()) {\n return;\n }\n\n const menu = this.childrenContextMenu();\n if (!menu) {\n return;\n }\n\n if (this.isCollapsed()) {\n menu.close();\n } else {\n this.closeSiblingCompactMenus();\n this.openCompactContextMenu(menu);\n }\n });\n\n syncMenuMode(mode: 'full' | 'compact') {\n if (this.menuMode() === mode) {\n return;\n }\n this.menuMode.set(mode);\n this.childrenContextMenu()?.close();\n if (mode === 'compact') {\n this.isCollapsed.set(true);\n }\n }\n\n /** Builds the cascading `AXMenuItem` tree used by the compact-mode context menu. */\n buildMenuItemsFromChildren(): AXMenuItem[] {\n this.reparentOrphanedChildren();\n\n const slot = this.childrenSlot()?.nativeElement;\n const itemsFromSlot = slot ? this.mapSlotChildrenToMenuItems(slot) : [];\n\n if (itemsFromSlot.length > 0) {\n return itemsFromSlot;\n }\n\n return this.getDirectChildElements().map((el) => this.toMenuItem(el));\n }\n\n activateFromContextMenu(nativeEvent: MouseEvent) {\n if (this.disabled || this.isLoading()) {\n return;\n }\n const trigger = this.menuItemTrigger().nativeElement;\n if (trigger instanceof HTMLAnchorElement) {\n trigger.click();\n return;\n }\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent,\n handled: false,\n });\n }\n\n toggle() {\n if (this.isCompactMode() && (!this.hasChild() || !this.isFirstLevel())) {\n return;\n }\n this.isCollapsed.update((collapsed) => !collapsed);\n }\n\n open() {\n this.isCollapsed.set(false);\n }\n\n close() {\n this.isCollapsed.set(true);\n this.childrenContextMenu()?.close();\n }\n\n protected handleContextMenuItemClick(event: AXContextMenuItemsClickEvent) {\n const instance = (event.item.data as AXSideMenuContextMenuItemData | undefined)?.sideMenuItem;\n if (!instance || instance.hasChild()) return;\n instance.activateFromContextMenu(event.nativeEvent);\n }\n\n protected handleContextMenuClosed() {\n if (!this.isCollapsed()) this.isCollapsed.set(true);\n }\n\n protected handleClickEvent(e: MouseEvent) {\n if (this.disabled || this.isLoading()) return;\n\n const event: AXSideMenuItemClickEvent = {\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n handled: false,\n };\n this.onClick.emit(event);\n if (!event.handled && this.toggleOnClick() && (this.hasChild() || !this.isCompactMode())) this.toggle();\n\n e.stopPropagation();\n }\n\n private openCompactContextMenu(menu: AXContextMenuComponent) {\n const items = this.buildMenuItemsFromChildren();\n if (!items.length) return;\n\n menu.showAt(this.getContextMenuAnchorPoint(), this.menuItemTrigger().nativeElement, {\n sender: menu,\n canceled: false,\n targetElement: this.menuItemTrigger().nativeElement,\n items,\n });\n }\n\n private getContextMenuAnchorPoint(): AXPoint {\n const rect = this.menuItemTrigger().nativeElement.getBoundingClientRect();\n const offset = 8;\n if (AXHtmlUtil.isRtl(this.hostElement)) {\n return { x: rect.left - offset, y: rect.top };\n }\n return { x: rect.right + offset, y: rect.top };\n }\n\n private mapSlotChildrenToMenuItems(slot: HTMLElement): AXMenuItem[] {\n const items: AXMenuItem[] = [];\n let pendingGroupTitle: string | undefined;\n\n for (const child of Array.from(slot.children)) {\n if (child.tagName === 'AX-TITLE') {\n pendingGroupTitle = child.textContent?.trim() || undefined;\n continue;\n }\n if (child.tagName === 'AX-DIVIDER') {\n if (items.length > 0) {\n items[items.length - 1] = { ...items[items.length - 1], break: true };\n }\n continue;\n }\n if (child.tagName !== 'AX-SIDE-MENU-ITEM') {\n continue;\n }\n\n const menuItem = this.toMenuItem(child as HTMLElement);\n if (pendingGroupTitle) {\n menuItem.group = { title: pendingGroupTitle };\n pendingGroupTitle = undefined;\n }\n items.push(menuItem);\n }\n\n return items;\n }\n\n private toMenuItem(host: HTMLElement): AXMenuItem {\n const instance = this.getInstanceFromElement(host);\n const item: AXMenuItem = {\n text: this.getItemLabel(host, instance),\n disabled: instance?.disabled ?? false,\n icon: this.getItemIcon(host),\n suffix: this.getItemSuffix(host),\n };\n\n if (instance) {\n item.data = { sideMenuItem: instance } satisfies AXSideMenuContextMenuItemData;\n }\n\n if (this.hasNestedChildren(host, instance)) {\n item.items =\n instance?.buildMenuItemsFromChildren() ?? this.getDirectChildElements(host).map((el) => this.toMenuItem(el));\n }\n\n return item;\n }\n\n private hasNestedChildren(host: HTMLElement, instance?: AXSideMenuItemComponent): boolean {\n return (instance?.hasChild() ?? false) || this.getDirectChildElements(host).length > 0;\n }\n\n /** Direct `ax-side-menu-item` children of `menuHost` (defaults to this item). */\n private getDirectChildElements(menuHost: HTMLElement = this.hostElement): HTMLElement[] {\n return Array.from(menuHost.querySelectorAll('ax-side-menu-item')).filter((el) => {\n if (el === menuHost) {\n return false;\n }\n return el.parentElement?.closest('ax-side-menu-item') === menuHost;\n }) as HTMLElement[];\n }\n\n private reparentOrphanedChildren() {\n const container = this.childrenSlot()?.nativeElement;\n if (!container) {\n return;\n }\n\n for (const el of this.getDirectChildElements()) {\n if (!container.contains(el)) {\n try {\n container.appendChild(el);\n } catch {\n // HierarchyRequestError when the node is already being moved.\n }\n }\n }\n }\n\n private scheduleChildRefresh() {\n if (this.childRefreshScheduled) {\n return;\n }\n this.childRefreshScheduled = true;\n requestAnimationFrame(() => {\n this.childRefreshScheduled = false;\n this.reparentOrphanedChildren();\n this.updateHasChild();\n this.updateContentLabel();\n });\n }\n\n private hasRelevantMutation(records: MutationRecord[]): boolean {\n for (const record of records) {\n if (record.type === 'characterData') {\n return true;\n }\n if (\n this.nodeListContainsMenuStructuralNode(record.addedNodes) ||\n this.nodeListContainsMenuStructuralNode(record.removedNodes)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private nodeListContainsMenuStructuralNode(nodes: NodeList): boolean {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n const tagName = node.tagName;\n if (tagName === 'AX-SIDE-MENU-ITEM' || tagName === 'AX-TITLE' || tagName === 'AX-DIVIDER') {\n return true;\n }\n if (node.querySelector?.('ax-side-menu-item,ax-title,ax-divider')) {\n return true;\n }\n }\n return false;\n }\n\n private getItemLabel(host: HTMLElement, instance?: AXSideMenuItemComponent): string {\n if (instance?.text()) {\n return instance.text();\n }\n const insideText = host.querySelector('.ax-inside-text');\n if (insideText?.textContent?.trim()) {\n return insideText.textContent.trim();\n }\n return host.querySelector('ax-text')?.textContent?.trim() ?? '';\n }\n\n private getItemIcon(host: HTMLElement): string | undefined {\n const axIcon = host.querySelector('ax-prefix ax-icon');\n if (!axIcon) {\n return undefined;\n }\n return axIcon.getAttribute('icon') ?? axIcon.querySelector('i')?.className ?? undefined;\n }\n\n private getItemSuffix(host: HTMLElement): { text: string } | undefined {\n const text = host.querySelector('ax-suffix ax-text')?.textContent?.trim();\n return text ? { text } : undefined;\n }\n\n private getInstanceFromElement(el: Element): AXSideMenuItemComponent | undefined {\n const ctx = (el as unknown as { __axContext__?: unknown }).__axContext__;\n return ctx instanceof AXSideMenuItemComponent ? ctx : undefined;\n }\n\n private closeSiblingCompactMenus() {\n const menuHost = this.hostElement.closest('ax-side-menu');\n if (!menuHost) {\n return;\n }\n\n menuHost.querySelectorAll(':scope > ax-side-menu-item').forEach((el) => {\n const sibling = this.getInstanceFromElement(el);\n if (!sibling || sibling === this) {\n return;\n }\n sibling.isCollapsed.set(true);\n sibling.childrenContextMenu()?.close();\n });\n }\n\n private updateHasChild() {\n this.hasChild.set(this.childItems().length > 0 || this.getDirectChildElements().length > 0);\n }\n\n private updateContentLabel() {\n if (!isPlatformBrowser(this.platformId)) return;\n const insideText = this.hostElement.querySelector('.ax-inside-text');\n const label = insideText?.textContent?.trim() || this.hostElement.querySelector('ax-text')?.textContent?.trim() || '';\n if (label !== this.contentLabel()) {\n this.contentLabel.set(label);\n }\n }\n}\n","<div [axTooltip]=\"tooltipContent()\" axTooltipPlacement=\"end\" class=\"ax-side-menu-wrapper\">\n @if (!isCompactMode()) {\n <ng-content select=\"ax-title\"></ng-content>\n }\n @if (routerLink()) {\n <a\n #menuItemTrigger\n [axRipple]\n [target]=\"target()\"\n class=\"ax-side-item\"\n [routerLink]=\"routerLink()\"\n (click)=\"handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [routerLinkActive]=\"routerLinkActive()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else if (href()) {\n <a\n #menuItemTrigger\n [axRipple]\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else {\n <div\n #menuItemTrigger\n [axRipple]\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </div>\n }\n\n <div\n class=\"ax-side-children\"\n [class.ax-collapsed]=\"(!isCompactMode() && isCollapsed()) || (isCompactMode() && isFirstLevel())\"\n [class.ax-empty]=\"!hasChild() && !isLoading()\"\n >\n @if (isLoading()) {\n <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\n }\n <div #childrenSlot class=\"ax-side-children-content\" [hidden]=\"isLoading()\">\n <ng-content select=\"ax-side-menu-item, ng-container, [ngTemplateOutlet]\"></ng-content>\n </div>\n </div>\n\n @if (isCompactMode() && hasChild()) {\n <ax-context-menu\n #childrenContextMenu\n class=\"ax-side-menu-children-context-menu\"\n [openOn]=\"'hover'\"\n [closeOn]=\"'leave'\"\n [closeOnRouteChange]=\"true\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onClose)=\"handleContextMenuClosed()\"\n />\n }\n\n <ng-content select=\"ax-divider\"></ng-content>\n <ng-template #menuItemContent>\n <div class=\"ax-start-side\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <div class=\"ax-inside-text\">\n @if (text()) {\n <span>{{ text() }}</span>\n }\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"ax-end-side\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if (hasChild() && !isLoading() && toggleOnClick() && !isFirstLevel()) {\n <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"> </span>\n }\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n </div>\n </ng-template>\n</div>\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n model,\n PLATFORM_ID,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuBase } from './side-menu-base';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\n\nexport type AXSideMenuLook = 'pills' | 'with-line' | 'with-line-color' | 'default';\nexport type AXSideMenuLocation = 'start' | 'end';\n\n/**\n * @category\n * A component for displaying a side menu with customizable content.\n */\n@Component({\n selector: 'ax-side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXSideMenuItemComponent,\n RouterLink,\n RouterLinkActive,\n AXDecoratorIconComponent,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXSideMenuComponent },\n { provide: AXSideMenuBase, useExisting: AXSideMenuComponent },\n ],\n})\nexport class AXSideMenuComponent extends NXComponent implements AXSideMenuBase {\n items = model<AXMenuItem[]>();\n readonly look = input<AXSideMenuLook>('pills');\n readonly location = input<AXSideMenuLocation>('start');\n readonly mode = input<'full' | 'compact'>('full');\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * All `ax-side-menu-item` instances discovered by walking the host DOM.\n *\n * We use DOM discovery (instead of `contentChildren`) because Angular content\n * queries do **not** traverse embedded views created by `ngTemplateOutlet`,\n * and the `AXSideMenuBase` DI token is not reachable from inside those views\n * either (they inherit injection from the template's declaration site, not\n * the insertion site). Walking the DOM works for direct projection,\n * structural directives, and recursive `ngTemplateOutlet`-based templates\n * uniformly.\n */\n private _items = signal<AXSideMenuItemComponent[]>([]);\n /** Read-only signal exposing every discovered `ax-side-menu-item` instance. */\n readonly children = this._items.asReadonly();\n private platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n hostElement = this.elementRef.nativeElement;\n private domRefreshScheduled = false;\n private domRefreshObserver: MutationObserver | null = null;\n\n #init = afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n this.refreshItemsFromDom();\n this.domRefreshObserver = new MutationObserver((records) => {\n if (!this.hasRelevantMenuItemMutation(records)) {\n return;\n }\n this.scheduleDomRefresh();\n });\n this.domRefreshObserver.observe(this.elementRef.nativeElement, { childList: true, subtree: true });\n this.destroyRef.onDestroy(() => this.domRefreshObserver?.disconnect());\n });\n\n /** Push full/compact mode to every menu item whenever mode changes. */\n #syncItemMode = effect(() => {\n const mode = this.mode();\n this._items().forEach((item) => item.syncMenuMode(mode));\n });\n\n /**\n * Walks the host DOM to discover every nested `ax-side-menu-item`, looks up\n * the component instance through the `__axContext__` property that\n * `MXBaseComponent.ngOnInit` attaches to each host element, and updates the\n * internal items signal and `.first-level` CSS class accordingly.\n *\n * Triggered both initially and from a `MutationObserver` so recursive\n * templates that add/remove items at runtime stay in sync.\n */\n private refreshItemsFromDom() {\n const host = this.elementRef.nativeElement;\n const elements = host.querySelectorAll('ax-side-menu-item');\n const items: AXSideMenuItemComponent[] = [];\n elements.forEach((el) => {\n const instance = (el as unknown as { __axContext__?: unknown }).__axContext__;\n if (instance instanceof AXSideMenuItemComponent) {\n items.push(instance);\n }\n });\n\n const current = this._items();\n const changed = current.length !== items.length || current.some((it, i) => it !== items[i]);\n if (changed) {\n this._items.set(items);\n }\n\n this.addFirstLevelClass();\n }\n\n private scheduleDomRefresh() {\n if (this.domRefreshScheduled) {\n return;\n }\n this.domRefreshScheduled = true;\n\n // Batch multiple rapid mutations (e.g., large template updates or overlays closing)\n // into a single refresh to prevent long main-thread stalls.\n requestAnimationFrame(() => {\n this.domRefreshScheduled = false;\n this.refreshItemsFromDom();\n });\n }\n\n private hasRelevantMenuItemMutation(records: MutationRecord[]): boolean {\n for (const record of records) {\n if (this.nodeListContainsMenuItem(record.addedNodes) || this.nodeListContainsMenuItem(record.removedNodes)) {\n return true;\n }\n }\n return false;\n }\n\n private nodeListContainsMenuItem(nodes: NodeList): boolean {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n if (node.tagName === 'AX-SIDE-MENU-ITEM') {\n return true;\n }\n if (node.querySelector?.('ax-side-menu-item')) {\n return true;\n }\n }\n return false;\n }\n\n private addFirstLevelClass() {\n const allChildren = this._items();\n allChildren.forEach((item) =>\n item.getHostElement().querySelector('.ax-side-item')?.classList.remove('first-level'),\n );\n\n allChildren\n .filter((item) => {\n const itemElement = item.getHostElement();\n return (\n this.hostElement.contains(itemElement) && !itemElement.parentElement?.closest('.ax-side-children-content')\n );\n })\n .forEach((item) => item.getHostElement().querySelector('.ax-side-item')?.classList.add('first-level'));\n }\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return [`ax-look-${this.look()}`, `ax-location-${this.location()}`, `ax-mode-${this.mode()}`];\n }\n}\n","<ng-content select=\"ax-side-menu-item,ax-title,ng-container,[ngTemplateOutlet]\"></ng-content>\n\n@for (node of items(); track node) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n<ng-template #Recursion let-item>\n @if (item.title) {\n <ax-title>{{ item.title }}</ax-title>\n }\n @if (item.routerLink) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [target]=\"item.target\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [routerLink]=\"item.routerLink\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n [routerLinkActive]=\"item.routerLinkActive\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else if (item.href) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else {\n <ax-side-menu-item\n [text]=\"item.text\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n }\n\n <ng-template #sideMenuItemContent>\n <ax-prefix>\n @if (item.icon) {\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n }\n </ax-prefix>\n @if (item.data) {\n <ax-text>{{ item.data }}</ax-text>\n }\n @if (item.suffixText || item.suffix?.text) {\n <ax-suffix>\n <ax-text>{{ item.suffixText ?? item.suffix?.text }}</ax-text>\n </ax-suffix>\n }\n @for (child of item.items; track child) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ng-template>\n</ng-template>\n","import { AXOutlineContainerDirective, outlineItemType } from '@acorex/cdk/outline';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { afterNextRender, Directive, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { AXSideMenuComponent } from './side-menu.component';\n\n@Directive({\n selector: '[axOutlineSideMenu]',\n exportAs: 'axOutlineSideMenu',\n providers: [AXUnsubscriber],\n})\nexport class AXOutlineSideMenuDirective {\n private router = inject(Router);\n private unsubscriber = inject(AXUnsubscriber);\n private sideMenu = inject(AXSideMenuComponent);\n private container = inject(AXOutlineContainerDirective);\n\n #anr = afterNextRender(() => {\n this.container.outlineItems$\n .pipe(\n this.unsubscriber.takeUntilDestroy,\n map((items) => {\n if (!items || items.length === 0) return [];\n return this.buildNestedMenuItems(items);\n }),\n distinctUntilChanged(isEqual),\n )\n .subscribe((menuItems) => {\n this.updateSideMenu(menuItems);\n });\n });\n\n private updateSideMenu(newMenuItems: AXMenuItem[]): void {\n const currentMenuItems = this.sideMenu.items();\n const newSignature = this.getStructuralSignature(newMenuItems);\n const currentSignature = this.getStructuralSignature(currentMenuItems || []);\n\n if (newSignature !== currentSignature) {\n this.sideMenu.items.set(newMenuItems);\n return;\n }\n\n const currentComponents = this.sideMenu.children();\n const newActiveItem = this.flattenMenuItems(newMenuItems).find((item) => item.active);\n const currentActiveComponent = currentComponents.find((c) => c.active());\n if (newActiveItem?.href === currentActiveComponent?.href()) {\n return;\n }\n currentActiveComponent?.active.set(false);\n if (newActiveItem) {\n const componentToActivate = currentComponents.find((c) => c.href() === newActiveItem.href);\n componentToActivate?.active.set(true);\n }\n }\n\n /**\n * Creates a string signature that represents the tree structure of the menu.\n * Example: \"href1(href1.1,href1.2),href2,href3\"\n * This will be different for a flat list vs. a nested list.\n */\n private getStructuralSignature(items: AXMenuItem[]): string {\n return items\n .map((item) => {\n let signature = item.href || '';\n if (item.items && item.items.length > 0) {\n signature += `(${this.getStructuralSignature(item.items)})`;\n }\n return signature;\n })\n .join(',');\n }\n\n private flattenMenuItems(items: AXMenuItem[]): AXMenuItem[] {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.items) {\n acc.push(...this.flattenMenuItems(item.items));\n }\n return acc;\n }, [] as AXMenuItem[]);\n }\n\n private textReplace(item: outlineItemType): string {\n const text = item.el.textContent;\n if (item.hasAnchor) {\n const newStr = text?.slice(0, -1);\n return newStr?.trim() || '';\n }\n return text?.trim() || '';\n }\n\n private buildNestedMenuItems(items: outlineItemType[]): AXMenuItem[] {\n const menuItemsMap = new Map<string, AXMenuItem>();\n const rootItems: AXMenuItem[] = [];\n items.forEach((item) => {\n const menuItem: AXMenuItem = {\n items: [],\n target: '_self',\n active: item.active,\n toggleOnClick: false,\n text: this.textReplace(item),\n href: `${this.router.url.split('#')[0]}#${item.id}`,\n };\n menuItemsMap.set(item.id, menuItem);\n });\n items.forEach((item) => {\n const menuItem = menuItemsMap.get(item.id);\n if (!menuItem) return;\n if (item.parentId) {\n const parentMenuItem = menuItemsMap.get(item.parentId);\n if (parentMenuItem) {\n parentMenuItem.items?.push(menuItem);\n } else {\n console.warn(`Outline item with id \"${item.id}\" has a parentId \"${item.parentId}\" that does not exist.`);\n rootItems.push(menuItem);\n }\n } else {\n rootItems.push(menuItem);\n }\n });\n return rootItems;\n }\n}\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport { AXOutlineSideMenuDirective } from './side-menu.directive';\n\nconst COMPONENT = [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n AXRippleDirective,\n AXLoadingModule,\n AXTranslationModule,\n RouterLink,\n RouterLinkActive,\n AXDecoratorModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXSideMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-side-menu.mjs","sources":["../tmp-esm2022/side-menu/lib/side-menu-base.js","../tmp-esm2022/side-menu/lib/side-menu-item/side-menu-item.component.js","../tmp-esm2022/side-menu/lib/side-menu.component.js","../tmp-esm2022/side-menu/lib/side-menu.directive.js","../tmp-esm2022/side-menu/lib/side-menu.module.js","../tmp-esm2022/side-menu/acorex-components-side-menu.js"],"sourcesContent":["/**\n * DI token for the parent `ax-side-menu`. Child `ax-side-menu-item`s inject this\n * to read shared state (e.g. the current display mode) without creating a\n * circular import on the concrete `AXSideMenuComponent` class.\n */\nexport class AXSideMenuBase {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NpZGUtbWVudS9zcmMvbGliL3NpZGUtbWVudS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLGNBQWM7Q0FFbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIHBhcmVudCBgYXgtc2lkZS1tZW51YC4gQ2hpbGQgYGF4LXNpZGUtbWVudS1pdGVtYHMgaW5qZWN0IHRoaXNcbiAqIHRvIHJlYWQgc2hhcmVkIHN0YXRlIChlLmcuIHRoZSBjdXJyZW50IGRpc3BsYXkgbW9kZSkgd2l0aG91dCBjcmVhdGluZyBhXG4gKiBjaXJjdWxhciBpbXBvcnQgb24gdGhlIGNvbmNyZXRlIGBBWFNpZGVNZW51Q29tcG9uZW50YCBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYU2lkZU1lbnVCYXNlIHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbW9kZTogU2lnbmFsPCdmdWxsJyB8ICdjb21wYWN0Jz47XG59XG4iXX0=","import { AXClickEvent, AXComponent, AXRippleDirective, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXContextMenuComponent } from '@acorex/components/menu';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChildren, DestroyRef, effect, ElementRef, inject, input, model, output, PLATFORM_ID, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/tooltip\";\nexport class AXSideMenuItemClickEvent extends AXClickEvent {\n constructor() {\n super(...arguments);\n this.handled = false;\n }\n}\nexport class AXSideMenuItemComponent extends MXInteractiveComponent {\n constructor() {\n super(...arguments);\n this.text = model('', ...(ngDevMode ? [{ debugName: \"text\" }] : []));\n this.active = model(false, ...(ngDevMode ? [{ debugName: \"active\" }] : []));\n this.isLoading = model(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.isCollapsed = model(true, ...(ngDevMode ? [{ debugName: \"isCollapsed\" }] : []));\n this.onClick = output();\n this.toggleOnClick = input(true, ...(ngDevMode ? [{ debugName: \"toggleOnClick\" }] : []));\n this.href = input(...(ngDevMode ? [undefined, { debugName: \"href\" }] : []));\n this.routerLink = input(...(ngDevMode ? [undefined, { debugName: \"routerLink\" }] : []));\n this.routerLinkActive = input('ax-state-active', ...(ngDevMode ? [{ debugName: \"routerLinkActive\" }] : []));\n this.routerLinkActiveOptions = input({ exact: false }, ...(ngDevMode ? [{ debugName: \"routerLinkActiveOptions\" }] : []));\n this.target = input('_self', ...(ngDevMode ? [{ debugName: \"target\" }] : []));\n this.menuItemTrigger = viewChild.required('menuItemTrigger');\n this.hasChild = signal(false, ...(ngDevMode ? [{ debugName: \"hasChild\" }] : []));\n this.isCompactMode = computed(() => this.menuMode() === 'compact', ...(ngDevMode ? [{ debugName: \"isCompactMode\" }] : []));\n /** Top-level rail entry in compact mode (opens the flyout context menu). */\n this.isFirstLevel = computed(() => {\n if (!this.isCompactMode()) {\n return false;\n }\n return !this.hostElement.parentElement?.closest('.ax-side-children-content');\n }, ...(ngDevMode ? [{ debugName: \"isFirstLevel\" }] : []));\n /** Tooltip text for first-level items in compact mode only. */\n this.tooltipContent = computed(() => {\n if (!this.isFirstLevel())\n return null;\n return this.text().trim() || this.contentLabel().trim() || null;\n }, ...(ngDevMode ? [{ debugName: \"tooltipContent\" }] : []));\n this.elem = inject((ElementRef));\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.menuMode = signal('full', ...(ngDevMode ? [{ debugName: \"menuMode\" }] : []));\n this.contentLabel = signal('', ...(ngDevMode ? [{ debugName: \"contentLabel\" }] : []));\n this.childObserver = null;\n this.childRefreshScheduled = false;\n this.childItems = contentChildren(AXSideMenuItemComponent, ...(ngDevMode ? [{ debugName: \"childItems\", descendants: true }] : [{ descendants: true }]));\n this.childrenSlot = viewChild('childrenSlot', ...(ngDevMode ? [{ debugName: \"childrenSlot\" }] : []));\n this.childrenContextMenu = viewChild('childrenContextMenu', ...(ngDevMode ? [{ debugName: \"childrenContextMenu\" }] : []));\n this.#childCheckEffect = effect(() => {\n if (this.childItems().length) {\n this.updateHasChild();\n }\n }, ...(ngDevMode ? [{ debugName: \"#childCheckEffect\" }] : []));\n this.#initChildren = afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this.reparentOrphanedChildren();\n this.updateHasChild();\n this.updateContentLabel();\n this.childObserver = new MutationObserver((records) => {\n if (!this.hasRelevantMutation(records)) {\n return;\n }\n this.scheduleChildRefresh();\n });\n this.childObserver.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n this.destroyRef.onDestroy(() => this.childObserver?.disconnect());\n });\n this.#contextMenuSync = effect(() => {\n if (!this.isCompactMode() || !isPlatformBrowser(this.platformId) || !this.isFirstLevel() || !this.hasChild()) {\n return;\n }\n const menu = this.childrenContextMenu();\n if (!menu) {\n return;\n }\n if (this.isCollapsed()) {\n menu.close();\n }\n else {\n this.closeSiblingCompactMenus();\n this.openCompactContextMenu(menu);\n }\n }, ...(ngDevMode ? [{ debugName: \"#contextMenuSync\" }] : []));\n }\n get hostElement() {\n return this.elem.nativeElement;\n }\n #childCheckEffect;\n #initChildren;\n #contextMenuSync;\n syncMenuMode(mode) {\n if (this.menuMode() === mode) {\n return;\n }\n this.menuMode.set(mode);\n this.childrenContextMenu()?.close();\n if (mode === 'compact') {\n this.isCollapsed.set(true);\n }\n }\n /** Builds the cascading `AXMenuItem` tree used by the compact-mode context menu. */\n buildMenuItemsFromChildren() {\n this.reparentOrphanedChildren();\n const slot = this.childrenSlot()?.nativeElement;\n const itemsFromSlot = slot ? this.mapSlotChildrenToMenuItems(slot) : [];\n if (itemsFromSlot.length > 0) {\n return itemsFromSlot;\n }\n return this.getDirectChildElements().map((el) => this.toMenuItem(el));\n }\n activateFromContextMenu(nativeEvent) {\n if (this.disabled || this.isLoading()) {\n return;\n }\n const trigger = this.menuItemTrigger().nativeElement;\n if (trigger instanceof HTMLAnchorElement) {\n trigger.click();\n return;\n }\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent,\n handled: false,\n });\n }\n toggle() {\n if (this.isCompactMode() && (!this.hasChild() || !this.isFirstLevel())) {\n return;\n }\n this.isCollapsed.update((collapsed) => !collapsed);\n }\n open() {\n this.isCollapsed.set(false);\n }\n close() {\n this.isCollapsed.set(true);\n this.childrenContextMenu()?.close();\n }\n handleContextMenuItemClick(event) {\n const instance = event.item.data?.sideMenuItem;\n if (!instance || instance.hasChild())\n return;\n instance.activateFromContextMenu(event.nativeEvent);\n }\n handleContextMenuClosed() {\n if (!this.isCollapsed())\n this.isCollapsed.set(true);\n }\n handleClickEvent(e) {\n if (this.disabled || this.isLoading())\n return;\n const event = {\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n handled: false,\n };\n this.onClick.emit(event);\n if (!event.handled && this.toggleOnClick() && (this.hasChild() || !this.isCompactMode()))\n this.toggle();\n e.stopPropagation();\n }\n openCompactContextMenu(menu) {\n const items = this.buildMenuItemsFromChildren();\n if (!items.length)\n return;\n menu.showAt(this.getContextMenuAnchorPoint(), this.menuItemTrigger().nativeElement, {\n sender: menu,\n canceled: false,\n targetElement: this.menuItemTrigger().nativeElement,\n items,\n });\n }\n getContextMenuAnchorPoint() {\n const rect = this.menuItemTrigger().nativeElement.getBoundingClientRect();\n const offset = 8;\n if (AXHtmlUtil.isRtl(this.hostElement)) {\n return { x: rect.left - offset, y: rect.top };\n }\n return { x: rect.right + offset, y: rect.top };\n }\n mapSlotChildrenToMenuItems(slot) {\n const items = [];\n let pendingGroupTitle;\n for (const child of Array.from(slot.children)) {\n if (child.tagName === 'AX-TITLE') {\n pendingGroupTitle = child.textContent?.trim() || undefined;\n continue;\n }\n if (child.tagName === 'AX-DIVIDER') {\n if (items.length > 0) {\n items[items.length - 1] = { ...items[items.length - 1], break: true };\n }\n continue;\n }\n if (child.tagName !== 'AX-SIDE-MENU-ITEM') {\n continue;\n }\n const menuItem = this.toMenuItem(child);\n if (pendingGroupTitle) {\n menuItem.group = { title: pendingGroupTitle };\n pendingGroupTitle = undefined;\n }\n items.push(menuItem);\n }\n return items;\n }\n toMenuItem(host) {\n const instance = this.getInstanceFromElement(host);\n const item = {\n text: this.getItemLabel(host, instance),\n disabled: instance?.disabled ?? false,\n icon: this.getItemIcon(host),\n suffix: this.getItemSuffix(host),\n };\n if (instance) {\n item.data = { sideMenuItem: instance };\n }\n if (this.hasNestedChildren(host, instance)) {\n item.items =\n instance?.buildMenuItemsFromChildren() ?? this.getDirectChildElements(host).map((el) => this.toMenuItem(el));\n }\n return item;\n }\n hasNestedChildren(host, instance) {\n return (instance?.hasChild() ?? false) || this.getDirectChildElements(host).length > 0;\n }\n /** Direct `ax-side-menu-item` children of `menuHost` (defaults to this item). */\n getDirectChildElements(menuHost = this.hostElement) {\n return Array.from(menuHost.querySelectorAll('ax-side-menu-item')).filter((el) => {\n if (el === menuHost) {\n return false;\n }\n return el.parentElement?.closest('ax-side-menu-item') === menuHost;\n });\n }\n reparentOrphanedChildren() {\n const container = this.childrenSlot()?.nativeElement;\n if (!container) {\n return;\n }\n for (const el of this.getDirectChildElements()) {\n if (!container.contains(el)) {\n try {\n container.appendChild(el);\n }\n catch {\n // HierarchyRequestError when the node is already being moved.\n }\n }\n }\n }\n scheduleChildRefresh() {\n if (this.childRefreshScheduled) {\n return;\n }\n this.childRefreshScheduled = true;\n requestAnimationFrame(() => {\n this.childRefreshScheduled = false;\n this.reparentOrphanedChildren();\n this.updateHasChild();\n this.updateContentLabel();\n });\n }\n hasRelevantMutation(records) {\n for (const record of records) {\n if (record.type === 'characterData') {\n return true;\n }\n if (this.nodeListContainsMenuStructuralNode(record.addedNodes) ||\n this.nodeListContainsMenuStructuralNode(record.removedNodes)) {\n return true;\n }\n }\n return false;\n }\n nodeListContainsMenuStructuralNode(nodes) {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n const tagName = node.tagName;\n if (tagName === 'AX-SIDE-MENU-ITEM' || tagName === 'AX-TITLE' || tagName === 'AX-DIVIDER') {\n return true;\n }\n if (node.querySelector?.('ax-side-menu-item,ax-title,ax-divider')) {\n return true;\n }\n }\n return false;\n }\n getItemLabel(host, instance) {\n if (instance?.text()) {\n return instance.text();\n }\n const insideText = host.querySelector('.ax-inside-text');\n if (insideText?.textContent?.trim()) {\n return insideText.textContent.trim();\n }\n return host.querySelector('ax-text')?.textContent?.trim() ?? '';\n }\n getItemIcon(host) {\n const axIcon = host.querySelector('ax-prefix ax-icon');\n if (!axIcon) {\n return undefined;\n }\n return axIcon.getAttribute('icon') ?? axIcon.querySelector('i')?.className ?? undefined;\n }\n getItemSuffix(host) {\n const text = host.querySelector('ax-suffix ax-text')?.textContent?.trim();\n return text ? { text } : undefined;\n }\n getInstanceFromElement(el) {\n const ctx = el.__axContext__;\n return ctx instanceof AXSideMenuItemComponent ? ctx : undefined;\n }\n closeSiblingCompactMenus() {\n const menuHost = this.hostElement.closest('ax-side-menu');\n if (!menuHost) {\n return;\n }\n menuHost.querySelectorAll(':scope > ax-side-menu-item').forEach((el) => {\n const sibling = this.getInstanceFromElement(el);\n if (!sibling || sibling === this) {\n return;\n }\n sibling.isCollapsed.set(true);\n sibling.childrenContextMenu()?.close();\n });\n }\n updateHasChild() {\n this.hasChild.set(this.childItems().length > 0 || this.getDirectChildElements().length > 0);\n }\n updateContentLabel() {\n if (!isPlatformBrowser(this.platformId))\n return;\n const insideText = this.hostElement.querySelector('.ax-inside-text');\n const label = insideText?.textContent?.trim() || this.hostElement.querySelector('ax-text')?.textContent?.trim() || '';\n if (label !== this.contentLabel()) {\n this.contentLabel.set(label);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXSideMenuItemComponent, isStandalone: true, selector: \"ax-side-menu-item\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: \"active\", publicName: \"active\", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: \"isLoading\", publicName: \"isLoading\", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: \"isCollapsed\", publicName: \"isCollapsed\", isSignal: true, isRequired: false, transformFunction: null }, toggleOnClick: { classPropertyName: \"toggleOnClick\", publicName: \"toggleOnClick\", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: \"href\", publicName: \"href\", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: \"routerLink\", publicName: \"routerLink\", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActive: { classPropertyName: \"routerLinkActive\", publicName: \"routerLinkActive\", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: \"routerLinkActiveOptions\", publicName: \"routerLinkActiveOptions\", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { text: \"textChange\", active: \"activeChange\", isLoading: \"isLoadingChange\", isCollapsed: \"isCollapsedChange\", onClick: \"onClick\" }, providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }], queries: [{ propertyName: \"childItems\", predicate: AXSideMenuItemComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: \"menuItemTrigger\", first: true, predicate: [\"menuItemTrigger\"], descendants: true, isSignal: true }, { propertyName: \"childrenSlot\", first: true, predicate: [\"childrenSlot\"], descendants: true, isSignal: true }, { propertyName: \"childrenContextMenu\", first: true, predicate: [\"childrenContextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div [axTooltip]=\\\"tooltipContent()\\\" axTooltipPlacement=\\\"end\\\" class=\\\"ax-side-menu-wrapper\\\">\\n @if (!isCompactMode()) {\\n <ng-content select=\\\"ax-title\\\"></ng-content>\\n }\\n @if (routerLink()) {\\n <a\\n #menuItemTrigger\\n [axRipple]\\n [target]=\\\"target()\\\"\\n class=\\\"ax-side-item\\\"\\n [routerLink]=\\\"routerLink()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [routerLinkActive]=\\\"routerLinkActive()\\\"\\n [routerLinkActiveOptions]=\\\"routerLinkActiveOptions()\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </a>\\n } @else if (href()) {\\n <a\\n #menuItemTrigger\\n [axRipple]\\n [href]=\\\"href()\\\"\\n [target]=\\\"target()\\\"\\n class=\\\"ax-side-item\\\"\\n [class.ax-state-active]=\\\"active()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </a>\\n } @else {\\n <div\\n #menuItemTrigger\\n [axRipple]\\n class=\\\"ax-side-item\\\"\\n [class.ax-state-active]=\\\"active()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </div>\\n }\\n\\n <div\\n class=\\\"ax-side-children\\\"\\n [class.ax-collapsed]=\\\"(!isCompactMode() && isCollapsed()) || (isCompactMode() && isFirstLevel())\\\"\\n [class.ax-empty]=\\\"!hasChild() && !isLoading()\\\"\\n >\\n @if (isLoading()) {\\n <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\\n }\\n <div #childrenSlot class=\\\"ax-side-children-content\\\" [hidden]=\\\"isLoading()\\\">\\n <ng-content select=\\\"ax-side-menu-item, ng-container, [ngTemplateOutlet]\\\"></ng-content>\\n </div>\\n </div>\\n\\n @if (isCompactMode() && hasChild()) {\\n <ax-context-menu\\n #childrenContextMenu\\n class=\\\"ax-side-menu-children-context-menu\\\"\\n [openOn]=\\\"'hover'\\\"\\n [closeOn]=\\\"'leave'\\\"\\n [closeOnRouteChange]=\\\"true\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n (onClose)=\\\"handleContextMenuClosed()\\\"\\n />\\n }\\n\\n <ng-content select=\\\"ax-divider\\\"></ng-content>\\n <ng-template #menuItemContent>\\n <div class=\\\"ax-start-side\\\">\\n <ng-content select=\\\"ax-prefix\\\"></ng-content>\\n <div class=\\\"ax-inside-text\\\">\\n @if (text()) {\\n <span>{{ text() }}</span>\\n }\\n <ng-content></ng-content>\\n </div>\\n </div>\\n <div class=\\\"ax-end-side\\\">\\n <ng-content select=\\\"ax-suffix\\\"></ng-content>\\n @if (hasChild() && !isLoading() && toggleOnClick() && !isFirstLevel()) {\\n <span class=\\\"ax-icon ax-icon-chevron-right arrow-icon\\\" [class.arrow-icon-expand]=\\\"!isCollapsed()\\\"> </span>\\n }\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n }\\n </div>\\n </ng-template>\\n</div>\\n\", dependencies: [{ kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"directive\", type: RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: RouterLinkActive, selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTooltipModule }, { kind: \"directive\", type: i1.AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"component\", type: AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"closeOnRouteChange\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\", \"onClose\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuItemComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-side-menu-item', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n AXRippleDirective,\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipModule,\n AXContextMenuComponent,\n ], providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }], template: \"<div [axTooltip]=\\\"tooltipContent()\\\" axTooltipPlacement=\\\"end\\\" class=\\\"ax-side-menu-wrapper\\\">\\n @if (!isCompactMode()) {\\n <ng-content select=\\\"ax-title\\\"></ng-content>\\n }\\n @if (routerLink()) {\\n <a\\n #menuItemTrigger\\n [axRipple]\\n [target]=\\\"target()\\\"\\n class=\\\"ax-side-item\\\"\\n [routerLink]=\\\"routerLink()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [routerLinkActive]=\\\"routerLinkActive()\\\"\\n [routerLinkActiveOptions]=\\\"routerLinkActiveOptions()\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </a>\\n } @else if (href()) {\\n <a\\n #menuItemTrigger\\n [axRipple]\\n [href]=\\\"href()\\\"\\n [target]=\\\"target()\\\"\\n class=\\\"ax-side-item\\\"\\n [class.ax-state-active]=\\\"active()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </a>\\n } @else {\\n <div\\n #menuItemTrigger\\n [axRipple]\\n class=\\\"ax-side-item\\\"\\n [class.ax-state-active]=\\\"active()\\\"\\n (click)=\\\"handleClickEvent($event)\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"menuItemContent\\\"></ng-container>\\n </div>\\n }\\n\\n <div\\n class=\\\"ax-side-children\\\"\\n [class.ax-collapsed]=\\\"(!isCompactMode() && isCollapsed()) || (isCompactMode() && isFirstLevel())\\\"\\n [class.ax-empty]=\\\"!hasChild() && !isLoading()\\\"\\n >\\n @if (isLoading()) {\\n <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\\n }\\n <div #childrenSlot class=\\\"ax-side-children-content\\\" [hidden]=\\\"isLoading()\\\">\\n <ng-content select=\\\"ax-side-menu-item, ng-container, [ngTemplateOutlet]\\\"></ng-content>\\n </div>\\n </div>\\n\\n @if (isCompactMode() && hasChild()) {\\n <ax-context-menu\\n #childrenContextMenu\\n class=\\\"ax-side-menu-children-context-menu\\\"\\n [openOn]=\\\"'hover'\\\"\\n [closeOn]=\\\"'leave'\\\"\\n [closeOnRouteChange]=\\\"true\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n (onClose)=\\\"handleContextMenuClosed()\\\"\\n />\\n }\\n\\n <ng-content select=\\\"ax-divider\\\"></ng-content>\\n <ng-template #menuItemContent>\\n <div class=\\\"ax-start-side\\\">\\n <ng-content select=\\\"ax-prefix\\\"></ng-content>\\n <div class=\\\"ax-inside-text\\\">\\n @if (text()) {\\n <span>{{ text() }}</span>\\n }\\n <ng-content></ng-content>\\n </div>\\n </div>\\n <div class=\\\"ax-end-side\\\">\\n <ng-content select=\\\"ax-suffix\\\"></ng-content>\\n @if (hasChild() && !isLoading() && toggleOnClick() && !isFirstLevel()) {\\n <span class=\\\"ax-icon ax-icon-chevron-right arrow-icon\\\" [class.arrow-icon-expand]=\\\"!isCollapsed()\\\"> </span>\\n }\\n @if (isLoading()) {\\n <ax-loading></ax-loading>\\n }\\n </div>\\n </ng-template>\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9zaWRlLW1lbnUvc3JjL2xpYi9zaWRlLW1lbnUtaXRlbS9zaWRlLW1lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3NpZGUtbWVudS9zcmMvbGliL3NpZGUtbWVudS1pdGVtL3NpZGUtbWVudS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUE0QyxNQUFNLHlCQUF5QixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixVQUFVLEVBQUUs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dkUsNDZGQTJGQSw0Q0RoREksaUJBQWlCLDhGQUNqQixVQUFVLG9PQUNWLGdCQUFnQiw4TUFDaEIsZ0JBQWdCLG9KQUNoQixrQkFBa0IsMEhBR2xCLGVBQWUsdVJBQ2Ysc0JBQXNCLGdNQUh0QixTQUFTLHlDQUNULGdCQUFnQjs7MkZBTVAsdUJBQXVCO2tCQW5CbkMsU0FBUzsrQkFDRSxtQkFBbUIsVUFDckIsQ0FBQyxVQUFVLENBQUMsbUJBRUgsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysc0JBQXNCO3FCQUN2QixhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2xpY2tFdmVudCwgQVhDb21wb25lbnQsIEFYUmlwcGxlRGlyZWN0aXZlLCBNWEludGVyYWN0aXZlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYQ29udGV4dE1lbnVDb21wb25lbnQsIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsIEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBpc1BsYXRmb3JtQnJvd3NlciwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucywgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmV4cG9ydCBjbGFzcyBBWFNpZGVNZW51SXRlbUNsaWNrRXZlbnQgZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBoYW5kbGVkID0gZmFsc2U7XG59XG5cbi8qKiBSb3V0ZXMgY29udGV4dC1tZW51IGNsaWNrcyBiYWNrIHRvIHRoZSBtYXRjaGluZyBgYXgtc2lkZS1tZW51LWl0ZW1gLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFNpZGVNZW51Q29udGV4dE1lbnVJdGVtRGF0YSB7XG4gIHNpZGVNZW51SXRlbTogQVhTaWRlTWVudUl0ZW1Db21wb25lbnQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXNpZGUtbWVudS1pdGVtJyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBSb3V0ZXJMaW5rQWN0aXZlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhMb2FkaW5nQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFYVG9vbHRpcE1vZHVsZSxcbiAgICBBWENvbnRleHRNZW51Q29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTaWRlTWVudUl0ZW1Db21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50IGV4dGVuZHMgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XG4gIHRleHQgPSBtb2RlbCgnJyk7XG4gIGFjdGl2ZSA9IG1vZGVsKGZhbHNlKTtcbiAgaXNMb2FkaW5nID0gbW9kZWwoZmFsc2UpO1xuICBpc0NvbGxhcHNlZCA9IG1vZGVsKHRydWUpO1xuICBvbkNsaWNrID0gb3V0cHV0PEFYU2lkZU1lbnVJdGVtQ2xpY2tFdmVudD4oKTtcblxuICByZWFkb25seSB0b2dnbGVPbkNsaWNrID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGhyZWYgPSBpbnB1dDxzdHJpbmcgfCBudWxsPigpO1xuICByZWFkb25seSByb3V0ZXJMaW5rID0gaW5wdXQ8c3RyaW5nIHwgYW55W10gfCBVcmxUcmVlIHwgbnVsbD4oKTtcbiAgcmVhZG9ubHkgcm91dGVyTGlua0FjdGl2ZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPignYXgtc3RhdGUtYWN0aXZlJyk7XG4gIHJlYWRvbmx5IHJvdXRlckxpbmtBY3RpdmVPcHRpb25zID0gaW5wdXQ8eyBleGFjdDogYm9vbGVhbiB9IHwgSXNBY3RpdmVNYXRjaE9wdGlvbnM+KHsgZXhhY3Q6IGZhbHNlIH0pO1xuICByZWFkb25seSB0YXJnZXQgPSBpbnB1dDwnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc+KCdfc2VsZicpO1xuXG4gIHByb3RlY3RlZCBtZW51SXRlbVRyaWdnZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdtZW51SXRlbVRyaWdnZXInKTtcbiAgcHJvdGVjdGVkIGhhc0NoaWxkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzQ29tcGFjdE1vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdjb21wYWN0Jyk7XG5cbiAgLyoqIFRvcC1sZXZlbCByYWlsIGVudHJ5IGluIGNvbXBhY3QgbW9kZSAob3BlbnMgdGhlIGZseW91dCBjb250ZXh0IG1lbnUpLiAqL1xuICBwcm90ZWN0ZWQgaXNGaXJzdExldmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc0NvbXBhY3RNb2RlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmhvc3RFbGVtZW50LnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoJy5heC1zaWRlLWNoaWxkcmVuLWNvbnRlbnQnKTtcbiAgfSk7XG5cbiAgLyoqIFRvb2x0aXAgdGV4dCBmb3IgZmlyc3QtbGV2ZWwgaXRlbXMgaW4gY29tcGFjdCBtb2RlIG9ubHkuICovXG4gIHByb3RlY3RlZCB0b29sdGlwQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaXNGaXJzdExldmVsKCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50cmltKCkgfHwgdGhpcy5jb250ZW50TGFiZWwoKS50cmltKCkgfHwgbnVsbDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnVNb2RlID0gc2lnbmFsPCdmdWxsJyB8ICdjb21wYWN0Jz4oJ2Z1bGwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50TGFiZWwgPSBzaWduYWwoJycpO1xuXG4gIHByaXZhdGUgY2hpbGRPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNoaWxkUmVmcmVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoaWxkSXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oQVhTaWRlTWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW5TbG90ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignY2hpbGRyZW5TbG90Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW5Db250ZXh0TWVudSA9IHZpZXdDaGlsZDxBWENvbnRleHRNZW51Q29tcG9uZW50PignY2hpbGRyZW5Db250ZXh0TWVudScpO1xuXG4gIHByaXZhdGUgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAjY2hpbGRDaGVja0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuY2hpbGRJdGVtcygpLmxlbmd0aCkge1xuICAgICAgdGhpcy51cGRhdGVIYXNDaGlsZCgpO1xuICAgIH1cbiAgfSk7XG5cbiAgI2luaXRDaGlsZHJlbiA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVwYXJlbnRPcnBoYW5lZENoaWxkcmVuKCk7XG4gICAgdGhpcy51cGRhdGVIYXNDaGlsZCgpO1xuICAgIHRoaXMudXBkYXRlQ29udGVudExhYmVsKCk7XG4gICAgdGhpcy5jaGlsZE9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHJlY29yZHMpID0+IHtcbiAgICAgIGlmICghdGhpcy5oYXNSZWxldmFudE11dGF0aW9uKHJlY29yZHMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2NoZWR1bGVDaGlsZFJlZnJlc2goKTtcbiAgICB9KTtcbiAgICB0aGlzLmNoaWxkT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvc3RFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuY2hpbGRPYnNlcnZlcj8uZGlzY29ubmVjdCgpKTtcbiAgfSk7XG5cbiAgI2NvbnRleHRNZW51U3luYyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzQ29tcGFjdE1vZGUoKSB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5pc0ZpcnN0TGV2ZWwoKSB8fCAhdGhpcy5oYXNDaGlsZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWVudSA9IHRoaXMuY2hpbGRyZW5Db250ZXh0TWVudSgpO1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgIG1lbnUuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZVNpYmxpbmdDb21wYWN0TWVudXMoKTtcbiAgICAgIHRoaXMub3BlbkNvbXBhY3RDb250ZXh0TWVudShtZW51KTtcbiAgICB9XG4gIH0pO1xuXG4gIHN5bmNNZW51TW9kZShtb2RlOiAnZnVsbCcgfCAnY29tcGFjdCcpIHtcbiAgICBpZiAodGhpcy5tZW51TW9kZSgpID09PSBtb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVudU1vZGUuc2V0KG1vZGUpO1xuICAgIHRoaXMuY2hpbGRyZW5Db250ZXh0TWVudSgpPy5jbG9zZSgpO1xuICAgIGlmIChtb2RlID09PSAnY29tcGFjdCcpIHtcbiAgICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBCdWlsZHMgdGhlIGNhc2NhZGluZyBgQVhNZW51SXRlbWAgdHJlZSB1c2VkIGJ5IHRoZSBjb21wYWN0LW1vZGUgY29udGV4dCBtZW51LiAqL1xuICBidWlsZE1lbnVJdGVtc0Zyb21DaGlsZHJlbigpOiBBWE1lbnVJdGVtW10ge1xuICAgIHRoaXMucmVwYXJlbnRPcnBoYW5lZENoaWxkcmVuKCk7XG5cbiAgICBjb25zdCBzbG90ID0gdGhpcy5jaGlsZHJlblNsb3QoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpdGVtc0Zyb21TbG90ID0gc2xvdCA/IHRoaXMubWFwU2xvdENoaWxkcmVuVG9NZW51SXRlbXMoc2xvdCkgOiBbXTtcblxuICAgIGlmIChpdGVtc0Zyb21TbG90Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpdGVtc0Zyb21TbG90O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldERpcmVjdENoaWxkRWxlbWVudHMoKS5tYXAoKGVsKSA9PiB0aGlzLnRvTWVudUl0ZW0oZWwpKTtcbiAgfVxuXG4gIGFjdGl2YXRlRnJvbUNvbnRleHRNZW51KG5hdGl2ZUV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc0xvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0cmlnZ2VyID0gdGhpcy5tZW51SXRlbVRyaWdnZXIoKS5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0cmlnZ2VyIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpIHtcbiAgICAgIHRyaWdnZXIuY2xpY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgaGFuZGxlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNDb21wYWN0TW9kZSgpICYmICghdGhpcy5oYXNDaGlsZCgpIHx8ICF0aGlzLmlzRmlyc3RMZXZlbCgpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzQ29sbGFwc2VkLnVwZGF0ZSgoY29sbGFwc2VkKSA9PiAhY29sbGFwc2VkKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jaGlsZHJlbkNvbnRleHRNZW51KCk/LmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soZXZlbnQ6IEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IChldmVudC5pdGVtLmRhdGEgYXMgQVhTaWRlTWVudUNvbnRleHRNZW51SXRlbURhdGEgfCB1bmRlZmluZWQpPy5zaWRlTWVudUl0ZW07XG4gICAgaWYgKCFpbnN0YW5jZSB8fCBpbnN0YW5jZS5oYXNDaGlsZCgpKSByZXR1cm47XG4gICAgaW5zdGFuY2UuYWN0aXZhdGVGcm9tQ29udGV4dE1lbnUoZXZlbnQubmF0aXZlRXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRNZW51Q2xvc2VkKCkge1xuICAgIGlmICghdGhpcy5pc0NvbGxhcHNlZCgpKSB0aGlzLmlzQ29sbGFwc2VkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzTG9hZGluZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBldmVudDogQVhTaWRlTWVudUl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgaGFuZGxlZDogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgaWYgKCFldmVudC5oYW5kbGVkICYmIHRoaXMudG9nZ2xlT25DbGljaygpICYmICh0aGlzLmhhc0NoaWxkKCkgfHwgIXRoaXMuaXNDb21wYWN0TW9kZSgpKSkgdGhpcy50b2dnbGUoKTtcblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db21wYWN0Q29udGV4dE1lbnUobWVudTogQVhDb250ZXh0TWVudUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5idWlsZE1lbnVJdGVtc0Zyb21DaGlsZHJlbigpO1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBtZW51LnNob3dBdCh0aGlzLmdldENvbnRleHRNZW51QW5jaG9yUG9pbnQoKSwgdGhpcy5tZW51SXRlbVRyaWdnZXIoKS5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBzZW5kZXI6IG1lbnUsXG4gICAgICBjYW5jZWxlZDogZmFsc2UsXG4gICAgICB0YXJnZXRFbGVtZW50OiB0aGlzLm1lbnVJdGVtVHJpZ2dlcigpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dE1lbnVBbmNob3JQb2ludCgpOiBBWFBvaW50IHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5tZW51SXRlbVRyaWdnZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IG9mZnNldCA9IDg7XG4gICAgaWYgKEFYSHRtbFV0aWwuaXNSdGwodGhpcy5ob3N0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiB7IHg6IHJlY3QubGVmdCAtIG9mZnNldCwgeTogcmVjdC50b3AgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgeDogcmVjdC5yaWdodCArIG9mZnNldCwgeTogcmVjdC50b3AgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2xvdENoaWxkcmVuVG9NZW51SXRlbXMoc2xvdDogSFRNTEVsZW1lbnQpOiBBWE1lbnVJdGVtW10ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWE1lbnVJdGVtW10gPSBbXTtcbiAgICBsZXQgcGVuZGluZ0dyb3VwVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgQXJyYXkuZnJvbShzbG90LmNoaWxkcmVuKSkge1xuICAgICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdBWC1USVRMRScpIHtcbiAgICAgICAgcGVuZGluZ0dyb3VwVGl0bGUgPSBjaGlsZC50ZXh0Q29udGVudD8udHJpbSgpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ0FYLURJVklERVInKSB7XG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0gPSB7IC4uLml0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLCBicmVhazogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLnRhZ05hbWUgIT09ICdBWC1TSURFLU1FTlUtSVRFTScpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy50b01lbnVJdGVtKGNoaWxkIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgIGlmIChwZW5kaW5nR3JvdXBUaXRsZSkge1xuICAgICAgICBtZW51SXRlbS5ncm91cCA9IHsgdGl0bGU6IHBlbmRpbmdHcm91cFRpdGxlIH07XG4gICAgICAgIHBlbmRpbmdHcm91cFRpdGxlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaXRlbXMucHVzaChtZW51SXRlbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSB0b01lbnVJdGVtKGhvc3Q6IEhUTUxFbGVtZW50KTogQVhNZW51SXRlbSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmdldEluc3RhbmNlRnJvbUVsZW1lbnQoaG9zdCk7XG4gICAgY29uc3QgaXRlbTogQVhNZW51SXRlbSA9IHtcbiAgICAgIHRleHQ6IHRoaXMuZ2V0SXRlbUxhYmVsKGhvc3QsIGluc3RhbmNlKSxcbiAgICAgIGRpc2FibGVkOiBpbnN0YW5jZT8uZGlzYWJsZWQgPz8gZmFsc2UsXG4gICAgICBpY29uOiB0aGlzLmdldEl0ZW1JY29uKGhvc3QpLFxuICAgICAgc3VmZml4OiB0aGlzLmdldEl0ZW1TdWZmaXgoaG9zdCksXG4gICAgfTtcblxuICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgaXRlbS5kYXRhID0geyBzaWRlTWVudUl0ZW06IGluc3RhbmNlIH0gc2F0aXNmaWVzIEFYU2lkZU1lbnVDb250ZXh0TWVudUl0ZW1EYXRhO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc05lc3RlZENoaWxkcmVuKGhvc3QsIGluc3RhbmNlKSkge1xuICAgICAgaXRlbS5pdGVtcyA9XG4gICAgICAgIGluc3RhbmNlPy5idWlsZE1lbnVJdGVtc0Zyb21DaGlsZHJlbigpID8/IHRoaXMuZ2V0RGlyZWN0Q2hpbGRFbGVtZW50cyhob3N0KS5tYXAoKGVsKSA9PiB0aGlzLnRvTWVudUl0ZW0oZWwpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTmVzdGVkQ2hpbGRyZW4oaG9zdDogSFRNTEVsZW1lbnQsIGluc3RhbmNlPzogQVhTaWRlTWVudUl0ZW1Db21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGluc3RhbmNlPy5oYXNDaGlsZCgpID8/IGZhbHNlKSB8fCB0aGlzLmdldERpcmVjdENoaWxkRWxlbWVudHMoaG9zdCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKiBEaXJlY3QgYGF4LXNpZGUtbWVudS1pdGVtYCBjaGlsZHJlbiBvZiBgbWVudUhvc3RgIChkZWZhdWx0cyB0byB0aGlzIGl0ZW0pLiAqL1xuICBwcml2YXRlIGdldERpcmVjdENoaWxkRWxlbWVudHMobWVudUhvc3Q6IEhUTUxFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudCk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKG1lbnVIb3N0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F4LXNpZGUtbWVudS1pdGVtJykpLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGlmIChlbCA9PT0gbWVudUhvc3QpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsLnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoJ2F4LXNpZGUtbWVudS1pdGVtJykgPT09IG1lbnVIb3N0O1xuICAgIH0pIGFzIEhUTUxFbGVtZW50W107XG4gIH1cblxuICBwcml2YXRlIHJlcGFyZW50T3JwaGFuZWRDaGlsZHJlbigpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNoaWxkcmVuU2xvdCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLmdldERpcmVjdENoaWxkRWxlbWVudHMoKSkge1xuICAgICAgaWYgKCFjb250YWluZXIuY29udGFpbnMoZWwpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSGllcmFyY2h5UmVxdWVzdEVycm9yIHdoZW4gdGhlIG5vZGUgaXMgYWxyZWFkeSBiZWluZyBtb3ZlZC5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVDaGlsZFJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuY2hpbGRSZWZyZXNoU2NoZWR1bGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hpbGRSZWZyZXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5jaGlsZFJlZnJlc2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVwYXJlbnRPcnBoYW5lZENoaWxkcmVuKCk7XG4gICAgICB0aGlzLnVwZGF0ZUhhc0NoaWxkKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnRMYWJlbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNSZWxldmFudE11dGF0aW9uKHJlY29yZHM6IE11dGF0aW9uUmVjb3JkW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdjaGFyYWN0ZXJEYXRhJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5ub2RlTGlzdENvbnRhaW5zTWVudVN0cnVjdHVyYWxOb2RlKHJlY29yZC5hZGRlZE5vZGVzKSB8fFxuICAgICAgICB0aGlzLm5vZGVMaXN0Q29udGFpbnNNZW51U3RydWN0dXJhbE5vZGUocmVjb3JkLnJlbW92ZWROb2RlcylcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub2RlTGlzdENvbnRhaW5zTWVudVN0cnVjdHVyYWxOb2RlKG5vZGVzOiBOb2RlTGlzdCk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBBcnJheS5mcm9tKG5vZGVzKSkge1xuICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFnTmFtZSA9IG5vZGUudGFnTmFtZTtcbiAgICAgIGlmICh0YWdOYW1lID09PSAnQVgtU0lERS1NRU5VLUlURU0nIHx8IHRhZ05hbWUgPT09ICdBWC1USVRMRScgfHwgdGFnTmFtZSA9PT0gJ0FYLURJVklERVInKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucXVlcnlTZWxlY3Rvcj8uKCdheC1zaWRlLW1lbnUtaXRlbSxheC10aXRsZSxheC1kaXZpZGVyJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUxhYmVsKGhvc3Q6IEhUTUxFbGVtZW50LCBpbnN0YW5jZT86IEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50KTogc3RyaW5nIHtcbiAgICBpZiAoaW5zdGFuY2U/LnRleHQoKSkge1xuICAgICAgcmV0dXJuIGluc3RhbmNlLnRleHQoKTtcbiAgICB9XG4gICAgY29uc3QgaW5zaWRlVGV4dCA9IGhvc3QucXVlcnlTZWxlY3RvcignLmF4LWluc2lkZS10ZXh0Jyk7XG4gICAgaWYgKGluc2lkZVRleHQ/LnRleHRDb250ZW50Py50cmltKCkpIHtcbiAgICAgIHJldHVybiBpbnNpZGVUZXh0LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvc3QucXVlcnlTZWxlY3RvcignYXgtdGV4dCcpPy50ZXh0Q29udGVudD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtSWNvbihob3N0OiBIVE1MRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYXhJY29uID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdheC1wcmVmaXggYXgtaWNvbicpO1xuICAgIGlmICghYXhJY29uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gYXhJY29uLmdldEF0dHJpYnV0ZSgnaWNvbicpID8/IGF4SWNvbi5xdWVyeVNlbGVjdG9yKCdpJyk/LmNsYXNzTmFtZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1TdWZmaXgoaG9zdDogSFRNTEVsZW1lbnQpOiB7IHRleHQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0ZXh0ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdheC1zdWZmaXggYXgtdGV4dCcpPy50ZXh0Q29udGVudD8udHJpbSgpO1xuICAgIHJldHVybiB0ZXh0ID8geyB0ZXh0IH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEluc3RhbmNlRnJvbUVsZW1lbnQoZWw6IEVsZW1lbnQpOiBBWFNpZGVNZW51SXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY3R4ID0gKGVsIGFzIHVua25vd24gYXMgeyBfX2F4Q29udGV4dF9fPzogdW5rbm93biB9KS5fX2F4Q29udGV4dF9fO1xuICAgIHJldHVybiBjdHggaW5zdGFuY2VvZiBBWFNpZGVNZW51SXRlbUNvbXBvbmVudCA/IGN0eCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VTaWJsaW5nQ29tcGFjdE1lbnVzKCkge1xuICAgIGNvbnN0IG1lbnVIb3N0ID0gdGhpcy5ob3N0RWxlbWVudC5jbG9zZXN0KCdheC1zaWRlLW1lbnUnKTtcbiAgICBpZiAoIW1lbnVIb3N0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbWVudUhvc3QucXVlcnlTZWxlY3RvckFsbCgnOnNjb3BlID4gYXgtc2lkZS1tZW51LWl0ZW0nKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgY29uc3Qgc2libGluZyA9IHRoaXMuZ2V0SW5zdGFuY2VGcm9tRWxlbWVudChlbCk7XG4gICAgICBpZiAoIXNpYmxpbmcgfHwgc2libGluZyA9PT0gdGhpcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzaWJsaW5nLmlzQ29sbGFwc2VkLnNldCh0cnVlKTtcbiAgICAgIHNpYmxpbmcuY2hpbGRyZW5Db250ZXh0TWVudSgpPy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIYXNDaGlsZCgpIHtcbiAgICB0aGlzLmhhc0NoaWxkLnNldCh0aGlzLmNoaWxkSXRlbXMoKS5sZW5ndGggPiAwIHx8IHRoaXMuZ2V0RGlyZWN0Q2hpbGRFbGVtZW50cygpLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50TGFiZWwoKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgY29uc3QgaW5zaWRlVGV4dCA9IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmF4LWluc2lkZS10ZXh0Jyk7XG4gICAgY29uc3QgbGFiZWwgPSBpbnNpZGVUZXh0Py50ZXh0Q29udGVudD8udHJpbSgpIHx8IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignYXgtdGV4dCcpPy50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnO1xuICAgIGlmIChsYWJlbCAhPT0gdGhpcy5jb250ZW50TGFiZWwoKSkge1xuICAgICAgdGhpcy5jb250ZW50TGFiZWwuc2V0KGxhYmVsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2F4VG9vbHRpcF09XCJ0b29sdGlwQ29udGVudCgpXCIgYXhUb29sdGlwUGxhY2VtZW50PVwiZW5kXCIgY2xhc3M9XCJheC1zaWRlLW1lbnUtd3JhcHBlclwiPlxuICBAaWYgKCFpc0NvbXBhY3RNb2RlKCkpIHtcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgfVxuICBAaWYgKHJvdXRlckxpbmsoKSkge1xuICAgIDxhXG4gICAgICAjbWVudUl0ZW1UcmlnZ2VyXG4gICAgICBbYXhSaXBwbGVdXG4gICAgICBbdGFyZ2V0XT1cInRhcmdldCgpXCJcbiAgICAgIGNsYXNzPVwiYXgtc2lkZS1pdGVtXCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmsoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2tFdmVudCgkZXZlbnQpXCJcbiAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJyb3V0ZXJMaW5rQWN0aXZlKClcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInJvdXRlckxpbmtBY3RpdmVPcHRpb25zKClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudUl0ZW1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuICB9IEBlbHNlIGlmIChocmVmKCkpIHtcbiAgICA8YVxuICAgICAgI21lbnVJdGVtVHJpZ2dlclxuICAgICAgW2F4UmlwcGxlXVxuICAgICAgW2hyZWZdPVwiaHJlZigpXCJcbiAgICAgIFt0YXJnZXRdPVwidGFyZ2V0KClcIlxuICAgICAgY2xhc3M9XCJheC1zaWRlLWl0ZW1cIlxuICAgICAgW2NsYXNzLmF4LXN0YXRlLWFjdGl2ZV09XCJhY3RpdmUoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2tFdmVudCgkZXZlbnQpXCJcbiAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtZW51SXRlbUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2E+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXZcbiAgICAgICNtZW51SXRlbVRyaWdnZXJcbiAgICAgIFtheFJpcHBsZV1cbiAgICAgIGNsYXNzPVwiYXgtc2lkZS1pdGVtXCJcbiAgICAgIFtjbGFzcy5heC1zdGF0ZS1hY3RpdmVdPVwiYWN0aXZlKClcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrRXZlbnQoJGV2ZW50KVwiXG4gICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudUl0ZW1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1zaWRlLWNoaWxkcmVuXCJcbiAgICBbY2xhc3MuYXgtY29sbGFwc2VkXT1cIighaXNDb21wYWN0TW9kZSgpICYmIGlzQ29sbGFwc2VkKCkpIHx8IChpc0NvbXBhY3RNb2RlKCkgJiYgaXNGaXJzdExldmVsKCkpXCJcbiAgICBbY2xhc3MuYXgtZW1wdHldPVwiIWhhc0NoaWxkKCkgJiYgIWlzTG9hZGluZygpXCJcbiAgPlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxwPnt7ICdAYWNvcmV4OmNvbW1vbi5zdGF0dXMubG9hZGluZycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvcD5cbiAgICB9XG4gICAgPGRpdiAjY2hpbGRyZW5TbG90IGNsYXNzPVwiYXgtc2lkZS1jaGlsZHJlbi1jb250ZW50XCIgW2hpZGRlbl09XCJpc0xvYWRpbmcoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc2lkZS1tZW51LWl0ZW0sIG5nLWNvbnRhaW5lciwgW25nVGVtcGxhdGVPdXRsZXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKGlzQ29tcGFjdE1vZGUoKSAmJiBoYXNDaGlsZCgpKSB7XG4gICAgPGF4LWNvbnRleHQtbWVudVxuICAgICAgI2NoaWxkcmVuQ29udGV4dE1lbnVcbiAgICAgIGNsYXNzPVwiYXgtc2lkZS1tZW51LWNoaWxkcmVuLWNvbnRleHQtbWVudVwiXG4gICAgICBbb3Blbk9uXT1cIidob3ZlcidcIlxuICAgICAgW2Nsb3NlT25dPVwiJ2xlYXZlJ1wiXG4gICAgICBbY2xvc2VPblJvdXRlQ2hhbmdlXT1cInRydWVcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgKG9uQ2xvc2UpPVwiaGFuZGxlQ29udGV4dE1lbnVDbG9zZWQoKVwiXG4gICAgLz5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWRpdmlkZXJcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1Db250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJheC1zdGFydC1zaWRlXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtaW5zaWRlLXRleHRcIj5cbiAgICAgICAgQGlmICh0ZXh0KCkpIHtcbiAgICAgICAgICA8c3Bhbj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF4LWVuZC1zaWRlXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgICBAaWYgKGhhc0NoaWxkKCkgJiYgIWlzTG9hZGluZygpICYmIHRvZ2dsZU9uQ2xpY2soKSAmJiAhaXNGaXJzdExldmVsKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodCBhcnJvdy1pY29uXCIgW2NsYXNzLmFycm93LWljb24tZXhwYW5kXT1cIiFpc0NvbGxhcHNlZCgpXCI+IDwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, HostBinding, inject, input, model, PLATFORM_ID, signal, ViewEncapsulation, } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuBase } from './side-menu-base';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @category\n * A component for displaying a side menu with customizable content.\n */\nexport class AXSideMenuComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.items = model(...(ngDevMode ? [undefined, { debugName: \"items\" }] : []));\n this.look = input('pills', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this.location = input('start', ...(ngDevMode ? [{ debugName: \"location\" }] : []));\n this.mode = input('full', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n this.elementRef = inject(ElementRef);\n /**\n * All `ax-side-menu-item` instances discovered by walking the host DOM.\n *\n * We use DOM discovery (instead of `contentChildren`) because Angular content\n * queries do **not** traverse embedded views created by `ngTemplateOutlet`,\n * and the `AXSideMenuBase` DI token is not reachable from inside those views\n * either (they inherit injection from the template's declaration site, not\n * the insertion site). Walking the DOM works for direct projection,\n * structural directives, and recursive `ngTemplateOutlet`-based templates\n * uniformly.\n */\n this._items = signal([], ...(ngDevMode ? [{ debugName: \"_items\" }] : []));\n /** Read-only signal exposing every discovered `ax-side-menu-item` instance. */\n this.children = this._items.asReadonly();\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.hostElement = this.elementRef.nativeElement;\n this.domRefreshScheduled = false;\n this.domRefreshObserver = null;\n this.#init = afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.refreshItemsFromDom();\n this.domRefreshObserver = new MutationObserver((records) => {\n if (!this.hasRelevantMenuItemMutation(records)) {\n return;\n }\n this.scheduleDomRefresh();\n });\n this.domRefreshObserver.observe(this.elementRef.nativeElement, { childList: true, subtree: true });\n this.destroyRef.onDestroy(() => this.domRefreshObserver?.disconnect());\n });\n /** Push full/compact mode to every menu item whenever mode changes. */\n this.#syncItemMode = effect(() => {\n const mode = this.mode();\n this._items().forEach((item) => item.syncMenuMode(mode));\n }, ...(ngDevMode ? [{ debugName: \"#syncItemMode\" }] : []));\n }\n #init;\n /** Push full/compact mode to every menu item whenever mode changes. */\n #syncItemMode;\n /**\n * Walks the host DOM to discover every nested `ax-side-menu-item`, looks up\n * the component instance through the `__axContext__` property that\n * `MXBaseComponent.ngOnInit` attaches to each host element, and updates the\n * internal items signal and `.first-level` CSS class accordingly.\n *\n * Triggered both initially and from a `MutationObserver` so recursive\n * templates that add/remove items at runtime stay in sync.\n */\n refreshItemsFromDom() {\n const host = this.elementRef.nativeElement;\n const elements = host.querySelectorAll('ax-side-menu-item');\n const items = [];\n elements.forEach((el) => {\n const instance = el.__axContext__;\n if (instance instanceof AXSideMenuItemComponent) {\n items.push(instance);\n }\n });\n const current = this._items();\n const changed = current.length !== items.length || current.some((it, i) => it !== items[i]);\n if (changed) {\n this._items.set(items);\n }\n this.addFirstLevelClass();\n }\n scheduleDomRefresh() {\n if (this.domRefreshScheduled) {\n return;\n }\n this.domRefreshScheduled = true;\n // Batch multiple rapid mutations (e.g., large template updates or overlays closing)\n // into a single refresh to prevent long main-thread stalls.\n requestAnimationFrame(() => {\n this.domRefreshScheduled = false;\n this.refreshItemsFromDom();\n });\n }\n hasRelevantMenuItemMutation(records) {\n for (const record of records) {\n if (this.nodeListContainsMenuItem(record.addedNodes) || this.nodeListContainsMenuItem(record.removedNodes)) {\n return true;\n }\n }\n return false;\n }\n nodeListContainsMenuItem(nodes) {\n for (const node of Array.from(nodes)) {\n if (!(node instanceof Element)) {\n continue;\n }\n if (node.tagName === 'AX-SIDE-MENU-ITEM') {\n return true;\n }\n if (node.querySelector?.('ax-side-menu-item')) {\n return true;\n }\n }\n return false;\n }\n addFirstLevelClass() {\n const allChildren = this._items();\n allChildren.forEach((item) => item.getHostElement().querySelector('.ax-side-item')?.classList.remove('first-level'));\n allChildren\n .filter((item) => {\n const itemElement = item.getHostElement();\n return (this.hostElement.contains(itemElement) && !itemElement.parentElement?.closest('.ax-side-children-content'));\n })\n .forEach((item) => item.getHostElement().querySelector('.ax-side-item')?.classList.add('first-level'));\n }\n /** @ignore */\n get __hostClass() {\n return [`ax-look-${this.look()}`, `ax-location-${this.location()}`, `ax-mode-${this.mode()}`];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXSideMenuComponent, isStandalone: true, selector: \"ax-side-menu\", inputs: { items: { classPropertyName: \"items\", publicName: \"items\", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, location: { classPropertyName: \"location\", publicName: \"location\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: \"itemsChange\" }, host: { properties: { \"class\": \"this.__hostClass\" } }, providers: [\n { provide: AXComponent, useExisting: AXSideMenuComponent },\n { provide: AXSideMenuBase, useExisting: AXSideMenuComponent },\n ], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-side-menu-item,ax-title,ng-container,[ngTemplateOutlet]\\\"></ng-content>\\n\\n@for (node of items(); track node) {\\n <ng-container [ngTemplateOutlet]=\\\"Recursion\\\" [ngTemplateOutletContext]=\\\"{ $implicit: node }\\\"> </ng-container>\\n}\\n<ng-template #Recursion let-item>\\n @if (item.title) {\\n <ax-title>{{ item.title }}</ax-title>\\n }\\n @if (item.routerLink) {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [target]=\\\"item.target\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [routerLink]=\\\"item.routerLink\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n [routerLinkActive]=\\\"item.routerLinkActive\\\"\\n [routerLinkActiveOptions]=\\\"item.routerLinkActiveOptions\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n } @else if (item.href) {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [href]=\\\"item.href\\\"\\n [target]=\\\"item.target\\\"\\n [active]=\\\"item.active\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n } @else {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [active]=\\\"item.active\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n }\\n\\n <ng-template #sideMenuItemContent>\\n <ax-prefix>\\n @if (item.icon) {\\n <ax-icon [icon]=\\\"item.icon\\\"> </ax-icon>\\n }\\n </ax-prefix>\\n @if (item.data) {\\n <ax-text>{{ item.data }}</ax-text>\\n }\\n @if (item.suffixText || item.suffix?.text) {\\n <ax-suffix>\\n <ax-text>{{ item.suffixText ?? item.suffix?.text }}</ax-text>\\n </ax-suffix>\\n }\\n @for (child of item.items; track child) {\\n <ng-container [ngTemplateOutlet]=\\\"Recursion\\\" [ngTemplateOutletContext]=\\\"{ $implicit: child }\\\"></ng-container>\\n }\\n </ng-template>\\n</ng-template>\\n\", styles: [\":root{--ax-comp-side-menu-indicator-size: 2px}ax-side-menu{display:flex;width:100%;flex-direction:column;gap:.5rem;color:inherit;font-size:.875rem;line-height:1.25rem;-webkit-user-select:none;user-select:none}ax-side-menu>ax-title{display:block;margin-block:.5rem;padding:.25rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;opacity:.5}ax-side-menu ax-side-menu-item ax-title{display:block;margin-block:.5rem;margin-top:.5rem;padding-inline:.75rem;padding-bottom:.25rem;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;opacity:.5}ax-side-menu ax-side-menu-item ax-divider{display:block;width:100%;height:1px;margin-block:.25rem;background-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-side-menu ax-side-menu-item .ax-side-item{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;font-size:inherit;font-weight:500}ax-side-menu ax-side-menu-item .ax-side-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-side-menu ax-side-menu-item .ax-side-item.ax-state-disabled .ax-ripple{opacity:0}ax-side-menu ax-side-menu-item .ax-side-item:hover:not(ax-side-menu ax-side-menu-item .ax-side-item:hover.ax-state-disabled,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active.ax-state-disabled) ax-loading ax-loading-spinner span,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active:not(ax-side-menu ax-side-menu-item .ax-side-item:hover.ax-state-disabled,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active.ax-state-disabled) ax-loading ax-loading-spinner span{border-color:rgba(var(--ax-sys-color-on-primary-surface))}ax-side-menu ax-side-menu-item .ax-side-item .ax-start-side,ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side{display:flex;align-items:center}ax-side-menu ax-side-menu-item .ax-side-item .ax-start-side{gap:.5rem}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side{gap:.5rem}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon{display:block;transition-property:rotate;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon.arrow-icon-expand{rotate:90deg}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side ax-loading ax-loading-spinner span{border-color:rgba(var(--ax-sys-color-on-primary-surface))}ax-side-menu ax-side-menu-item .ax-side-item .ax-ripple{background-color:rgba(var(--ax-sys-color-on-surface),.3)!important}ax-side-menu ax-side-menu-item .ax-side-children{display:grid;grid-template-rows:1fr;padding-inline-start:1.25rem;opacity:1;transition-property:grid-template-rows,opacity;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu ax-side-menu-item .ax-side-children.ax-collapsed{grid-template-rows:0fr;opacity:0}ax-side-menu ax-side-menu-item .ax-side-children.ax-empty{display:none}ax-side-menu ax-side-menu-item .ax-side-children .ax-side-children-content{overflow:hidden}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item:first-child{padding-top:.5rem}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item:first-child ax-title{margin-top:1rem}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item .ax-side-item{font-weight:400}ax-side-menu ax-side-menu-item .ax-side-children-content{display:flex;flex-direction:column;gap:.5rem}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item{border-radius:var(--ax-sys-border-radius)}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item:hover:not(ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-surface));background-color:rgba(var(--ax-sys-color-surface))}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line,ax-side-menu.ax-look-with-line-color{gap:0}ax-side-menu.ax-look-with-line .ax-ripple,ax-side-menu.ax-look-with-line-color .ax-ripple{display:none}ax-side-menu.ax-look-with-line.ax-location-start .ax-side-children:before,ax-side-menu.ax-look-with-line.ax-location-start .ax-side-item:before,ax-side-menu.ax-look-with-line-color.ax-location-start .ax-side-children:before,ax-side-menu.ax-look-with-line-color.ax-location-start .ax-side-item:before{inset-inline-start:0;width:calc(var(--ax-comp-side-menu-indicator-size, 2px) / 2)}ax-side-menu.ax-look-with-line.ax-location-end .ax-side-children:before,ax-side-menu.ax-look-with-line.ax-location-end .ax-side-item:before,ax-side-menu.ax-look-with-line-color.ax-location-end .ax-side-children:before,ax-side-menu.ax-look-with-line-color.ax-location-end .ax-side-item:before{inset-inline-end:0;width:calc(var(--ax-comp-side-menu-indicator-size, 2px) / 2)}ax-side-menu.ax-look-with-line ax-side-menu-item,ax-side-menu.ax-look-with-line .ax-side-children,ax-side-menu.ax-look-with-line .ax-side-item,ax-side-menu.ax-look-with-line-color ax-side-menu-item,ax-side-menu.ax-look-with-line-color .ax-side-children,ax-side-menu.ax-look-with-line-color .ax-side-item{position:relative}ax-side-menu.ax-look-with-line ax-side-menu-item:before,ax-side-menu.ax-look-with-line .ax-side-children:before,ax-side-menu.ax-look-with-line .ax-side-item:before,ax-side-menu.ax-look-with-line-color ax-side-menu-item:before,ax-side-menu.ax-look-with-line-color .ax-side-children:before,ax-side-menu.ax-look-with-line-color .ax-side-item:before{position:absolute;height:100%;background-color:rgba(var(--ax-sys-color-border-lightest-surface));content:\\\"\\\";transition-property:width;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu.ax-look-with-line .ax-side-item:hover:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled),ax-side-menu.ax-look-with-line-color .ax-side-item:hover:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled),ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled):before,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled):before{position:absolute;width:var(--ax-comp-side-menu-indicator-size, 2px);height:100%;background-color:rgba(var(--ax-comp-side-menu-indicator-active-color, var(--ax-comp-side-menu-bg-color, var(--ax-sys-color-primary-surface))));content:\\\"\\\"}ax-side-menu.ax-look-with-line .ax-side-children,ax-side-menu.ax-look-with-line-color .ax-side-children{gap:0}ax-side-menu.ax-look-with-line .ax-side-children ax-side-menu-item:first-child,ax-side-menu.ax-look-with-line-color .ax-side-children ax-side-menu-item:first-child{padding-top:0}ax-side-menu.ax-look-with-line-color .ax-side-item:hover:not(ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-primary-surface),.05)}ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-primary-surface),.1)}ax-side-menu.ax-look-default{gap:.25rem}ax-side-menu.ax-look-default ax-icon{opacity:.6}ax-side-menu.ax-look-default .ax-side-item{padding:.5rem 1rem;border-radius:var(--ax-sys-border-radius)}ax-side-menu.ax-look-default .ax-side-item:hover:not(ax-side-menu.ax-look-default .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-surface),.5)}ax-side-menu.ax-look-default .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-default .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-surface),.1)}ax-side-menu.ax-look-default .ax-side-children{position:relative;gap:.25rem;padding-inline-start:2.25rem}ax-side-menu.ax-look-default .ax-side-children:before{position:absolute;width:1px;height:100%;margin-inline-start:1.5rem;background-color:rgba(var(--ax-sys-color-border-light-surface));content:\\\"\\\"}ax-side-menu.ax-look-default .ax-side-children ax-side-menu-item .ax-side-item{padding:.25rem .5rem}ax-side-menu.ax-look-default .ax-side-children ax-side-menu-item:first-child{padding-top:0}ax-side-menu.ax-mode-compact{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}ax-side-menu.ax-mode-compact ::-webkit-scrollbar{width:4px;height:4px}ax-side-menu.ax-mode-compact ::-webkit-scrollbar-track{background:transparent}ax-side-menu.ax-mode-compact ::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}ax-side-menu.ax-mode-compact .ax-side-menu-wrapper{display:flex;flex-direction:column;align-items:center;width:fit-content}ax-side-menu.ax-mode-compact .ax-side-children{display:none}ax-side-menu.ax-mode-compact .ax-inside-text{display:none}ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item:hover:not(ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-surface));background-color:rgba(var(--ax-sys-color-darker-surface, var(--ax-sys-color-surface)))}ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-active:not(ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-mode-compact ax-side-menu-item{position:relative;padding:.125rem!important;display:flex;justify-content:center;width:100%}ax-side-menu.ax-mode-compact ax-side-menu-item ax-icon{font-size:1.4rem}ax-side-menu.ax-mode-compact ax-side-menu-item .ax-side-item{width:fit-content;gap:0;padding:.5rem}ax-side-menu.ax-mode-compact ax-badge{position:absolute;top:5px;right:5px}[dir=rtl] ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon:before{scale:-1 1}[dir=rtl] ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon.arrow-icon-expand{rotate:-90deg}ax-side-menu-item>.ax-side-menu-wrapper>.ax-side-menu-children-context-menu:not(.ax-state-open){display:none}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: 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: \"component\", type: AXSideMenuItemComponent, selector: \"ax-side-menu-item\", inputs: [\"disabled\", \"text\", \"active\", \"isLoading\", \"isCollapsed\", \"toggleOnClick\", \"href\", \"routerLink\", \"routerLinkActive\", \"routerLinkActiveOptions\", \"target\"], outputs: [\"textChange\", \"activeChange\", \"isLoadingChange\", \"isCollapsedChange\", \"onClick\"] }, { kind: \"directive\", type: RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: RouterLinkActive, selector: \"[routerLinkActive]\", inputs: [\"routerLinkActiveOptions\", \"ariaCurrentWhenActive\", \"routerLinkActive\"], outputs: [\"isActiveChange\"], exportAs: [\"routerLinkActive\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-side-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXSideMenuItemComponent,\n RouterLink,\n RouterLinkActive,\n AXDecoratorIconComponent,\n ], providers: [\n { provide: AXComponent, useExisting: AXSideMenuComponent },\n { provide: AXSideMenuBase, useExisting: AXSideMenuComponent },\n ], template: \"<ng-content select=\\\"ax-side-menu-item,ax-title,ng-container,[ngTemplateOutlet]\\\"></ng-content>\\n\\n@for (node of items(); track node) {\\n <ng-container [ngTemplateOutlet]=\\\"Recursion\\\" [ngTemplateOutletContext]=\\\"{ $implicit: node }\\\"> </ng-container>\\n}\\n<ng-template #Recursion let-item>\\n @if (item.title) {\\n <ax-title>{{ item.title }}</ax-title>\\n }\\n @if (item.routerLink) {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [target]=\\\"item.target\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [routerLink]=\\\"item.routerLink\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n [routerLinkActive]=\\\"item.routerLinkActive\\\"\\n [routerLinkActiveOptions]=\\\"item.routerLinkActiveOptions\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n } @else if (item.href) {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [href]=\\\"item.href\\\"\\n [target]=\\\"item.target\\\"\\n [active]=\\\"item.active\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n } @else {\\n <ax-side-menu-item\\n [text]=\\\"item.text\\\"\\n [active]=\\\"item.active\\\"\\n [disabled]=\\\"item.disabled\\\"\\n [isLoading]=\\\"item.isLoading\\\"\\n [isCollapsed]=\\\"item.isCollapsed\\\"\\n [toggleOnClick]=\\\"item.toggleOnClick\\\"\\n >\\n <ng-container [ngTemplateOutlet]=\\\"sideMenuItemContent\\\"></ng-container>\\n </ax-side-menu-item>\\n }\\n\\n <ng-template #sideMenuItemContent>\\n <ax-prefix>\\n @if (item.icon) {\\n <ax-icon [icon]=\\\"item.icon\\\"> </ax-icon>\\n }\\n </ax-prefix>\\n @if (item.data) {\\n <ax-text>{{ item.data }}</ax-text>\\n }\\n @if (item.suffixText || item.suffix?.text) {\\n <ax-suffix>\\n <ax-text>{{ item.suffixText ?? item.suffix?.text }}</ax-text>\\n </ax-suffix>\\n }\\n @for (child of item.items; track child) {\\n <ng-container [ngTemplateOutlet]=\\\"Recursion\\\" [ngTemplateOutletContext]=\\\"{ $implicit: child }\\\"></ng-container>\\n }\\n </ng-template>\\n</ng-template>\\n\", styles: [\":root{--ax-comp-side-menu-indicator-size: 2px}ax-side-menu{display:flex;width:100%;flex-direction:column;gap:.5rem;color:inherit;font-size:.875rem;line-height:1.25rem;-webkit-user-select:none;user-select:none}ax-side-menu>ax-title{display:block;margin-block:.5rem;padding:.25rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;opacity:.5}ax-side-menu ax-side-menu-item ax-title{display:block;margin-block:.5rem;margin-top:.5rem;padding-inline:.75rem;padding-bottom:.25rem;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;opacity:.5}ax-side-menu ax-side-menu-item ax-divider{display:block;width:100%;height:1px;margin-block:.25rem;background-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-side-menu ax-side-menu-item .ax-side-item{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;font-size:inherit;font-weight:500}ax-side-menu ax-side-menu-item .ax-side-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-side-menu ax-side-menu-item .ax-side-item.ax-state-disabled .ax-ripple{opacity:0}ax-side-menu ax-side-menu-item .ax-side-item:hover:not(ax-side-menu ax-side-menu-item .ax-side-item:hover.ax-state-disabled,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active.ax-state-disabled) ax-loading ax-loading-spinner span,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active:not(ax-side-menu ax-side-menu-item .ax-side-item:hover.ax-state-disabled,ax-side-menu ax-side-menu-item .ax-side-item.ax-state-active.ax-state-disabled) ax-loading ax-loading-spinner span{border-color:rgba(var(--ax-sys-color-on-primary-surface))}ax-side-menu ax-side-menu-item .ax-side-item .ax-start-side,ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side{display:flex;align-items:center}ax-side-menu ax-side-menu-item .ax-side-item .ax-start-side{gap:.5rem}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side{gap:.5rem}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon{display:block;transition-property:rotate;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon.arrow-icon-expand{rotate:90deg}ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side ax-loading ax-loading-spinner span{border-color:rgba(var(--ax-sys-color-on-primary-surface))}ax-side-menu ax-side-menu-item .ax-side-item .ax-ripple{background-color:rgba(var(--ax-sys-color-on-surface),.3)!important}ax-side-menu ax-side-menu-item .ax-side-children{display:grid;grid-template-rows:1fr;padding-inline-start:1.25rem;opacity:1;transition-property:grid-template-rows,opacity;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu ax-side-menu-item .ax-side-children.ax-collapsed{grid-template-rows:0fr;opacity:0}ax-side-menu ax-side-menu-item .ax-side-children.ax-empty{display:none}ax-side-menu ax-side-menu-item .ax-side-children .ax-side-children-content{overflow:hidden}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item:first-child{padding-top:.5rem}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item:first-child ax-title{margin-top:1rem}ax-side-menu ax-side-menu-item .ax-side-children ax-side-menu-item .ax-side-item{font-weight:400}ax-side-menu ax-side-menu-item .ax-side-children-content{display:flex;flex-direction:column;gap:.5rem}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item{border-radius:var(--ax-sys-border-radius)}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item:hover:not(ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-surface));background-color:rgba(var(--ax-sys-color-surface))}ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-pills ax-side-menu-item .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line,ax-side-menu.ax-look-with-line-color{gap:0}ax-side-menu.ax-look-with-line .ax-ripple,ax-side-menu.ax-look-with-line-color .ax-ripple{display:none}ax-side-menu.ax-look-with-line.ax-location-start .ax-side-children:before,ax-side-menu.ax-look-with-line.ax-location-start .ax-side-item:before,ax-side-menu.ax-look-with-line-color.ax-location-start .ax-side-children:before,ax-side-menu.ax-look-with-line-color.ax-location-start .ax-side-item:before{inset-inline-start:0;width:calc(var(--ax-comp-side-menu-indicator-size, 2px) / 2)}ax-side-menu.ax-look-with-line.ax-location-end .ax-side-children:before,ax-side-menu.ax-look-with-line.ax-location-end .ax-side-item:before,ax-side-menu.ax-look-with-line-color.ax-location-end .ax-side-children:before,ax-side-menu.ax-look-with-line-color.ax-location-end .ax-side-item:before{inset-inline-end:0;width:calc(var(--ax-comp-side-menu-indicator-size, 2px) / 2)}ax-side-menu.ax-look-with-line ax-side-menu-item,ax-side-menu.ax-look-with-line .ax-side-children,ax-side-menu.ax-look-with-line .ax-side-item,ax-side-menu.ax-look-with-line-color ax-side-menu-item,ax-side-menu.ax-look-with-line-color .ax-side-children,ax-side-menu.ax-look-with-line-color .ax-side-item{position:relative}ax-side-menu.ax-look-with-line ax-side-menu-item:before,ax-side-menu.ax-look-with-line .ax-side-children:before,ax-side-menu.ax-look-with-line .ax-side-item:before,ax-side-menu.ax-look-with-line-color ax-side-menu-item:before,ax-side-menu.ax-look-with-line-color .ax-side-children:before,ax-side-menu.ax-look-with-line-color .ax-side-item:before{position:absolute;height:100%;background-color:rgba(var(--ax-sys-color-border-lightest-surface));content:\\\"\\\";transition-property:width;transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-side-menu.ax-look-with-line .ax-side-item:hover:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled),ax-side-menu.ax-look-with-line-color .ax-side-item:hover:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled),ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-look-with-line .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled):before,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line .ax-side-item.ax-state-disabled,ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled):before{position:absolute;width:var(--ax-comp-side-menu-indicator-size, 2px);height:100%;background-color:rgba(var(--ax-comp-side-menu-indicator-active-color, var(--ax-comp-side-menu-bg-color, var(--ax-sys-color-primary-surface))));content:\\\"\\\"}ax-side-menu.ax-look-with-line .ax-side-children,ax-side-menu.ax-look-with-line-color .ax-side-children{gap:0}ax-side-menu.ax-look-with-line .ax-side-children ax-side-menu-item:first-child,ax-side-menu.ax-look-with-line-color .ax-side-children ax-side-menu-item:first-child{padding-top:0}ax-side-menu.ax-look-with-line-color .ax-side-item:hover:not(ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-primary-surface),.05)}ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-with-line-color .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-primary-surface),.1)}ax-side-menu.ax-look-default{gap:.25rem}ax-side-menu.ax-look-default ax-icon{opacity:.6}ax-side-menu.ax-look-default .ax-side-item{padding:.5rem 1rem;border-radius:var(--ax-sys-border-radius)}ax-side-menu.ax-look-default .ax-side-item:hover:not(ax-side-menu.ax-look-default .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-surface),.5)}ax-side-menu.ax-look-default .ax-side-item.ax-state-active:not(ax-side-menu.ax-look-default .ax-side-item.ax-state-disabled){background-color:rgba(var(--ax-sys-color-surface),.1)}ax-side-menu.ax-look-default .ax-side-children{position:relative;gap:.25rem;padding-inline-start:2.25rem}ax-side-menu.ax-look-default .ax-side-children:before{position:absolute;width:1px;height:100%;margin-inline-start:1.5rem;background-color:rgba(var(--ax-sys-color-border-light-surface));content:\\\"\\\"}ax-side-menu.ax-look-default .ax-side-children ax-side-menu-item .ax-side-item{padding:.25rem .5rem}ax-side-menu.ax-look-default .ax-side-children ax-side-menu-item:first-child{padding-top:0}ax-side-menu.ax-mode-compact{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}ax-side-menu.ax-mode-compact ::-webkit-scrollbar{width:4px;height:4px}ax-side-menu.ax-mode-compact ::-webkit-scrollbar-track{background:transparent}ax-side-menu.ax-mode-compact ::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}ax-side-menu.ax-mode-compact .ax-side-menu-wrapper{display:flex;flex-direction:column;align-items:center;width:fit-content}ax-side-menu.ax-mode-compact .ax-side-children{display:none}ax-side-menu.ax-mode-compact .ax-inside-text{display:none}ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item:hover:not(ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-surface));background-color:rgba(var(--ax-sys-color-darker-surface, var(--ax-sys-color-surface)))}ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-active:not(ax-side-menu.ax-mode-compact.ax-look-pills>ax-side-menu-item>.ax-side-item.ax-state-disabled){color:rgba(var(--ax-sys-color-on-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface))}ax-side-menu.ax-mode-compact ax-side-menu-item{position:relative;padding:.125rem!important;display:flex;justify-content:center;width:100%}ax-side-menu.ax-mode-compact ax-side-menu-item ax-icon{font-size:1.4rem}ax-side-menu.ax-mode-compact ax-side-menu-item .ax-side-item{width:fit-content;gap:0;padding:.5rem}ax-side-menu.ax-mode-compact ax-badge{position:absolute;top:5px;right:5px}[dir=rtl] ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon:before{scale:-1 1}[dir=rtl] ax-side-menu ax-side-menu-item .ax-side-item .ax-end-side .arrow-icon.arrow-icon-expand{rotate:-90deg}ax-side-menu-item>.ax-side-menu-wrapper>.ax-side-menu-children-context-menu:not(.ax-state-open){display:none}\\n\"] }]\n }], propDecorators: { __hostClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUtwRjs7O0dBR0c7QUFvQkgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFuQnBEOztRQW9CRSxVQUFLLEdBQUcsS0FBSywyREFBZ0IsQ0FBQztRQUNyQixTQUFJLEdBQUcsS0FBSyxDQUFpQixPQUFPLGdEQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLEtBQUssQ0FBcUIsT0FBTyxv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T0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUU7WUFDMUQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRTtTQUM5RCxpREMvQ0gsb3lFQW9FQSxtN1ZEL0JJLGdCQUFnQixvSkFDaEIsMkJBQTJCLHlMQUMzQix1QkFBdUIsOFRBQ3ZCLFVBQVUsb09BQ1YsZ0JBQWdCLDhNQUNoQix3QkFBd0I7OzJGQU9mLG1CQUFtQjtrQkFuQi9CLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQix3QkFBd0I7cUJBQ3pCLGFBQ1U7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQzFELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLHFCQUFxQixFQUFFO3FCQUM5RDs4QkFvSVcsV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIE5YQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIFBMQVRGT1JNX0lELFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhTaWRlTWVudUJhc2UgfSBmcm9tICcuL3NpZGUtbWVudS1iYXNlJztcbmltcG9ydCB7IEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlLW1lbnUtaXRlbS9zaWRlLW1lbnUtaXRlbS5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBBWFNpZGVNZW51TG9vayA9ICdwaWxscycgfCAnd2l0aC1saW5lJyB8ICd3aXRoLWxpbmUtY29sb3InIHwgJ2RlZmF1bHQnO1xuZXhwb3J0IHR5cGUgQVhTaWRlTWVudUxvY2F0aW9uID0gJ3N0YXJ0JyB8ICdlbmQnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYSBzaWRlIG1lbnUgd2l0aCBjdXN0b21pemFibGUgY29udGVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtc2lkZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGUtbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50LFxuICAgIFJvdXRlckxpbmssXG4gICAgUm91dGVyTGlua0FjdGl2ZSxcbiAgICBBWERlY29yYXRvckljb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNpZGVNZW51Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFNpZGVNZW51QmFzZSwgdXNlRXhpc3Rpbmc6IEFYU2lkZU1lbnVDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhTaWRlTWVudUNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IGltcGxlbWVudHMgQVhTaWRlTWVudUJhc2Uge1xuICBpdGVtcyA9IG1vZGVsPEFYTWVudUl0ZW1bXT4oKTtcbiAgcmVhZG9ubHkgbG9vayA9IGlucHV0PEFYU2lkZU1lbnVMb29rPigncGlsbHMnKTtcbiAgcmVhZG9ubHkgbG9jYXRpb24gPSBpbnB1dDxBWFNpZGVNZW51TG9jYXRpb24+KCdzdGFydCcpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8J2Z1bGwnIHwgJ2NvbXBhY3QnPignZnVsbCcpO1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAvKipcbiAgICogQWxsIGBheC1zaWRlLW1lbnUtaXRlbWAgaW5zdGFuY2VzIGRpc2NvdmVyZWQgYnkgd2Fsa2luZyB0aGUgaG9zdCBET00uXG4gICAqXG4gICAqIFdlIHVzZSBET00gZGlzY292ZXJ5IChpbnN0ZWFkIG9mIGBjb250ZW50Q2hpbGRyZW5gKSBiZWNhdXNlIEFuZ3VsYXIgY29udGVudFxuICAgKiBxdWVyaWVzIGRvICoqbm90KiogdHJhdmVyc2UgZW1iZWRkZWQgdmlld3MgY3JlYXRlZCBieSBgbmdUZW1wbGF0ZU91dGxldGAsXG4gICAqIGFuZCB0aGUgYEFYU2lkZU1lbnVCYXNlYCBESSB0b2tlbiBpcyBub3QgcmVhY2hhYmxlIGZyb20gaW5zaWRlIHRob3NlIHZpZXdzXG4gICAqIGVpdGhlciAodGhleSBpbmhlcml0IGluamVjdGlvbiBmcm9tIHRoZSB0ZW1wbGF0ZSdzIGRlY2xhcmF0aW9uIHNpdGUsIG5vdFxuICAgKiB0aGUgaW5zZXJ0aW9uIHNpdGUpLiBXYWxraW5nIHRoZSBET00gd29ya3MgZm9yIGRpcmVjdCBwcm9qZWN0aW9uLFxuICAgKiBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZXMsIGFuZCByZWN1cnNpdmUgYG5nVGVtcGxhdGVPdXRsZXRgLWJhc2VkIHRlbXBsYXRlc1xuICAgKiB1bmlmb3JtbHkuXG4gICAqL1xuICBwcml2YXRlIF9pdGVtcyA9IHNpZ25hbDxBWFNpZGVNZW51SXRlbUNvbXBvbmVudFtdPihbXSk7XG4gIC8qKiBSZWFkLW9ubHkgc2lnbmFsIGV4cG9zaW5nIGV2ZXJ5IGRpc2NvdmVyZWQgYGF4LXNpZGUtbWVudS1pdGVtYCBpbnN0YW5jZS4gKi9cbiAgcmVhZG9ubHkgY2hpbGRyZW4gPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgaG9zdEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSBkb21SZWZyZXNoU2NoZWR1bGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZG9tUmVmcmVzaE9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgIHRoaXMucmVmcmVzaEl0ZW1zRnJvbURvbSgpO1xuICAgIHRoaXMuZG9tUmVmcmVzaE9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHJlY29yZHMpID0+IHtcbiAgICAgIGlmICghdGhpcy5oYXNSZWxldmFudE1lbnVJdGVtTXV0YXRpb24ocmVjb3JkcykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zY2hlZHVsZURvbVJlZnJlc2goKTtcbiAgICB9KTtcbiAgICB0aGlzLmRvbVJlZnJlc2hPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuZG9tUmVmcmVzaE9ic2VydmVyPy5kaXNjb25uZWN0KCkpO1xuICB9KTtcblxuICAvKiogUHVzaCBmdWxsL2NvbXBhY3QgbW9kZSB0byBldmVyeSBtZW51IGl0ZW0gd2hlbmV2ZXIgbW9kZSBjaGFuZ2VzLiAqL1xuICAjc3luY0l0ZW1Nb2RlID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgdGhpcy5faXRlbXMoKS5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnN5bmNNZW51TW9kZShtb2RlKSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBXYWxrcyB0aGUgaG9zdCBET00gdG8gZGlzY292ZXIgZXZlcnkgbmVzdGVkIGBheC1zaWRlLW1lbnUtaXRlbWAsIGxvb2tzIHVwXG4gICAqIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgdGhyb3VnaCB0aGUgYF9fYXhDb250ZXh0X19gIHByb3BlcnR5IHRoYXRcbiAgICogYE1YQmFzZUNvbXBvbmVudC5uZ09uSW5pdGAgYXR0YWNoZXMgdG8gZWFjaCBob3N0IGVsZW1lbnQsIGFuZCB1cGRhdGVzIHRoZVxuICAgKiBpbnRlcm5hbCBpdGVtcyBzaWduYWwgYW5kIGAuZmlyc3QtbGV2ZWxgIENTUyBjbGFzcyBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogVHJpZ2dlcmVkIGJvdGggaW5pdGlhbGx5IGFuZCBmcm9tIGEgYE11dGF0aW9uT2JzZXJ2ZXJgIHNvIHJlY3Vyc2l2ZVxuICAgKiB0ZW1wbGF0ZXMgdGhhdCBhZGQvcmVtb3ZlIGl0ZW1zIGF0IHJ1bnRpbWUgc3RheSBpbiBzeW5jLlxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoSXRlbXNGcm9tRG9tKCkge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBlbGVtZW50cyA9IGhvc3QucXVlcnlTZWxlY3RvckFsbCgnYXgtc2lkZS1tZW51LWl0ZW0nKTtcbiAgICBjb25zdCBpdGVtczogQVhTaWRlTWVudUl0ZW1Db21wb25lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IChlbCBhcyB1bmtub3duIGFzIHsgX19heENvbnRleHRfXz86IHVua25vd24gfSkuX19heENvbnRleHRfXztcbiAgICAgIGlmIChpbnN0YW5jZSBpbnN0YW5jZW9mIEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50KSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaW5zdGFuY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2l0ZW1zKCk7XG4gICAgY29uc3QgY2hhbmdlZCA9IGN1cnJlbnQubGVuZ3RoICE9PSBpdGVtcy5sZW5ndGggfHwgY3VycmVudC5zb21lKChpdCwgaSkgPT4gaXQgIT09IGl0ZW1zW2ldKTtcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5faXRlbXMuc2V0KGl0ZW1zKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEZpcnN0TGV2ZWxDbGFzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZURvbVJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuZG9tUmVmcmVzaFNjaGVkdWxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRvbVJlZnJlc2hTY2hlZHVsZWQgPSB0cnVlO1xuXG4gICAgLy8gQmF0Y2ggbXVsdGlwbGUgcmFwaWQgbXV0YXRpb25zIChlLmcuLCBsYXJnZSB0ZW1wbGF0ZSB1cGRhdGVzIG9yIG92ZXJsYXlzIGNsb3NpbmcpXG4gICAgLy8gaW50byBhIHNpbmdsZSByZWZyZXNoIHRvIHByZXZlbnQgbG9uZyBtYWluLXRocmVhZCBzdGFsbHMuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuZG9tUmVmcmVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWZyZXNoSXRlbXNGcm9tRG9tKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhc1JlbGV2YW50TWVudUl0ZW1NdXRhdGlvbihyZWNvcmRzOiBNdXRhdGlvblJlY29yZFtdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgaWYgKHRoaXMubm9kZUxpc3RDb250YWluc01lbnVJdGVtKHJlY29yZC5hZGRlZE5vZGVzKSB8fCB0aGlzLm5vZGVMaXN0Q29udGFpbnNNZW51SXRlbShyZWNvcmQucmVtb3ZlZE5vZGVzKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub2RlTGlzdENvbnRhaW5zTWVudUl0ZW0obm9kZXM6IE5vZGVMaXN0KTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIEFycmF5LmZyb20obm9kZXMpKSB7XG4gICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgRWxlbWVudCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS50YWdOYW1lID09PSAnQVgtU0lERS1NRU5VLUlURU0nKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUucXVlcnlTZWxlY3Rvcj8uKCdheC1zaWRlLW1lbnUtaXRlbScpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFkZEZpcnN0TGV2ZWxDbGFzcygpIHtcbiAgICBjb25zdCBhbGxDaGlsZHJlbiA9IHRoaXMuX2l0ZW1zKCk7XG4gICAgYWxsQ2hpbGRyZW4uZm9yRWFjaCgoaXRlbSkgPT5cbiAgICAgIGl0ZW0uZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtc2lkZS1pdGVtJyk/LmNsYXNzTGlzdC5yZW1vdmUoJ2ZpcnN0LWxldmVsJyksXG4gICAgKTtcblxuICAgIGFsbENoaWxkcmVuXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1FbGVtZW50ID0gaXRlbS5nZXRIb3N0RWxlbWVudCgpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHRoaXMuaG9zdEVsZW1lbnQuY29udGFpbnMoaXRlbUVsZW1lbnQpICYmICFpdGVtRWxlbWVudC5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCcuYXgtc2lkZS1jaGlsZHJlbi1jb250ZW50JylcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1zaWRlLWl0ZW0nKT8uY2xhc3NMaXN0LmFkZCgnZmlyc3QtbGV2ZWwnKSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbYGF4LWxvb2stJHt0aGlzLmxvb2soKX1gLCBgYXgtbG9jYXRpb24tJHt0aGlzLmxvY2F0aW9uKCl9YCwgYGF4LW1vZGUtJHt0aGlzLm1vZGUoKX1gXTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc2lkZS1tZW51LWl0ZW0sYXgtdGl0bGUsbmctY29udGFpbmVyLFtuZ1RlbXBsYXRlT3V0bGV0XVwiPjwvbmctY29udGVudD5cblxuQGZvciAobm9kZSBvZiBpdGVtcygpOyB0cmFjayBub2RlKSB7XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj4gPC9uZy1jb250YWluZXI+XG59XG48bmctdGVtcGxhdGUgI1JlY3Vyc2lvbiBsZXQtaXRlbT5cbiAgQGlmIChpdGVtLnRpdGxlKSB7XG4gICAgPGF4LXRpdGxlPnt7IGl0ZW0udGl0bGUgfX08L2F4LXRpdGxlPlxuICB9XG4gIEBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgPGF4LXNpZGUtbWVudS1pdGVtXG4gICAgICBbdGV4dF09XCJpdGVtLnRleHRcIlxuICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICBbaXNMb2FkaW5nXT1cIml0ZW0uaXNMb2FkaW5nXCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgICBbaXNDb2xsYXBzZWRdPVwiaXRlbS5pc0NvbGxhcHNlZFwiXG4gICAgICBbdG9nZ2xlT25DbGlja109XCJpdGVtLnRvZ2dsZU9uQ2xpY2tcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiaXRlbS5yb3V0ZXJMaW5rQWN0aXZlXCJcbiAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGVNZW51SXRlbUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4LXNpZGUtbWVudS1pdGVtPlxuICB9IEBlbHNlIGlmIChpdGVtLmhyZWYpIHtcbiAgICA8YXgtc2lkZS1tZW51LWl0ZW1cbiAgICAgIFt0ZXh0XT1cIml0ZW0udGV4dFwiXG4gICAgICBbaHJlZl09XCJpdGVtLmhyZWZcIlxuICAgICAgW3RhcmdldF09XCJpdGVtLnRhcmdldFwiXG4gICAgICBbYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXRlbS5pc0xvYWRpbmdcIlxuICAgICAgW2lzQ29sbGFwc2VkXT1cIml0ZW0uaXNDb2xsYXBzZWRcIlxuICAgICAgW3RvZ2dsZU9uQ2xpY2tdPVwiaXRlbS50b2dnbGVPbkNsaWNrXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGVNZW51SXRlbUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4LXNpZGUtbWVudS1pdGVtPlxuICB9IEBlbHNlIHtcbiAgICA8YXgtc2lkZS1tZW51LWl0ZW1cbiAgICAgIFt0ZXh0XT1cIml0ZW0udGV4dFwiXG4gICAgICBbYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXRlbS5pc0xvYWRpbmdcIlxuICAgICAgW2lzQ29sbGFwc2VkXT1cIml0ZW0uaXNDb2xsYXBzZWRcIlxuICAgICAgW3RvZ2dsZU9uQ2xpY2tdPVwiaXRlbS50b2dnbGVPbkNsaWNrXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGVNZW51SXRlbUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4LXNpZGUtbWVudS1pdGVtPlxuICB9XG5cbiAgPG5nLXRlbXBsYXRlICNzaWRlTWVudUl0ZW1Db250ZW50PlxuICAgIDxheC1wcmVmaXg+XG4gICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgfVxuICAgIDwvYXgtcHJlZml4PlxuICAgIEBpZiAoaXRlbS5kYXRhKSB7XG4gICAgICA8YXgtdGV4dD57eyBpdGVtLmRhdGEgfX08L2F4LXRleHQ+XG4gICAgfVxuICAgIEBpZiAoaXRlbS5zdWZmaXhUZXh0IHx8IGl0ZW0uc3VmZml4Py50ZXh0KSB7XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtdGV4dD57eyBpdGVtLnN1ZmZpeFRleHQgPz8gaXRlbS5zdWZmaXg/LnRleHQgfX08L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICB9XG4gICAgQGZvciAoY2hpbGQgb2YgaXRlbS5pdGVtczsgdHJhY2sgY2hpbGQpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { AXOutlineContainerDirective } from '@acorex/cdk/outline';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { afterNextRender, Directive, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport * as i0 from \"@angular/core\";\nexport class AXOutlineSideMenuDirective {\n constructor() {\n this.router = inject(Router);\n this.unsubscriber = inject(AXUnsubscriber);\n this.sideMenu = inject(AXSideMenuComponent);\n this.container = inject(AXOutlineContainerDirective);\n this.#anr = afterNextRender(() => {\n this.container.outlineItems$\n .pipe(this.unsubscriber.takeUntilDestroy, map((items) => {\n if (!items || items.length === 0)\n return [];\n return this.buildNestedMenuItems(items);\n }), distinctUntilChanged(isEqual))\n .subscribe((menuItems) => {\n this.updateSideMenu(menuItems);\n });\n });\n }\n #anr;\n updateSideMenu(newMenuItems) {\n const currentMenuItems = this.sideMenu.items();\n const newSignature = this.getStructuralSignature(newMenuItems);\n const currentSignature = this.getStructuralSignature(currentMenuItems || []);\n if (newSignature !== currentSignature) {\n this.sideMenu.items.set(newMenuItems);\n return;\n }\n const currentComponents = this.sideMenu.children();\n const newActiveItem = this.flattenMenuItems(newMenuItems).find((item) => item.active);\n const currentActiveComponent = currentComponents.find((c) => c.active());\n if (newActiveItem?.href === currentActiveComponent?.href()) {\n return;\n }\n currentActiveComponent?.active.set(false);\n if (newActiveItem) {\n const componentToActivate = currentComponents.find((c) => c.href() === newActiveItem.href);\n componentToActivate?.active.set(true);\n }\n }\n /**\n * Creates a string signature that represents the tree structure of the menu.\n * Example: \"href1(href1.1,href1.2),href2,href3\"\n * This will be different for a flat list vs. a nested list.\n */\n getStructuralSignature(items) {\n return items\n .map((item) => {\n let signature = item.href || '';\n if (item.items && item.items.length > 0) {\n signature += `(${this.getStructuralSignature(item.items)})`;\n }\n return signature;\n })\n .join(',');\n }\n flattenMenuItems(items) {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.items) {\n acc.push(...this.flattenMenuItems(item.items));\n }\n return acc;\n }, []);\n }\n textReplace(item) {\n const text = item.el.textContent;\n if (item.hasAnchor) {\n const newStr = text?.slice(0, -1);\n return newStr?.trim() || '';\n }\n return text?.trim() || '';\n }\n buildNestedMenuItems(items) {\n const menuItemsMap = new Map();\n const rootItems = [];\n items.forEach((item) => {\n const menuItem = {\n items: [],\n target: '_self',\n active: item.active,\n toggleOnClick: false,\n text: this.textReplace(item),\n href: `${this.router.url.split('#')[0]}#${item.id}`,\n };\n menuItemsMap.set(item.id, menuItem);\n });\n items.forEach((item) => {\n const menuItem = menuItemsMap.get(item.id);\n if (!menuItem)\n return;\n if (item.parentId) {\n const parentMenuItem = menuItemsMap.get(item.parentId);\n if (parentMenuItem) {\n parentMenuItem.items?.push(menuItem);\n }\n else {\n console.warn(`Outline item with id \"${item.id}\" has a parentId \"${item.parentId}\" that does not exist.`);\n rootItems.push(menuItem);\n }\n }\n else {\n rootItems.push(menuItem);\n }\n });\n return rootItems;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXOutlineSideMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXOutlineSideMenuDirective, isStandalone: true, selector: \"[axOutlineSideMenu]\", providers: [AXUnsubscriber], exportAs: [\"axOutlineSideMenu\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXOutlineSideMenuDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axOutlineSideMenu]',\n exportAs: 'axOutlineSideMenu',\n providers: [AXUnsubscriber],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU81RCxNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBTVUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhELFNBQUksR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTtpQkFDekIsSUFBSSxDQUNILElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQ2xDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxD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QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsRUFBRSxxQkFBcUIsSUFBSSxDQUFDLFFBQVEsd0JBQXdCLENBQUMsQ0FBQztvQkFDekcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBOUdVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGtFQUYxQixDQUFDLGNBQWMsQ0FBQzs7MkZBRWhCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhPdXRsaW5lQ29udGFpbmVyRGlyZWN0aXZlLCBvdXRsaW5lSXRlbVR5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9vdXRsaW5lJztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFNpZGVNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zaWRlLW1lbnUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4T3V0bGluZVNpZGVNZW51XScsXG4gIGV4cG9ydEFzOiAnYXhPdXRsaW5lU2lkZU1lbnUnLFxuICBwcm92aWRlcnM6IFtBWFVuc3Vic2NyaWJlcl0sXG59KVxuZXhwb3J0IGNsYXNzIEFYT3V0bGluZVNpZGVNZW51RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIHNpZGVNZW51ID0gaW5qZWN0KEFYU2lkZU1lbnVDb21wb25lbnQpO1xuICBwcml2YXRlIGNvbnRhaW5lciA9IGluamVjdChBWE91dGxpbmVDb250YWluZXJEaXJlY3RpdmUpO1xuXG4gICNhbnIgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIHRoaXMuY29udGFpbmVyLm91dGxpbmVJdGVtcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95LFxuICAgICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZE5lc3RlZE1lbnVJdGVtcyhpdGVtcyk7XG4gICAgICAgIH0pLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc0VxdWFsKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNpZGVNZW51KG1lbnVJdGVtcyk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaWRlTWVudShuZXdNZW51SXRlbXM6IEFYTWVudUl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRNZW51SXRlbXMgPSB0aGlzLnNpZGVNZW51Lml0ZW1zKCk7XG4gICAgY29uc3QgbmV3U2lnbmF0dXJlID0gdGhpcy5nZXRTdHJ1Y3R1cmFsU2lnbmF0dXJlKG5ld01lbnVJdGVtcyk7XG4gICAgY29uc3QgY3VycmVudFNpZ25hdHVyZSA9IHRoaXMuZ2V0U3RydWN0dXJhbFNpZ25hdHVyZShjdXJyZW50TWVudUl0ZW1zIHx8IFtdKTtcblxuICAgIGlmIChuZXdTaWduYXR1cmUgIT09IGN1cnJlbnRTaWduYXR1cmUpIHtcbiAgICAgIHRoaXMuc2lkZU1lbnUuaXRlbXMuc2V0KG5ld01lbnVJdGVtcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENvbXBvbmVudHMgPSB0aGlzLnNpZGVNZW51LmNoaWxkcmVuKCk7XG4gICAgY29uc3QgbmV3QWN0aXZlSXRlbSA9IHRoaXMuZmxhdHRlbk1lbnVJdGVtcyhuZXdNZW51SXRlbXMpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlQ29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudHMuZmluZCgoYykgPT4gYy5hY3RpdmUoKSk7XG4gICAgaWYgKG5ld0FjdGl2ZUl0ZW0/LmhyZWYgPT09IGN1cnJlbnRBY3RpdmVDb21wb25lbnQ/LmhyZWYoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjdXJyZW50QWN0aXZlQ29tcG9uZW50Py5hY3RpdmUuc2V0KGZhbHNlKTtcbiAgICBpZiAobmV3QWN0aXZlSXRlbSkge1xuICAgICAgY29uc3QgY29tcG9uZW50VG9BY3RpdmF0ZSA9IGN1cnJlbnRDb21wb25lbnRzLmZpbmQoKGMpID0+IGMuaHJlZigpID09PSBuZXdBY3RpdmVJdGVtLmhyZWYpO1xuICAgICAgY29tcG9uZW50VG9BY3RpdmF0ZT8uYWN0aXZlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN0cmluZyBzaWduYXR1cmUgdGhhdCByZXByZXNlbnRzIHRoZSB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgbWVudS5cbiAgICogRXhhbXBsZTogXCJocmVmMShocmVmMS4xLGhyZWYxLjIpLGhyZWYyLGhyZWYzXCJcbiAgICogVGhpcyB3aWxsIGJlIGRpZmZlcmVudCBmb3IgYSBmbGF0IGxpc3QgdnMuIGEgbmVzdGVkIGxpc3QuXG4gICAqL1xuICBwcml2YXRlIGdldFN0cnVjdHVyYWxTaWduYXR1cmUoaXRlbXM6IEFYTWVudUl0ZW1bXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW1zXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGxldCBzaWduYXR1cmUgPSBpdGVtLmhyZWYgfHwgJyc7XG4gICAgICAgIGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNpZ25hdHVyZSArPSBgKCR7dGhpcy5nZXRTdHJ1Y3R1cmFsU2lnbmF0dXJlKGl0ZW0uaXRlbXMpfSlgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaWduYXR1cmU7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJywnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbk1lbnVJdGVtcyhpdGVtczogQVhNZW51SXRlbVtdKTogQVhNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgYWNjLnB1c2goLi4udGhpcy5mbGF0dGVuTWVudUl0ZW1zKGl0ZW0uaXRlbXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQVhNZW51SXRlbVtdKTtcbiAgfVxuXG4gIHByaXZhdGUgdGV4dFJlcGxhY2UoaXRlbTogb3V0bGluZUl0ZW1UeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0ID0gaXRlbS5lbC50ZXh0Q29udGVudDtcbiAgICBpZiAoaXRlbS5oYXNBbmNob3IpIHtcbiAgICAgIGNvbnN0IG5ld1N0ciA9IHRleHQ/LnNsaWNlKDAsIC0xKTtcbiAgICAgIHJldHVybiBuZXdTdHI/LnRyaW0oKSB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ/LnRyaW0oKSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGROZXN0ZWRNZW51SXRlbXMoaXRlbXM6IG91dGxpbmVJdGVtVHlwZVtdKTogQVhNZW51SXRlbVtdIHtcbiAgICBjb25zdCBtZW51SXRlbXNNYXAgPSBuZXcgTWFwPHN0cmluZywgQVhNZW51SXRlbT4oKTtcbiAgICBjb25zdCByb290SXRlbXM6IEFYTWVudUl0ZW1bXSA9IFtdO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG1lbnVJdGVtOiBBWE1lbnVJdGVtID0ge1xuICAgICAgICBpdGVtczogW10sXG4gICAgICAgIHRhcmdldDogJ19zZWxmJyxcbiAgICAgICAgYWN0aXZlOiBpdGVtLmFjdGl2ZSxcbiAgICAgICAgdG9nZ2xlT25DbGljazogZmFsc2UsXG4gICAgICAgIHRleHQ6IHRoaXMudGV4dFJlcGxhY2UoaXRlbSksXG4gICAgICAgIGhyZWY6IGAke3RoaXMucm91dGVyLnVybC5zcGxpdCgnIycpWzBdfSMke2l0ZW0uaWR9YCxcbiAgICAgIH07XG4gICAgICBtZW51SXRlbXNNYXAuc2V0KGl0ZW0uaWQsIG1lbnVJdGVtKTtcbiAgICB9KTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBtZW51SXRlbSA9IG1lbnVJdGVtc01hcC5nZXQoaXRlbS5pZCk7XG4gICAgICBpZiAoIW1lbnVJdGVtKSByZXR1cm47XG4gICAgICBpZiAoaXRlbS5wYXJlbnRJZCkge1xuICAgICAgICBjb25zdCBwYXJlbnRNZW51SXRlbSA9IG1lbnVJdGVtc01hcC5nZXQoaXRlbS5wYXJlbnRJZCk7XG4gICAgICAgIGlmIChwYXJlbnRNZW51SXRlbSkge1xuICAgICAgICAgIHBhcmVudE1lbnVJdGVtLml0ZW1zPy5wdXNoKG1lbnVJdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE91dGxpbmUgaXRlbSB3aXRoIGlkIFwiJHtpdGVtLmlkfVwiIGhhcyBhIHBhcmVudElkIFwiJHtpdGVtLnBhcmVudElkfVwiIHRoYXQgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgICAgcm9vdEl0ZW1zLnB1c2gobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290SXRlbXMucHVzaChtZW51SXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvb3RJdGVtcztcbiAgfVxufVxuIl19","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport { AXOutlineSideMenuDirective } from './side-menu.directive';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n AXRippleDirective,\n AXLoadingModule,\n AXTranslationModule,\n RouterLink,\n RouterLinkActive,\n AXDecoratorModule,\n];\nexport class AXSideMenuModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuModule, imports: [CommonModule,\n AXCommonModule,\n AXRippleDirective,\n AXLoadingModule,\n AXTranslationModule,\n RouterLink,\n RouterLinkActive,\n AXDecoratorModule, AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective], exports: [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuModule, imports: [CommonModule,\n AXCommonModule,\n AXLoadingModule,\n AXTranslationModule,\n AXDecoratorModule, AXSideMenuComponent, AXSideMenuItemComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSideMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvc2lkZS1tZW51L3NyYy9saWIvc2lkZS1tZW51Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sT0FBTyxHQUFHO0lBQ2QsWUFBWTtJQUNaLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtDQUNsQixDQUFDO0FBT0YsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFmM0IsWUFBWTtZQUNaLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixVQUFVO1lBQ1YsZ0JBQWdCO1lBQ2hCLGlCQUFpQixFQVRBLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixhQUF4RSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEI7K0dBaUI5RSxnQkFBZ0IsWUFmM0IsWUFBWTtZQUNaLGNBQWM7WUFFZCxlQUFlO1lBQ2YsbUJBQW1CO1lBR25CLGlCQUFpQixFQVRBLG1CQUFtQixFQUFFLHVCQUF1Qjs7MkZBaUJsRCxnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbW9uTW9kdWxlLCBBWFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYU2lkZU1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlLW1lbnUtaXRlbS9zaWRlLW1lbnUtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhTaWRlTWVudUNvbXBvbmVudCB9IGZyb20gJy4vc2lkZS1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE91dGxpbmVTaWRlTWVudURpcmVjdGl2ZSB9IGZyb20gJy4vc2lkZS1tZW51LmRpcmVjdGl2ZSc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtBWFNpZGVNZW51Q29tcG9uZW50LCBBWFNpZGVNZW51SXRlbUNvbXBvbmVudCwgQVhPdXRsaW5lU2lkZU1lbnVEaXJlY3RpdmVdO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBBWENvbW1vbk1vZHVsZSxcbiAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gIEFYTG9hZGluZ01vZHVsZSxcbiAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbiAgQVhEZWNvcmF0b3JNb2R1bGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2lkZU1lbnVNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtc2lkZS1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9zaWRlLW1lbnUvc3JjL2Fjb3JleC1jb21wb25lbnRzLXNpZGUtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B;;ACKO,MAAM,wBAAwB,SAAS,YAAY,CAAC;AAC3D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5B,IAAI;AACJ;AACO,MAAM,uBAAuB,SAAS,sBAAsB,CAAC;AACpE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/F,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnH,QAAQ,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChI,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACpE,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxF,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClI;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC3C,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACvC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,YAAY,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,2BAA2B,CAAC;AACxF,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjE;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM;AAC7C,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpC,gBAAgB,OAAO,IAAI;AAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI;AAC3E,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,UAAU,EAAE;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,uBAAuB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/J,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,qBAAqB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjI,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM;AAC9C,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE;AAC1C,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,MAAM;AACnD,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,wBAAwB,EAAE;AAC3C,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAK;AACnE,gBAAgB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;AACxD,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACjH,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;AAC7E,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM;AAC7C,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1H,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACnD,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,wBAAwB,EAAE;AAC/C,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjD,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;AACtC,IAAI;AACJ,IAAI,iBAAiB;AACrB,IAAI,aAAa;AACjB,IAAI,gBAAgB;AACpB,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE;AAC3C,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AACvD,QAAQ,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/E,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAY,OAAO,aAAa;AAChC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7E,IAAI;AACJ,IAAI,uBAAuB,CAAC,WAAW,EAAE;AACzC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa;AAC5D,QAAQ,IAAI,OAAO,YAAY,iBAAiB,EAAE;AAClD,YAAY,OAAO,CAAC,KAAK,EAAE;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAY,WAAW;AACvB,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AAChF,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC;AAC1D,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE;AAC3C,IAAI;AACJ,IAAI,0BAA0B,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY;AACtD,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;AAC5C,YAAY;AACZ,QAAQ,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,WAAW,CAAC;AAC3D,IAAI;AACJ,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,IAAI;AACJ,IAAI,gBAAgB,CAAC,CAAC,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAY;AACZ,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAY,WAAW,EAAE,CAAC;AAC1B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAChG,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,QAAQ,CAAC,CAAC,eAAe,EAAE;AAC3B,IAAI;AACJ,IAAI,sBAAsB,CAAC,IAAI,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACvD,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM;AACzB,YAAY;AACZ,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE;AAC5F,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,QAAQ,EAAE,KAAK;AAC3B,YAAY,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa;AAC/D,YAAY,KAAK;AACjB,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,yBAAyB,GAAG;AAChC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACjF,QAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAChD,YAAY,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AACzD,QAAQ;AACR,QAAQ,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AACtD,IAAI;AACJ,IAAI,0BAA0B,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,IAAI,iBAAiB;AAC7B,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvD,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAC9C,gBAAgB,iBAAiB,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,SAAS;AAC1E,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;AAChD,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,oBAAoB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzF,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,mBAAmB,EAAE;AACvD,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACnD,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,QAAQ,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC7D,gBAAgB,iBAAiB,GAAG,SAAS;AAC7C,YAAY;AACZ,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC1D,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnD,YAAY,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK;AACjD,YAAY,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACxC,YAAY,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE;AAClD,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACpD,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,QAAQ,EAAE,0BAA0B,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC5H,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACtC,QAAQ,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;AAC9F,IAAI;AACJ;AACA,IAAI,sBAAsB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACxD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK;AACzF,YAAY,IAAI,EAAE,KAAK,QAAQ,EAAE;AACjC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,YAAY,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,QAAQ;AAC9E,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AAC5D,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACxD,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACzC,gBAAgB,IAAI;AACpB,oBAAoB,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7C,gBAAgB;AAChB,gBAAgB,MAAM;AACtB;AACA,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACzC,QAAQ,qBAAqB,CAAC,MAAM;AACpC,YAAY,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC9C,YAAY,IAAI,CAAC,wBAAwB,EAAE;AAC3C,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,mBAAmB,CAAC,OAAO,EAAE;AACjC,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACtC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AACjD,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1E,gBAAgB,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AAC9E,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,kCAAkC,CAAC,KAAK,EAAE;AAC9C,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAY,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,EAAE;AAC5C,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AACxC,YAAY,IAAI,OAAO,KAAK,mBAAmB,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,YAAY,EAAE;AACvG,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,aAAa,GAAG,uCAAuC,CAAC,EAAE;AAC/E,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjC,QAAQ,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE;AAC9B,YAAY,OAAO,QAAQ,CAAC,IAAI,EAAE;AAClC,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAChE,QAAQ,IAAI,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;AAC7C,YAAY,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE;AAChD,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AACvE,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAC9D,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,SAAS,IAAI,SAAS;AAC/F,IAAI;AACJ,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;AACjF,QAAQ,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,SAAS;AAC1C,IAAI;AACJ,IAAI,sBAAsB,CAAC,EAAE,EAAE;AAC/B,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa;AACpC,QAAQ,OAAO,GAAG,YAAY,uBAAuB,GAAG,GAAG,GAAG,SAAS;AACvE,IAAI;AACJ,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AACjE,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY;AACZ,QAAQ;AACR,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AAChF,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;AAC3D,YAAY,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9C,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,YAAY,OAAO,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE;AAClD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnG,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/C,YAAY;AACZ,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAC5E,QAAQ,MAAM,KAAK,GAAG,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7H,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AAC3C,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,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,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,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,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,uBAAuB,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,46FAA46F,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,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;AAC52N;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC3K,wBAAwB,iBAAiB;AACzC,wBAAwB,UAAU;AAClC,wBAAwB,gBAAgB;AACxC,wBAAwB,gBAAgB;AACxC,wBAAwB,kBAAkB;AAC1C,wBAAwB,SAAS;AACjC,wBAAwB,gBAAgB;AACxC,wBAAwB,eAAe;AACvC,wBAAwB,sBAAsB;AAC9C,qBAAqB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAE,QAAQ,EAAE,46FAA46F,EAAE;AAC5hG,SAAS,CAAC,EAAE,CAAC;;AC1Wb;AACA;AACA;AACA;AACO,MAAM,mBAAmB,SAAS,WAAW,CAAC;AACrD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChF,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjF;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AACxD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACxC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM;AAC3C,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACnD,gBAAgB;AAChB,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAK;AACxE,gBAAgB,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE;AAChE,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,kBAAkB,EAAE;AACzC,YAAY,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9G,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAClF,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM;AAC1C,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACpC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACpE,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,IAAI;AACJ,IAAI,KAAK;AACT;AACA,IAAI,aAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAClD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;AACnE,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACjC,YAAY,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa;AAC7C,YAAY,IAAI,QAAQ,YAAY,uBAAuB,EAAE;AAC7D,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AACnG,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,QAAQ;AACR,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC;AACA;AACA,QAAQ,qBAAqB,CAAC,MAAM;AACpC,YAAY,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAC5C,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,2BAA2B,CAAC,OAAO,EAAE;AACzC,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACtC,YAAY,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AACxH,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAY,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,EAAE;AAC5C,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,OAAO,KAAK,mBAAmB,EAAE;AACtD,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,EAAE;AAC3D,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AACzC,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC5H,QAAQ;AACR,aAAa,MAAM,CAAC,CAAC,IAAI,KAAK;AAC9B,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACrD,YAAY,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,2BAA2B,CAAC;AAC9H,QAAQ,CAAC;AACT,aAAa,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAClH,IAAI;AACJ;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrG,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,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,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,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE;AACzvB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE;AACtE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE;AACzE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,oyEAAoyE,EAAE,MAAM,EAAE,CAAC,23VAA23V,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9kd;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AAChJ,wBAAwB,gBAAgB;AACxC,wBAAwB,2BAA2B;AACnD,wBAAwB,uBAAuB;AAC/C,wBAAwB,UAAU;AAClC,wBAAwB,gBAAgB;AACxC,wBAAwB,wBAAwB;AAChD,qBAAqB,EAAE,SAAS,EAAE;AAClC,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAClF,wBAAwB,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE;AACrF,qBAAqB,EAAE,QAAQ,EAAE,oyEAAoyE,EAAE,MAAM,EAAE,CAAC,23VAA23V,CAAC,EAAE;AAC9sa,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC;AAC5C,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,IAAI,EAAE,CAAC,OAAO;AAC9B,aAAa,CAAC,EAAE,EAAE,CAAC;;ACrJZ,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAC5D,QAAQ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,MAAM;AAC1C,YAAY,IAAI,CAAC,SAAS,CAAC;AAC3B,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK;AACzE,gBAAgB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAChD,oBAAoB,OAAO,EAAE;AAC7B,gBAAgB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACvD,YAAY,CAAC,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC;AAC7C,iBAAiB,SAAS,CAAC,CAAC,SAAS,KAAK;AAC1C,gBAAgB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC9C,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI;AACR,IAAI,cAAc,CAAC,YAAY,EAAE;AACjC,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtD,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;AACtE,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACpF,QAAQ,IAAI,YAAY,KAAK,gBAAgB,EAAE;AAC/C,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC1D,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC;AAC7F,QAAQ,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AAChF,QAAQ,IAAI,aAAa,EAAE,IAAI,KAAK,sBAAsB,EAAE,IAAI,EAAE,EAAE;AACpE,YAAY;AACZ,QAAQ;AACR,QAAQ,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,aAAa,CAAC,IAAI,CAAC;AACtG,YAAY,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACjD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,KAAK,EAAE;AAClC,QAAQ,OAAO;AACf,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK;AAC3B,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AAC3C,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,gBAAgB,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY;AACZ,YAAY,OAAO,SAAS;AAC5B,QAAQ,CAAC;AACT,aAAa,IAAI,CAAC,GAAG,CAAC;AACtB,IAAI;AACJ,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAC3C,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,YAAY;AACZ,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW;AACxC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,YAAY,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AACvC,QAAQ;AACR,QAAQ,OAAO,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,IAAI;AACJ,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE;AACtC,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,YAAY,MAAM,QAAQ,GAAG;AAC7B,gBAAgB,KAAK,EAAE,EAAE;AACzB,gBAAgB,MAAM,EAAE,OAAO;AAC/B,gBAAgB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnC,gBAAgB,aAAa,EAAE,KAAK;AACpC,gBAAgB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC5C,gBAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,aAAa;AACb,YAAY,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;AAC/C,QAAQ,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,YAAY,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,YAAY,IAAI,CAAC,QAAQ;AACzB,gBAAgB;AAChB,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAgB,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtE,gBAAgB,IAAI,cAAc,EAAE;AACpC,oBAAoB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxD,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC5H,oBAAoB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,gBAAgB;AAChB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,SAAS;AACxB,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,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACjQ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACpI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,qBAAqB;AACnD,oBAAoB,QAAQ,EAAE,mBAAmB;AACjD,oBAAoB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC/C,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACjHb,MAAM,SAAS,GAAG,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,CAAC;AAC5F,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY;AAChB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,CAAC;AACM,MAAM,gBAAgB,CAAC;AAC9B,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,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,YAAY;AACvJ,YAAY,cAAc;AAC1B,YAAY,iBAAiB;AAC7B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,UAAU;AACtB,YAAY,gBAAgB;AAC5B,YAAY,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC;AACjM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,YAAY;AACvJ,YAAY,cAAc;AAC1B,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;AAChF;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACvD,oBAAoB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AAC3C,oBAAoB,SAAS,EAAE,EAAE;AACjC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC7Cb;AACA;AACA;;;;"}