@servicetitan/anvil2 3.0.1 → 3.0.2

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 (263) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +8 -6
  3. package/dist/{AiMark-B1-M3ZgP.js → AiMark-DiMotaq3.js} +3 -3
  4. package/dist/{AiMark-B1-M3ZgP.js.map → AiMark-DiMotaq3.js.map} +1 -1
  5. package/dist/AiMark.js +1 -1
  6. package/dist/{Alert-C04WIw7A.js → Alert-DhhVURcl.js} +2 -2
  7. package/dist/{Alert-C04WIw7A.js.map → Alert-DhhVURcl.js.map} +1 -1
  8. package/dist/Alert.js +1 -1
  9. package/dist/{Breadcrumbs-CAJMeA1D.js → Breadcrumbs-vvKOtFwN.js} +2 -2
  10. package/dist/{Breadcrumbs-CAJMeA1D.js.map → Breadcrumbs-vvKOtFwN.js.map} +1 -1
  11. package/dist/Breadcrumbs.js +1 -1
  12. package/dist/{Calendar-BAbAagIx.js → Calendar-BLvBN8Ou.js} +2 -2
  13. package/dist/{Calendar-BAbAagIx.js.map → Calendar-BLvBN8Ou.js.map} +1 -1
  14. package/dist/{Calendar-CaCMa_jq.js → Calendar-Dtn07sfJ.js} +2 -2
  15. package/dist/{Calendar-CaCMa_jq.js.map → Calendar-Dtn07sfJ.js.map} +1 -1
  16. package/dist/Calendar.js +2 -2
  17. package/dist/{Checkbox-BSAS8-DM.js → Checkbox-BngBrjEV.js} +3 -3
  18. package/dist/{Checkbox-BSAS8-DM.js.map → Checkbox-BngBrjEV.js.map} +1 -1
  19. package/dist/{Checkbox-Ckl8EFpF.js → Checkbox-lSwl_u26.js} +2 -2
  20. package/dist/{Checkbox-Ckl8EFpF.js.map → Checkbox-lSwl_u26.js.map} +1 -1
  21. package/dist/Checkbox.js +1 -1
  22. package/dist/{Chip-Da8c7tKP.js → Chip-DBn3KRak.js} +2 -2
  23. package/dist/{Chip-Da8c7tKP.js.map → Chip-DBn3KRak.js.map} +1 -1
  24. package/dist/Chip.js +1 -1
  25. package/dist/{Combobox-CBLaT1lU.js → Combobox-BqhvHG9H.js} +4 -4
  26. package/dist/{Combobox-CBLaT1lU.js.map → Combobox-BqhvHG9H.js.map} +1 -1
  27. package/dist/Combobox.js +1 -1
  28. package/dist/{DataTable-BDXdCF7J.js → DataTable-CB-exG-7.js} +1172 -141
  29. package/dist/DataTable-CB-exG-7.js.map +1 -0
  30. package/dist/DataTable.css +259 -103
  31. package/dist/{DateFieldRange-DPTC3EZz.js → DateFieldRange-Ci-OHK6g.js} +4 -4
  32. package/dist/{DateFieldRange-DPTC3EZz.js.map → DateFieldRange-Ci-OHK6g.js.map} +1 -1
  33. package/dist/DateFieldRange.js +1 -1
  34. package/dist/{DateFieldSingle-w1G-zd9G.js → DateFieldSingle-JOEy4kSL.js} +4 -4
  35. package/dist/{DateFieldSingle-w1G-zd9G.js.map → DateFieldSingle-JOEy4kSL.js.map} +1 -1
  36. package/dist/DateFieldSingle.js +1 -1
  37. package/dist/{DateFieldYearless-DHNVc7Sd.js → DateFieldYearless-CIqPup6O.js} +4 -4
  38. package/dist/{DateFieldYearless-DHNVc7Sd.js.map → DateFieldYearless-CIqPup6O.js.map} +1 -1
  39. package/dist/DateFieldYearless.js +1 -1
  40. package/dist/{DateFieldYearlessRange-C5ktVUgG.js → DateFieldYearlessRange-Cf11uZhk.js} +3 -3
  41. package/dist/{DateFieldYearlessRange-C5ktVUgG.js.map → DateFieldYearlessRange-Cf11uZhk.js.map} +1 -1
  42. package/dist/DateFieldYearlessRange.js +1 -1
  43. package/dist/{DaysOfTheWeek-BubWkBZ0.js → DaysOfTheWeek-R2-y7cqh.js} +3 -3
  44. package/dist/{DaysOfTheWeek-BubWkBZ0.js.map → DaysOfTheWeek-R2-y7cqh.js.map} +1 -1
  45. package/dist/DaysOfTheWeek.js +1 -1
  46. package/dist/{Dialog-ByTyuybu.js → Dialog-C3yST7Ly.js} +4 -4
  47. package/dist/{Dialog-ByTyuybu.js.map → Dialog-C3yST7Ly.js.map} +1 -1
  48. package/dist/Dialog.js +1 -1
  49. package/dist/Dnd.js +2 -1
  50. package/dist/Dnd.js.map +1 -1
  51. package/dist/DndHandleButton-Dgt9G-dF.js +43 -0
  52. package/dist/DndHandleButton-Dgt9G-dF.js.map +1 -0
  53. package/dist/DndHandleButton.css +22 -0
  54. package/dist/DndSort.js +2 -1
  55. package/dist/DndSort.js.map +1 -1
  56. package/dist/{Drawer-CwyfBcwt.js → Drawer-CouIrQ8u.js} +4 -4
  57. package/dist/{Drawer-CwyfBcwt.js.map → Drawer-CouIrQ8u.js.map} +1 -1
  58. package/dist/Drawer.js +1 -1
  59. package/dist/DrillDown.js +1 -1
  60. package/dist/{EditCard-DqLSnkih.js → EditCard-DFBjxF9l.js} +2 -2
  61. package/dist/{EditCard-DqLSnkih.js.map → EditCard-DFBjxF9l.js.map} +1 -1
  62. package/dist/EditCard.js +1 -1
  63. package/dist/{FieldLabel-DZWu5dMp.js → FieldLabel-rHPbiyR3.js} +3 -3
  64. package/dist/{FieldLabel-DZWu5dMp.js.map → FieldLabel-rHPbiyR3.js.map} +1 -1
  65. package/dist/FieldLabel.js +1 -1
  66. package/dist/{FilterBar-BU8StPPd.js → FilterBar-kVue-bVK.js} +13 -13
  67. package/dist/{FilterBar-BU8StPPd.js.map → FilterBar-kVue-bVK.js.map} +1 -1
  68. package/dist/FilterBar.js +1 -1
  69. package/dist/{InputMask-EwEJlW-t.js → InputMask-DxbFpzo7.js} +3 -3
  70. package/dist/{InputMask-EwEJlW-t.js.map → InputMask-DxbFpzo7.js.map} +1 -1
  71. package/dist/InputMask.js +1 -1
  72. package/dist/InteractiveCard-KGs2b_al.js +119 -0
  73. package/dist/InteractiveCard-KGs2b_al.js.map +1 -0
  74. package/dist/InteractiveCard.css +21 -28
  75. package/dist/InteractiveCard.js +1 -1
  76. package/dist/{ListView-DBO9Bl1H.js → ListView-CYkuvkAy.js} +2 -2
  77. package/dist/{ListView-DBO9Bl1H.js.map → ListView-CYkuvkAy.js.map} +1 -1
  78. package/dist/ListView.js +1 -1
  79. package/dist/{Listbox-C0tjQFDF.js → Listbox-BBrsMfO3.js} +2 -2
  80. package/dist/{Listbox-C0tjQFDF.js.map → Listbox-BBrsMfO3.js.map} +1 -1
  81. package/dist/Listbox.js +1 -1
  82. package/dist/MultiSelectField.js +1 -1
  83. package/dist/{MultiSelectFieldSync-ueey5UBM.js → MultiSelectFieldSync-BWZQ4MFC.js} +5 -5
  84. package/dist/{MultiSelectFieldSync-ueey5UBM.js.map → MultiSelectFieldSync-BWZQ4MFC.js.map} +1 -1
  85. package/dist/MultiSelectMenu.js +1 -1
  86. package/dist/{MultiSelectMenuSync-D7hqugcQ.js → MultiSelectMenuSync-Bl4ty0je.js} +3 -3
  87. package/dist/{MultiSelectMenuSync-D7hqugcQ.js.map → MultiSelectMenuSync-Bl4ty0je.js.map} +1 -1
  88. package/dist/{NumberField-DJbdyatF.js → NumberField-DMHJ2Cyi.js} +4 -5
  89. package/dist/NumberField-DMHJ2Cyi.js.map +1 -0
  90. package/dist/NumberField.js +1 -1
  91. package/dist/Overflow.js +1 -1
  92. package/dist/{Page-DbK-JKyB.js → Page-Blw4TE5J.js} +9 -9
  93. package/dist/{Page-DbK-JKyB.js.map → Page-Blw4TE5J.js.map} +1 -1
  94. package/dist/Page.js +1 -1
  95. package/dist/{Pagination-Bg5Nsdik.js → Pagination-DYNH3WeU.js} +2 -2
  96. package/dist/{Pagination-Bg5Nsdik.js.map → Pagination-DYNH3WeU.js.map} +1 -1
  97. package/dist/Pagination.js +1 -1
  98. package/dist/{Popover-CyB7yzSf.js → Popover-C_XdNvAZ.js} +2 -2
  99. package/dist/{Popover-CyB7yzSf.js.map → Popover-C_XdNvAZ.js.map} +1 -1
  100. package/dist/Popover.js +1 -1
  101. package/dist/{ProgressBar-DSrjgLTx.js → ProgressBar-BwHaAD25.js} +2 -2
  102. package/dist/{ProgressBar-DSrjgLTx.js.map → ProgressBar-BwHaAD25.js.map} +1 -1
  103. package/dist/ProgressBar.js +1 -1
  104. package/dist/{Radio-CQaXJ72d.js → Radio-DJ6KgfcS.js} +2 -2
  105. package/dist/{Radio-CQaXJ72d.js.map → Radio-DJ6KgfcS.js.map} +1 -1
  106. package/dist/{Radio-DO4UhbBE.js → Radio-IksHWkBl.js} +3 -3
  107. package/dist/{Radio-DO4UhbBE.js.map → Radio-IksHWkBl.js.map} +1 -1
  108. package/dist/Radio.js +1 -1
  109. package/dist/RichTextEditor-C_Boj8QP.js +30852 -0
  110. package/dist/RichTextEditor-C_Boj8QP.js.map +1 -0
  111. package/dist/RichTextEditor.css +178 -0
  112. package/dist/RichTextEditor.d.ts +2 -0
  113. package/dist/RichTextEditor.js +2 -0
  114. package/dist/RichTextEditor.js.map +1 -0
  115. package/dist/{SelectCard-CtXwY8FZ.js → SelectCard-E-13CjHS.js} +3 -3
  116. package/dist/{SelectCard-CtXwY8FZ.js.map → SelectCard-E-13CjHS.js.map} +1 -1
  117. package/dist/SelectCard.js +1 -1
  118. package/dist/SelectField.js +1 -1
  119. package/dist/{SelectFieldLabel-DLT5dKbx.js → SelectFieldLabel-C-MrQm-n.js} +2 -2
  120. package/dist/{SelectFieldLabel-DLT5dKbx.js.map → SelectFieldLabel-C-MrQm-n.js.map} +1 -1
  121. package/dist/{SelectFieldSync-W_-jTf7z.js → SelectFieldSync-BbJFd_bV.js} +4 -4
  122. package/dist/{SelectFieldSync-W_-jTf7z.js.map → SelectFieldSync-BbJFd_bV.js.map} +1 -1
  123. package/dist/SelectMenu.js +1 -1
  124. package/dist/{SelectMenuSync-QcjbQtCO.js → SelectMenuSync-CBMdmGTU.js} +3 -3
  125. package/dist/{SelectMenuSync-QcjbQtCO.js.map → SelectMenuSync-CBMdmGTU.js.map} +1 -1
  126. package/dist/{SelectOptions-BsX0f22q.js → SelectOptions-BT9OCfPh.js} +2 -2
  127. package/dist/{SelectOptions-BsX0f22q.js.map → SelectOptions-BT9OCfPh.js.map} +1 -1
  128. package/dist/{SelectTrigger-BaDvF9JD.js → SelectTrigger-DtyxYDzP.js} +2 -2
  129. package/dist/{SelectTrigger-BaDvF9JD.js.map → SelectTrigger-DtyxYDzP.js.map} +1 -1
  130. package/dist/SelectTrigger.js +1 -1
  131. package/dist/{SelectTriggerBase-kMRqbXwu.js → SelectTriggerBase-Xwq929Wr.js} +3 -3
  132. package/dist/{SelectTriggerBase-kMRqbXwu.js.map → SelectTriggerBase-Xwq929Wr.js.map} +1 -1
  133. package/dist/{Switch-DeBu4Ucg.js → Switch-CElshQ9N.js} +2 -2
  134. package/dist/{Switch-DeBu4Ucg.js.map → Switch-CElshQ9N.js.map} +1 -1
  135. package/dist/Switch.js +1 -1
  136. package/dist/Table.js +1 -1
  137. package/dist/{Text-BH8gglCL.js → Text-C0F8AkvH.js} +2 -2
  138. package/dist/{Text-BH8gglCL.js.map → Text-C0F8AkvH.js.map} +1 -1
  139. package/dist/Text.js +1 -1
  140. package/dist/{TextField-CRDTnuUN.js → TextField-CLZEj0aI.js} +3 -3
  141. package/dist/{TextField-CRDTnuUN.js.map → TextField-CLZEj0aI.js.map} +1 -1
  142. package/dist/{TextField-YlMkDHp-.js → TextField-yL52fx5R.js} +2 -2
  143. package/dist/{TextField-YlMkDHp-.js.map → TextField-yL52fx5R.js.map} +1 -1
  144. package/dist/TextField.js +1 -1
  145. package/dist/{Textarea-CxXmr_Gx.js → Textarea-CGgyvnM8.js} +3 -3
  146. package/dist/{Textarea-CxXmr_Gx.js.map → Textarea-CGgyvnM8.js.map} +1 -1
  147. package/dist/Textarea.js +1 -1
  148. package/dist/{TimeField-Cz4tMYb3.js → TimeField-BEvxjjFp.js} +4 -4
  149. package/dist/{TimeField-Cz4tMYb3.js.map → TimeField-BEvxjjFp.js.map} +1 -1
  150. package/dist/TimeField.js +1 -1
  151. package/dist/Toast.js +2 -2
  152. package/dist/{Toaster-BV8RjmIN.js → Toaster-DllJAOK8.js} +3 -3
  153. package/dist/{Toaster-BV8RjmIN.js.map → Toaster-DllJAOK8.js.map} +1 -1
  154. package/dist/{Toaster-DYGDohJT.js → Toaster-DuadB8pq.js} +2 -2
  155. package/dist/{Toaster-DYGDohJT.js.map → Toaster-DuadB8pq.js.map} +1 -1
  156. package/dist/{Toolbar-Dzj2KMEy.js → Toolbar-J5cakHba.js} +5 -5
  157. package/dist/{Toolbar-Dzj2KMEy.js.map → Toolbar-J5cakHba.js.map} +1 -1
  158. package/dist/Toolbar-QYRQv45Y.js +780 -0
  159. package/dist/Toolbar-QYRQv45Y.js.map +1 -0
  160. package/dist/Toolbar.js +2 -2
  161. package/dist/{ToolbarButtonToggle--2Ka05N8.js → ToolbarButtonToggle-Ch0SH4oH.js} +5 -4
  162. package/dist/ToolbarButtonToggle-Ch0SH4oH.js.map +1 -0
  163. package/dist/{Tooltip-BlStOXN3.js → Tooltip-lBmgi5ZB.js} +7 -6
  164. package/dist/Tooltip-lBmgi5ZB.js.map +1 -0
  165. package/dist/Tooltip.css +7 -6
  166. package/dist/Tooltip.js +1 -1
  167. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js → YearlessDateInputWithPicker-DryLX8sA.js} +2 -2
  168. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js.map → YearlessDateInputWithPicker-DryLX8sA.js.map} +1 -1
  169. package/dist/add-BcQkAUip.js +6 -0
  170. package/dist/add-BcQkAUip.js.map +1 -0
  171. package/dist/assets/css-utils/a2-border.css +23 -53
  172. package/dist/assets/css-utils/a2-color.css +221 -449
  173. package/dist/assets/css-utils/a2-font.css +21 -47
  174. package/dist/assets/css-utils/a2-spacing.css +238 -481
  175. package/dist/assets/css-utils/a2-utils.css +497 -1002
  176. package/dist/assets/css-utils/border.css +23 -53
  177. package/dist/assets/css-utils/color.css +221 -449
  178. package/dist/assets/css-utils/font.css +21 -47
  179. package/dist/assets/css-utils/spacing.css +238 -481
  180. package/dist/assets/css-utils/utils.css +497 -1002
  181. package/dist/beta/components/InteractiveCard/InteractiveCard.d.ts +3 -1
  182. package/dist/beta/components/RichTextEditor/RichTextEditor.d.ts +27 -0
  183. package/dist/beta/components/RichTextEditor/index.d.ts +2 -0
  184. package/dist/beta/components/RichTextEditor/internal/LinkPopover.d.ts +14 -0
  185. package/dist/beta/components/RichTextEditor/internal/MentionList.d.ts +14 -0
  186. package/dist/beta/components/RichTextEditor/internal/MentionNodeView.d.ts +11 -0
  187. package/dist/beta/components/RichTextEditor/internal/MentionPopover.d.ts +16 -0
  188. package/dist/beta/components/RichTextEditor/internal/RichTextEditorContext.d.ts +57 -0
  189. package/dist/beta/components/RichTextEditor/internal/RichTextEditorDragHandle.d.ts +6 -0
  190. package/dist/beta/components/RichTextEditor/internal/RichTextEditorMockData.d.ts +8 -0
  191. package/dist/beta/components/RichTextEditor/internal/RichTextEditorProvider.d.ts +8 -0
  192. package/dist/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
  193. package/dist/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +11 -0
  194. package/dist/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +11 -0
  195. package/dist/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +3 -0
  196. package/dist/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +8 -0
  197. package/dist/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +18 -0
  198. package/dist/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +8 -0
  199. package/dist/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +32 -0
  200. package/dist/beta/components/RichTextEditor/types.d.ts +103 -0
  201. package/dist/beta/components/Table/DataTable/DataTable.d.ts +40 -1
  202. package/dist/beta/components/Table/DataTable/internal/DataTableBody.d.ts +22 -0
  203. package/dist/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +18 -1
  204. package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +16 -0
  205. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +8 -0
  206. package/dist/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +49 -0
  207. package/dist/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +9 -5
  208. package/dist/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +3 -0
  209. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -1
  210. package/dist/beta/components/Table/createColumnHelper.d.ts +48 -22
  211. package/dist/beta/components/Table/internal/getCommonPinningClasses.d.ts +1 -1
  212. package/dist/beta/components/Table/types.d.ts +311 -7
  213. package/dist/beta/components/index.d.ts +1 -0
  214. package/dist/beta.js +13 -12
  215. package/dist/beta.js.map +1 -1
  216. package/dist/components/Toolbar/internal/utils/accessibility.d.ts +5 -0
  217. package/dist/getKeyboardFocusableElements-B_U9rt6y.js +11 -0
  218. package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -0
  219. package/dist/index-DUzqzmOX.js +17044 -0
  220. package/dist/index-DUzqzmOX.js.map +1 -0
  221. package/dist/index-DtsM4pjR.js +71 -0
  222. package/dist/index-DtsM4pjR.js.map +1 -0
  223. package/dist/index.css +1 -22
  224. package/dist/index.js +46 -810
  225. package/dist/index.js.map +1 -1
  226. package/dist/internal/components/Surface/Surface.d.ts +141 -0
  227. package/dist/internal/components/Surface/index.d.ts +1 -0
  228. package/dist/internal/components/index.d.ts +1 -0
  229. package/dist/internal/functions/getKeyboardFocusableElements.d.ts +11 -0
  230. package/dist/{stripInlineMarkdown-BWbMy7r_.js → stripInlineMarkdown-BOi-eJO3.js} +2 -2
  231. package/dist/{stripInlineMarkdown-BWbMy7r_.js.map → stripInlineMarkdown-BOi-eJO3.js.map} +1 -1
  232. package/dist/{syncFilterUtils-nJS_tCsu.js → syncFilterUtils-Gvm81gyv.js} +4 -4
  233. package/dist/{syncFilterUtils-nJS_tCsu.js.map → syncFilterUtils-Gvm81gyv.js.map} +1 -1
  234. package/dist/token/core/css-utils/a2-border.css +0 -30
  235. package/dist/token/core/css-utils/a2-color.css +0 -228
  236. package/dist/token/core/css-utils/a2-font.css +1 -27
  237. package/dist/token/core/css-utils/a2-spacing.css +1 -244
  238. package/dist/token/core/css-utils/a2-utils.css +0 -505
  239. package/dist/token/core/css-utils/border.css +0 -30
  240. package/dist/token/core/css-utils/color.css +0 -228
  241. package/dist/token/core/css-utils/font.css +1 -27
  242. package/dist/token/core/css-utils/spacing.css +1 -244
  243. package/dist/token/core/css-utils/utils.css +0 -505
  244. package/dist/{useDrilldown-DwzT0Fse.js → useDrilldown-6SfknQ2s.js} +3 -3
  245. package/dist/{useDrilldown-DwzT0Fse.js.map → useDrilldown-6SfknQ2s.js.map} +1 -1
  246. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  247. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  248. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  249. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  250. package/dist/{useToggleSelection-CAwGOeXk.js → useToggleSelection-odFvSS5t.js} +2 -2
  251. package/dist/{useToggleSelection-CAwGOeXk.js.map → useToggleSelection-odFvSS5t.js.map} +1 -1
  252. package/package.json +18 -3
  253. package/dist/DataTable-BDXdCF7J.js.map +0 -1
  254. package/dist/InteractiveCard-CnW0m_F-.js +0 -87
  255. package/dist/InteractiveCard-CnW0m_F-.js.map +0 -1
  256. package/dist/NumberField-DJbdyatF.js.map +0 -1
  257. package/dist/ToolbarButtonToggle--2Ka05N8.js.map +0 -1
  258. package/dist/Tooltip-BlStOXN3.js.map +0 -1
  259. package/dist/getKeyboardFocusableElements-QqcABz0D.js +0 -12
  260. package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +0 -1
  261. package/dist/index-ByMdotWU.js +0 -107
  262. package/dist/index-ByMdotWU.js.map +0 -1
  263. /package/dist/{index2.css → Toolbar2.css} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataTable-BDXdCF7J.js","sources":["../src/beta/components/Table/formatters/booleanFormatter.tsx","../src/beta/components/Table/base/cells/TableEmptyCellContent.tsx","../src/beta/components/Table/internal/TruncateChips.tsx","../src/beta/components/Table/formatters/chipsFormatter.tsx","../src/beta/components/Table/formatters/currencyFormatter.tsx","../src/beta/components/Table/formatters/presets.ts","../src/beta/components/Table/formatters/dateFormatter.tsx","../src/beta/components/Table/formatters/dateTimeFormatter.tsx","../src/beta/components/Table/formatters/htmlToMarkdown.ts","../src/beta/components/Table/formatters/markdownFormatter.tsx","../src/beta/components/Table/formatters/htmlFormatter.tsx","../src/beta/components/Table/formatters/numberFormatter.tsx","../src/beta/components/Table/formatters/percentFormatter.tsx","../src/beta/components/Table/formatters/timeFormatter.tsx","../src/beta/components/Table/formatters/yearlessDateFormatter.tsx","../src/beta/components/Table/columnTypeDefaults.ts","../src/beta/components/Table/createColumnHelper.ts","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.tsx","../src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.ts","../src/beta/components/Table/base/TableBase.tsx","../src/beta/components/Table/base/TableBody.tsx","../src/beta/components/Table/internal/getCommonPinningClasses.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.tsx","../src/beta/components/Table/base/cells/TableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/util/cellPositionHelpers.ts","../src/beta/components/Table/DataTable/internal/util/cellTypeHelpers.ts","../src/beta/components/Table/internal/getCommonPinningStyles.ts","../src/beta/components/Table/DataTable/internal/constants.ts","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyImmutableCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.ts","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.tsx","../src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableBodyRow.tsx","../src/beta/components/Table/DataTable/internal/useColumnOrder.ts","../src/beta/components/Table/DataTable/internal/DataTableBody.tsx","../src/beta/components/Table/base/TableFooter.tsx","../src/beta/components/Table/base/cells/TableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.tsx","../src/beta/components/Table/DataTable/internal/DataTableFooter.tsx","../src/beta/components/Table/DataTable/internal/cells/useCellFocusListener.ts","../src/beta/components/Table/DataTable/internal/cells/CellStatus.tsx","../src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.tsx","../src/beta/components/Table/DataTable/internal/util/shallowSortingEqual.ts","../../hammer-icon/mdi/round/arrow_upward.svg","../../hammer-icon/mdi/round/arrow_downward.svg","../src/beta/components/Table/base/TableHeader.tsx","../src/beta/components/Table/base/cells/TableHeaderCell.tsx","../src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.tsx","../src/beta/components/Table/internal/ResizeHandle.tsx","../src/beta/components/Table/DataTable/internal/DataTableHeader.tsx","../src/beta/components/Table/base/TableContainer.tsx","../src/beta/components/Table/DataTable/internal/DataTablePagination.tsx","../src/beta/components/Table/DataTable/internal/useAsyncData.tsx","../src/beta/components/Table/DataTable/internal/usePageDataCache.ts","../src/beta/components/Table/internal/scrollCellIntoView.ts","../src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.tsx","../src/beta/components/Table/DataTable/internal/useDataTableVirtualizer.ts","../src/beta/components/Table/DataTable/DataTable.tsx"],"sourcesContent":["/**\n * Options type for the boolean formatter function\n */\nexport type BooleanFormatterOptions = {\n /**\n * The text to display for true values\n * @default \"True\"\n */\n trueLabel?: string;\n /**\n * The text to display for false values\n * @default \"False\"\n */\n falseLabel?: string;\n};\n\n/**\n * Helper function for formatting table cells with boolean values\n * @param value - The boolean value to format\n * @param options - The options for the boolean formatter\n * @returns The formatted boolean label or null for undefined/null values\n */\nexport const booleanFormatter = (\n value?: boolean | null,\n { trueLabel = \"True\", falseLabel = \"False\" }: BooleanFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n return value ? trueLabel : falseLabel;\n};\n","import styles from \"./TableCells.module.scss\";\n\n/**\n * The empty cell content for table cells\n */\nexport const TableEmptyCellContent = () => {\n return (\n <span aria-label=\"empty table cell\" className={styles[\"empty-cell\"]}>\n &mdash;\n </span>\n );\n};\n","import {\n ComponentPropsWithoutRef,\n useState,\n useRef,\n useLayoutEffect,\n} from \"react\";\nimport { Chip, ChipProps } from \"../../../../components/Chip\";\nimport cx from \"classnames\";\nimport styles from \"./TruncateChips.module.scss\";\n\n/**\n * Props for the TruncateChips component\n */\nexport type TruncateChipsProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Array of chip items to display\n */\n items: ChipProps[];\n};\n\n/**\n * Optimized TruncateChips component using measurement-based calculation.\n *\n * Features:\n * - Uses visible measurement chips to determine actual layout\n * - Responsive to container width changes\n * - Supports custom gap between chips\n * - Clean, predictable behavior\n *\n * @example\n * <TruncateChips\n * items={[\n * { label: \"React\", onClose: () => {} },\n * { label: \"TypeScript\", onClose: () => {} },\n * { label: \"JavaScript\", onClose: () => {} }\n * ]}\n * />\n */\nexport const TruncateChips = ({\n items = [],\n className,\n ...rest\n}: TruncateChipsProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const [hiddenCount, setHiddenCount] = useState(0);\n const hiddenChips = useRef<{ el: HTMLElement; rect: DOMRect }[]>([]);\n const plusChipRef = useRef<HTMLSpanElement>(null);\n const [plusChipWidth, setPlusChipWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!chipsContainerRef.current) return;\n let totalHiddenCount = 0;\n const observer = new IntersectionObserver(\n (entries) => {\n const isResizing = document.querySelector(\n '[aria-label=\"Resize column\"][aria-pressed=\"true\"]',\n );\n if (isResizing) return;\n\n // Update the state of each element that was observed\n entries.forEach((entry) => {\n const target = entry.target as HTMLElement;\n\n if (entry.isIntersecting) {\n // Element is visible, keep it visible\n target.style.display = \"flex\";\n target.style.visibility = \"visible\";\n totalHiddenCount = Math.max(0, totalHiddenCount - 1);\n }\n\n if (!entry.isIntersecting) {\n // Element is outside the container, hide it\n hiddenChips.current.push({\n el: target,\n rect: target.getBoundingClientRect(),\n });\n target.style.visibility = \"hidden\";\n target.style.display = \"none\";\n totalHiddenCount++;\n }\n });\n\n setHiddenCount(totalHiddenCount);\n },\n {\n root: containerRef.current,\n rootMargin: \"0px\",\n threshold: 1,\n },\n );\n\n const children = Array.from(chipsContainerRef.current.children);\n children.forEach((child) => {\n observer.observe(child as HTMLElement);\n });\n\n // Cleanup observer on unmount or dependency change\n return () => {\n observer.disconnect();\n };\n }, [items]); // Re-run when items change\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n if (hiddenCount > 0 && containerRef.current) {\n const plusChipRect = plusChipRef.current?.getBoundingClientRect();\n setPlusChipWidth(plusChipRect?.width ?? 0);\n const containerRect = containerRef.current.getBoundingClientRect();\n const chipRect =\n hiddenChips.current[hiddenChips.current.length - 1].rect;\n\n const fitsHorizontally =\n chipRect.width <= containerRect.width &&\n chipRect.left >= containerRect.left &&\n chipRect.right <= containerRect.right;\n\n const fitsVertically =\n chipRect.height <= containerRect.height &&\n chipRect.top >= containerRect.top &&\n chipRect.bottom <= containerRect.bottom;\n\n const hasEnoughSpace = fitsHorizontally && fitsVertically;\n\n hiddenChips.current[hiddenCount - 1].el.style.display = hasEnoughSpace\n ? \"flex\"\n : \"none\";\n\n if (hasEnoughSpace) {\n hiddenChips.current.pop();\n }\n }\n }\n });\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [hiddenCount]);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles[\"truncate-chips\"], className)}\n style={{\n marginInlineEnd: plusChipWidth,\n }}\n {...rest}\n >\n <div ref={chipsContainerRef} style={{ display: \"contents\" }}>\n {/* Visible chips container */}\n {items.map((chip, index) => (\n <Chip key={index} {...chip} style={{ visibility: \"hidden\" }} />\n ))}\n </div>\n\n {/* Visible plus chip */}\n {hiddenCount > 0 && <Chip label={`+${hiddenCount}`} ref={plusChipRef} />}\n </div>\n );\n};\n","import { Chip, ChipProps } from \"../../../../components/Chip\";\nimport { Flex } from \"../../../../components/Flex\";\nimport { TableEmptyCellContent } from \"../base/cells/TableEmptyCellContent\";\nimport { TruncateChips } from \"../internal/TruncateChips\";\n\n/**\n * The accepted value type for the chips formatter function\n */\nexport type ChipsValueType = string | string[] | ChipProps | ChipProps[];\n\n/**\n * Props for the chips formatter function\n */\nexport type ChipsFormatterOptions = {\n /**\n * Whether to truncate the chips instead of wrapping\n */\n truncateChips?: boolean;\n};\n\n/**\n * Helper function for formatting table cells with chips\n * @param value - The value to format\n * @param options - The options for the chips formatter\n * @returns The formatted chips\n */\nexport const chipsFormatter = (\n value?: ChipsValueType,\n { truncateChips }: ChipsFormatterOptions = { truncateChips: false },\n) => {\n if (!value) return <TableEmptyCellContent />;\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return <TableEmptyCellContent />;\n }\n\n const isStringArray = value.every((v) => typeof v === \"string\");\n const items = isStringArray\n ? value.map((v) => ({ label: v }))\n : (value as ChipProps[]);\n\n if (truncateChips) {\n return <TruncateChips items={items} />;\n }\n\n return (\n <Flex direction=\"row\" gap=\"2\" wrap=\"wrap\">\n {items.map((item, index) => (\n <Chip key={`${item.label}-${index}`} {...item} />\n ))}\n </Flex>\n );\n }\n\n if (typeof value === \"string\") {\n return <Chip label={value} />;\n }\n\n return <Chip {...value} />;\n};\n","/**\n * Props for the currency formatter function\n */\nexport type CurrencyFormatterOptions = {\n /**\n * The locale to use for the currency formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The currency to use for the currency formatter\n * @default \"USD\"\n */\n currency?: Intl.NumberFormatOptions[\"currency\"];\n};\n\n/**\n * Helper function for formatting table cells with currency, including i18n support\n * @param value - The value to format\n * @param options - The options for the currency formatter\n * @returns The formatted currency\n */\nexport const currencyFormatter = (\n value?: number,\n options: CurrencyFormatterOptions = {},\n) => {\n const { locale = \"en-US\", currency = \"USD\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"currency\",\n currency,\n })\n : null;\n};\n","/**\n * Date format preset options\n */\nexport type DateFormatPreset = \"short\" | \"medium\" | \"long\" | \"full\";\n\n/**\n * Time format preset options\n */\nexport type TimeFormatPreset = \"short\" | \"medium\";\n\n/**\n * Shared date format presets used by date formatters\n */\nexport const dateFormatPresets: Record<\n DateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" },\n medium: { year: \"numeric\", month: \"short\", day: \"2-digit\" },\n long: { year: \"numeric\", month: \"long\", day: \"2-digit\" },\n full: { weekday: \"long\", year: \"numeric\", month: \"long\", day: \"2-digit\" },\n};\n\n/**\n * Shared time format presets used by time formatters\n */\nexport const timeFormatPresets: Record<\n TimeFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { hour: \"2-digit\", minute: \"2-digit\" },\n medium: { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" },\n};\n","import { DateTime } from \"luxon\";\nimport { DateFormatPreset, dateFormatPresets } from \"./presets\";\n\nexport type { DateFormatPreset };\n\n/**\n * Options type for the date formatter function\n */\nexport type DateFormatterOptions = {\n /**\n * The locale to use for the date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n format?: DateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with plain dates, including i18n support.\n *\n * Accepts plain date strings in the format \"YYYY-MM-DD\" (like Temporal.PlainDate).\n * For JavaScript Date objects or date-times with timezone information,\n * use `dateTimeFormatter` instead.\n *\n * @param value - The plain date string to format (ISO format \"YYYY-MM-DD\")\n * @param options - The options for the date formatter\n * @returns The formatted date string or null for undefined/null values\n */\nexport const dateFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: DateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // Parse as plain date (UTC to avoid local timezone shifts)\n const dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = dateFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { IanaZone } from \"../../../../types\";\nimport {\n DateFormatPreset,\n TimeFormatPreset,\n dateFormatPresets,\n timeFormatPresets,\n} from \"./presets\";\n\n/**\n * Date format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatDatePreset = DateFormatPreset;\n\n/**\n * Time format preset options for dateTimeFormatter\n */\nexport type DateTimeFormatTimePreset = TimeFormatPreset | \"none\";\n\n/**\n * Options type for the date-time formatter function\n */\nexport type DateTimeFormatterOptions = {\n /**\n * The locale to use for the date-time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset for the date portion or Intl.DateTimeFormatOptions object\n * - \"short\": 01/15/2024\n * - \"medium\": Jan 15, 2024\n * - \"long\": January 15, 2024\n * - \"full\": Monday, January 15, 2024\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: \"long\", month: \"short\", day: \"numeric\" })\n * @default \"short\"\n */\n dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;\n /**\n * The format preset for the time portion or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - \"none\": Omit time from display (useful for Date objects when you only want the date)\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n timeFormat?: DateTimeFormatTimePreset | Intl.DateTimeFormatOptions;\n /**\n * The IANA timezone to use for displaying Date objects (e.g., \"America/New_York\", \"Europe/London\", \"UTC\").\n * If not provided, uses the user's local timezone.\n *\n * **Note:** This option only applies to `Date` objects. For string inputs, timezone handling is automatic:\n * - Strings without timezone info (e.g., \"2024-01-15T09:30:00\") are treated as plain date-times with no conversion\n * - Strings with timezone info (e.g., \"2024-01-15T09:30:00Z\" or \"2024-01-15T09:30:00-05:00\") use their embedded timezone\n *\n * @default undefined (local timezone)\n */\n timeZone?: IanaZone;\n};\n\n/**\n * Detects if an ISO string contains timezone information (Z suffix or offset like +00:00, -08:00)\n */\nconst hasTimezoneInfo = (isoString: string): boolean => {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/.test(isoString);\n};\n\n/**\n * Helper function for formatting table cells with date and time, including i18n support.\n *\n * For string inputs:\n * - Strings without timezone info are treated as \"plain date-times\" (no timezone conversion, no timezone displayed)\n * - Strings with timezone info (Z or offset) honor the provided timezone and display it (e.g., \"PST\", \"UTC\")\n *\n * For Date objects:\n * - Uses local timezone by default and displays the timezone\n * - Use the `timeZone` option to specify a different timezone (e.g., \"America/New_York\", \"UTC\")\n *\n * @param value - The date-time value to format (ISO string \"YYYY-MM-DDTHH:mm:ss\" or Date object)\n * @param options - The options for the date-time formatter\n * @returns The formatted date-time string or null for undefined/null values\n */\nexport const dateTimeFormatter = (\n value?: string | Date | null,\n {\n locale = \"en-US\",\n dateFormat = \"short\",\n timeFormat = \"short\",\n timeZone,\n }: DateTimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let dateTime: DateTime;\n let includeTimezone = false;\n\n if (value instanceof Date) {\n // For Date objects, use specified timezone or local timezone\n if (timeZone) {\n dateTime = DateTime.fromJSDate(value, { zone: timeZone });\n } else {\n // Use local timezone - DateTime.fromJSDate uses local timezone by default\n dateTime = DateTime.fromJSDate(value);\n }\n // Always display timezone for Date objects\n includeTimezone = true;\n } else {\n // String input - detect timezone\n if (hasTimezoneInfo(value)) {\n // Has timezone info - parse and keep in original timezone to display timezone\n dateTime = DateTime.fromISO(value);\n if (!dateTime.isValid) {\n return null;\n }\n includeTimezone = true;\n } else {\n // No timezone info - treat as plain date-time (UTC parse)\n dateTime = DateTime.fromISO(value, { zone: \"utc\" });\n }\n }\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n const localizedDateTime = dateTime.setLocale(localeString);\n\n // Resolve date format options\n const dateOptions: Intl.DateTimeFormatOptions =\n typeof dateFormat === \"string\" ? dateFormatPresets[dateFormat] : dateFormat;\n\n // Resolve time format options\n const timeOptions: Intl.DateTimeFormatOptions =\n typeof timeFormat === \"string\"\n ? timeFormat === \"none\"\n ? {}\n : timeFormatPresets[timeFormat]\n : timeFormat;\n\n // Combine date and time options, adding timezone if present in input\n const formatOptions: Intl.DateTimeFormatOptions = {\n ...(includeTimezone && { timeZoneName: \"short\" }),\n ...dateOptions,\n ...timeOptions,\n };\n\n return localizedDateTime.toLocaleString(formatOptions);\n};\n","const SUPPORTED_INLINE_TAGS = [\"strong\", \"b\", \"em\", \"i\", \"code\", \"mark\"];\n\nconst INLINE_TAG_REGEX = new RegExp(\n `<(${SUPPORTED_INLINE_TAGS.join(\"|\")})(\\\\s[^>]*)?>([\\\\s\\\\S]*?)</\\\\1>`,\n \"gi\",\n);\n\nconst INLINE_WRAPPERS: Record<string, [string, string]> = {\n strong: [\"**\", \"**\"],\n b: [\"**\", \"**\"],\n em: [\"*\", \"*\"],\n i: [\"*\", \"*\"],\n code: [\"`\", \"`\"],\n mark: [\"==\", \"==\"],\n};\n\nfunction convertInlineTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n while (result !== previous) {\n previous = result;\n result = result.replace(INLINE_TAG_REGEX, (_, tag, _attrs, content) => {\n const normalizedTag = tag.toLowerCase();\n const wrapper = INLINE_WRAPPERS[normalizedTag];\n if (!wrapper) return content;\n return wrapper[0] + convertInlineTags(content) + wrapper[1];\n });\n }\n\n return result;\n}\n\nconst BR_REGEX = /<br\\s*\\/?>/gi;\nconst P_OPEN_REGEX = /<p(\\s[^>]*)?>/gi;\nconst P_CLOSE_REGEX = /<\\/p>/gi;\n\nconst NAMED_ENTITIES: Record<string, string> = {\n amp: \"&\",\n lt: \"<\",\n gt: \">\",\n nbsp: \" \",\n quot: '\"',\n \"#39\": \"'\",\n};\n\nconst ENTITY_REGEX = /&(#x[0-9a-fA-F]+|#\\d+|[a-zA-Z]+);/g;\n\nfunction decodeEntities(text: string): string {\n return text.replace(ENTITY_REGEX, (match, entity: string) => {\n if (entity.startsWith(\"#x\")) {\n return String.fromCharCode(parseInt(entity.slice(2), 16));\n }\n if (entity.startsWith(\"#\")) {\n return String.fromCharCode(parseInt(entity.slice(1), 10));\n }\n return NAMED_ENTITIES[entity] ?? match;\n });\n}\n\nconst SUPPORTED_TAGS = [\n \"strong\",\n \"b\",\n \"em\",\n \"i\",\n \"code\",\n \"mark\",\n \"ul\",\n \"ol\",\n \"li\",\n \"br\",\n \"p\",\n];\n\nconst UNSUPPORTED_TAG_REGEX = new RegExp(\n `<(?!/?(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>[\\\\s\\\\S]*?</[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nconst ORPHANED_CLOSE_TAG_REGEX = new RegExp(\n `</(?!(?:${SUPPORTED_TAGS.join(\"|\")})\\\\b)[a-zA-Z][^>]*>`,\n \"gi\",\n);\n\nfunction removeUnsupportedTags(html: string): string {\n let result = html;\n let previous = \"\";\n\n // Iterate to handle nested unsupported tags (inner removed first, then outer)\n while (result !== previous) {\n previous = result;\n result = result.replace(UNSUPPORTED_TAG_REGEX, \"\");\n }\n\n // Remove any orphaned closing tags left by nested removal\n result = result.replace(ORPHANED_CLOSE_TAG_REGEX, \"\");\n\n return result;\n}\n\nconst UL_REGEX = /<ul(\\s[^>]*)?>[\\s\\S]*?<\\/ul>/gi;\nconst OL_REGEX = /<ol(\\s[^>]*)?>[\\s\\S]*?<\\/ol>/gi;\nconst LI_REGEX = /<li(\\s[^>]*)?>[\\s\\S]*?<\\/li>/gi;\nconst LI_CONTENT_REGEX = /^<li(\\s[^>]*)?>|<\\/li>$/gi;\n\nfunction convertList(listHtml: string, ordered: boolean): string {\n const items = listHtml.match(LI_REGEX);\n if (!items) return \"\";\n\n return items\n .map((item, index) => {\n const content = convertInlineTags(\n item.replace(LI_CONTENT_REGEX, \"\").trim(),\n );\n return ordered ? `${index + 1}. ${content}` : `- ${content}`;\n })\n .join(\"\\n\");\n}\n\nfunction convertLists(html: string): string {\n let result = html;\n result = result.replace(UL_REGEX, (match) => convertList(match, false));\n result = result.replace(OL_REGEX, (match) => convertList(match, true));\n return result;\n}\n\n/**\n * Converts an HTML string to the markdown subset supported by markdownFormatter.\n *\n * Supported tags: strong, b, em, i, code, mark, ul, ol, li, br, p.\n * Unsupported tags and their content are dropped entirely.\n * HTML entities are decoded to plain text.\n *\n * @param value - The HTML string to convert\n * @returns The equivalent markdown string, or empty string for null/undefined/empty input\n */\nexport function htmlToMarkdown(value?: string | null): string {\n if (value == null || value === \"\") {\n return \"\";\n }\n\n let result = value;\n\n // Remove unsupported tags and their content (first, before any conversion)\n result = removeUnsupportedTags(result);\n\n // Convert <p> tags: strip opening/closing, add newline after closing\n result = result.replace(P_OPEN_REGEX, \"\");\n result = result.replace(P_CLOSE_REGEX, \"\\n\");\n\n // Convert lists\n result = convertLists(result);\n\n // Convert <br> variants to newlines\n result = result.replace(BR_REGEX, \"\\n\");\n\n // Convert inline tags\n result = convertInlineTags(result);\n\n // Decode HTML entities (last, so entities inside tags are preserved during matching)\n result = decodeEntities(result);\n\n // Trim trailing newlines produced by </p> at end of input\n result = result.replace(/\\n+$/, \"\");\n\n return result;\n}\n","import { ReactNode } from \"react\";\nimport styles from \"./MarkdownFormatter.module.scss\";\n\nconst INLINE_REGEX =\n /\\*\\*\\*(.+?)\\*\\*\\*|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*|==(.+?)==|`(.+?)`/g;\n\nconst UNORDERED_LIST_REGEX = /^- (.+)$/;\nconst ORDERED_LIST_REGEX = /^\\d+\\. (.+)$/;\n\nfunction parseInline(text: string): ReactNode[] {\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n\n INLINE_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = INLINE_REGEX.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(text.substring(lastIndex, match.index));\n }\n\n const key = match.index;\n const savedIndex = INLINE_REGEX.lastIndex;\n\n if (match[1]) {\n // ***bold italic***\n parts.push(\n <strong key={key}>\n <em>{parseInline(match[1])}</em>\n </strong>,\n );\n } else if (match[2]) {\n // **bold**\n parts.push(<strong key={key}>{parseInline(match[2])}</strong>);\n } else if (match[3]) {\n // *italic*\n parts.push(<em key={key}>{parseInline(match[3])}</em>);\n } else if (match[4]) {\n // ==highlight==\n parts.push(\n <mark key={key} className={styles.highlight}>\n {parseInline(match[4])}\n </mark>,\n );\n } else if (match[5]) {\n // `code` — no recursion inside code\n parts.push(\n <code key={key} className={styles.code}>\n {match[5]}\n </code>,\n );\n }\n\n INLINE_REGEX.lastIndex = savedIndex;\n lastIndex = savedIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push(text.substring(lastIndex));\n }\n\n return parts;\n}\n\ntype Block =\n | { type: \"text\"; content: string }\n | { type: \"ul\"; items: string[] }\n | { type: \"ol\"; items: string[] };\n\nfunction parseBlocks(text: string): Block[] {\n const lines = text.split(\"\\n\");\n const blocks: Block[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i];\n const ulMatch = line.match(UNORDERED_LIST_REGEX);\n const olMatch = line.match(ORDERED_LIST_REGEX);\n\n if (ulMatch) {\n const items: string[] = [ulMatch[1]];\n i++;\n while (i < lines.length) {\n const nextUl = lines[i].match(UNORDERED_LIST_REGEX);\n if (!nextUl) break;\n items.push(nextUl[1]);\n i++;\n }\n blocks.push({ type: \"ul\", items });\n } else if (olMatch) {\n const items: string[] = [olMatch[1]];\n i++;\n while (i < lines.length) {\n const nextOl = lines[i].match(ORDERED_LIST_REGEX);\n if (!nextOl) break;\n items.push(nextOl[1]);\n i++;\n }\n blocks.push({ type: \"ol\", items });\n } else {\n if (line !== \"\") {\n blocks.push({ type: \"text\", content: line });\n }\n i++;\n }\n }\n\n return blocks;\n}\n\nfunction renderBlocks(blocks: Block[]): ReactNode[] {\n return blocks.map((block, index) => {\n switch (block.type) {\n case \"text\":\n return <span key={index}>{parseInline(block.content)}</span>;\n case \"ul\":\n return (\n <ul key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ul>\n );\n case \"ol\":\n return (\n <ol key={index} className={styles.list}>\n {block.items.map((item, i) => (\n <li key={i}>{parseInline(item)}</li>\n ))}\n </ol>\n );\n }\n });\n}\n\n/**\n * Formats a string value as markdown content for DataTable cells.\n *\n * Supports inline constructs (bold, italic, bold+italic, inline code, highlight)\n * and block-level flat lists (unordered with `- `, ordered with `N. `).\n *\n * @param value - The markdown string to format\n * @returns Formatted React nodes, or null for empty/null/undefined values\n */\nexport const markdownFormatter = (value?: string | null): ReactNode => {\n if (value == null || value === \"\") {\n return null;\n }\n\n const blocks = parseBlocks(value);\n\n if (blocks.length === 1 && blocks[0].type === \"text\") {\n return <>{parseInline(blocks[0].content)}</>;\n }\n\n return <div className={styles.container}>{renderBlocks(blocks)}</div>;\n};\n","import { ReactNode } from \"react\";\nimport { htmlToMarkdown } from \"./htmlToMarkdown\";\nimport { markdownFormatter } from \"./markdownFormatter\";\n\n/**\n * Formats an HTML string value for DataTable cells by converting to markdown\n * and rendering through the markdown formatter.\n *\n * Supported HTML: strong, b, em, i, code, mark, ul, ol, li, br, p.\n * Unsupported tags and their content are dropped entirely.\n * HTML entities are decoded to plain text.\n *\n * @param value - The HTML string to format\n * @returns Formatted React nodes, or null for empty/null/undefined values\n */\nexport const htmlFormatter = (value?: string | null): ReactNode => {\n const markdown = htmlToMarkdown(value);\n return markdownFormatter(markdown);\n};\n","/**\n * Options type for the number formatter function\n */\nexport type NumberFormatterOptions = {\n /**\n * The locale to use for the number formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The minimum number of fraction digits to display\n * @default 0\n */\n minimumFractionDigits?: number;\n /**\n * The maximum number of fraction digits to display\n * @default 2\n */\n maximumFractionDigits?: number;\n /**\n * Whether to use grouping separators (e.g., thousands separator)\n * @default true\n */\n useGrouping?: boolean;\n /**\n * The notation style: \"standard\", \"scientific\", \"engineering\", or \"compact\"\n * @default \"standard\"\n */\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n /**\n * How to display the sign: \"auto\", \"never\", \"always\", or \"exceptZero\"\n * @default \"auto\"\n */\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n};\n\n/**\n * Helper function for formatting table cells with numbers, including i18n support\n * @param value - The value to format\n * @param options - The options for the number formatter\n * @returns The formatted number\n */\nexport const numberFormatter = (\n value?: number | null,\n options: NumberFormatterOptions = {},\n) => {\n const {\n locale = \"en-US\",\n minimumFractionDigits = 0,\n maximumFractionDigits = 2,\n useGrouping = true,\n notation = \"standard\",\n signDisplay = \"auto\",\n } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"decimal\",\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n notation,\n signDisplay,\n })\n : null;\n};\n","/**\n * Options type for the percent formatter function\n */\nexport type PercentFormatterOptions = {\n /**\n * The number of decimals to display\n * @default 2\n */\n decimals?: number;\n /**\n * The locale to use for the percent formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n};\n\n/**\n * Helper function for formatting table cells with percentages, including i18n support\n * @param value - The value to format\n * @param options - The options for the percent formatter\n * @returns The formatted percentage\n */\nexport const percentFormatter = (\n value?: number,\n options: PercentFormatterOptions = {},\n) => {\n const { decimals = 2, locale = \"en-US\" } = options;\n\n return value != null\n ? value.toLocaleString(locale, {\n style: \"percent\",\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n : null;\n};\n","import { DateTime } from \"luxon\";\nimport { TimeFormatPreset, timeFormatPresets } from \"./presets\";\n\nexport type { TimeFormatPreset };\n\n/**\n * Options type for the time formatter function\n */\nexport type TimeFormatterOptions = {\n /**\n * The locale to use for the time formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": 08:30 AM\n * - \"medium\": 08:30:00 AM\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { hour: \"2-digit\", minute: \"2-digit\", hour12: false })\n * @default \"short\"\n */\n format?: TimeFormatPreset | Intl.DateTimeFormatOptions;\n};\n\n/**\n * Helper function for formatting table cells with times, including i18n support.\n * Treats time strings as \"plain times\" without timezone conversion.\n * @param value - The time value to format (ISO time string \"HH:mm:ss\" or \"HH:mm\")\n * @param options - The options for the time formatter\n * @returns The formatted time string or null for undefined/null values\n */\nexport const timeFormatter = (\n value?: string | null,\n { locale = \"en-US\", format = \"short\" }: TimeFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n // Parse time-only string by prepending a reference date\n // Use UTC zone to treat as a \"plain time\" without timezone conversion\n const dateTime = DateTime.fromISO(`1970-01-01T${value}`, { zone: \"utc\" });\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = timeFormatPresets[format];\n return dateTime.setLocale(localeString).toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.setLocale(localeString).toLocaleString(format);\n};\n","import { DateTime } from \"luxon\";\nimport { YearlessDate } from \"../../../../components/DateFieldYearless/types\";\n\n/**\n * Yearless date format preset options\n */\nexport type YearlessDateFormatPreset = \"short\" | \"long\";\n\n/**\n * Options type for the yearless date formatter function\n */\nexport type YearlessDateFormatterOptions = {\n /**\n * The locale to use for the yearless date formatter\n * @default \"en-US\"\n */\n locale?: Intl.LocalesArgument;\n /**\n * The format preset or Intl.DateTimeFormatOptions object\n * - \"short\": Jan 05\n * - \"long\": January 05\n * - Intl.DateTimeFormatOptions: Custom format (e.g., { month: \"long\", day: \"numeric\" })\n * @default \"short\"\n */\n format?: YearlessDateFormatPreset | Intl.DateTimeFormatOptions;\n};\n\nconst formatPresets: Record<\n YearlessDateFormatPreset,\n Intl.DateTimeFormatOptions\n> = {\n short: { month: \"short\", day: \"2-digit\" },\n long: { month: \"long\", day: \"2-digit\" },\n};\n\n/**\n * Helper function for formatting table cells with month and day (no year), including i18n support\n * @param value - The yearless date value to format. Accepts:\n * - Temporal PlainMonthDay string format: \"--MM-DD\" (e.g., \"--01-15\")\n * - YearlessDate object: { month: number, day: number }\n * @param options - The options for the yearless date formatter\n * @returns The formatted month-day string or null for undefined/null values\n */\nexport const yearlessDateFormatter = (\n value?: string | YearlessDate | null,\n { locale = \"en-US\", format = \"short\" }: YearlessDateFormatterOptions = {},\n) => {\n if (value == null) {\n return null;\n }\n\n let month: number;\n let day: number;\n\n if (typeof value === \"string\") {\n // Parse the --MM-DD format (Temporal PlainMonthDay string format)\n const match = value.match(/^--(\\d{2})-(\\d{2})$/);\n if (!match) {\n return null;\n }\n month = parseInt(match[1], 10);\n day = parseInt(match[2], 10);\n } else {\n // YearlessDate object format\n if (value.month == null || value.day == null) {\n return null;\n }\n month = value.month;\n day = value.day;\n }\n\n // Convert locale to string for Luxon compatibility\n const localeString = locale?.toString() ?? \"en-US\";\n\n // Create a DateTime with a leap year reference to support Feb 29\n const dateTime = DateTime.fromObject(\n {\n year: 2000,\n month,\n day,\n },\n { locale: localeString },\n );\n\n if (!dateTime.isValid) {\n return null;\n }\n\n // Check if format is a preset string or Intl options object\n if (typeof format === \"string\") {\n const preset = formatPresets[format];\n return dateTime.toLocaleString(preset);\n }\n\n // Custom Intl.DateTimeFormatOptions\n return dateTime.toLocaleString(format);\n};\n","import { ReactNode } from \"react\";\nimport {\n booleanFormatter,\n BooleanFormatterOptions,\n currencyFormatter,\n CurrencyFormatterOptions,\n dateFormatter,\n DateFormatterOptions,\n dateTimeFormatter,\n DateTimeFormatterOptions,\n htmlFormatter,\n markdownFormatter,\n numberFormatter,\n NumberFormatterOptions,\n percentFormatter,\n PercentFormatterOptions,\n timeFormatter,\n TimeFormatterOptions,\n} from \"./formatters\";\nimport { ColumnType, ColumnTypeConfig, ColumnTypeOptionsMap } from \"./types\";\n\n/**\n * Display defaults for a column type.\n * Defines the default formatter and alignment for each column type.\n */\nexport type ColumnTypeDefaults = {\n /**\n * Default horizontal alignment for the column.\n */\n align: \"start\" | \"center\" | \"end\";\n /**\n * Factory function to create the default renderCell function.\n * Receives formatter options and returns the renderCell function.\n */\n createRenderCell: (\n options?: ColumnTypeOptionsMap[ColumnType],\n ) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;\n};\n\n/**\n * Mapping of column types to their display defaults.\n * Used by the column helper to apply sensible defaults based on data type.\n */\nexport const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults> = {\n text: {\n align: \"start\",\n createRenderCell: () => undefined, // No formatter, use raw value\n },\n number: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n numberFormatter(\n value as number | undefined,\n options as NumberFormatterOptions,\n ),\n },\n currency: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n currencyFormatter(\n value as number | undefined,\n options as CurrencyFormatterOptions,\n ),\n },\n percent: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n percentFormatter(\n value as number | undefined,\n options as PercentFormatterOptions,\n ),\n },\n date: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateFormatter(\n value as string | undefined,\n options as DateFormatterOptions,\n ),\n },\n dateTime: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n dateTimeFormatter(\n value as string | Date | undefined,\n options as DateTimeFormatterOptions,\n ),\n },\n time: {\n align: \"end\",\n createRenderCell: (options) => (value) =>\n timeFormatter(\n value as string | undefined,\n options as TimeFormatterOptions,\n ),\n },\n boolean: {\n align: \"start\",\n createRenderCell: (options) => (value) =>\n booleanFormatter(\n value as boolean | undefined,\n options as BooleanFormatterOptions,\n ),\n },\n markdown: {\n align: \"start\",\n createRenderCell: () => (value) =>\n markdownFormatter(value as string | undefined),\n },\n html: {\n align: \"start\",\n createRenderCell: () => (value) =>\n htmlFormatter(value as string | undefined),\n },\n};\n\n/**\n * Extracts the column type string and options from a ColumnTypeConfig.\n *\n * @param config - The column type configuration (string or object)\n * @returns Tuple of [type string, options object or undefined]\n *\n * @example\n * ```ts\n * resolveColumnTypeConfig(\"currency\")\n * // Returns: [\"currency\", undefined]\n *\n * resolveColumnTypeConfig({ type: \"currency\", options: { currency: \"EUR\" } })\n * // Returns: [\"currency\", { currency: \"EUR\" }]\n * ```\n */\nexport function resolveColumnTypeConfig<T extends ColumnType>(\n config: ColumnTypeConfig<T>,\n): [T, ColumnTypeOptionsMap[T] | undefined] {\n if (typeof config === \"string\") {\n return [config, undefined];\n }\n return [config.type, config.options];\n}\n\n/**\n * Gets the display defaults for a column type.\n *\n * @param type - The column type\n * @returns The column type defaults (align and createRenderCell)\n *\n * @example\n * ```ts\n * const defaults = getColumnTypeDefaults(\"currency\");\n * // Returns: { align: \"end\", createRenderCell: ... }\n * ```\n */\nexport function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults {\n return COLUMN_TYPE_DEFAULTS[type];\n}\n","import { ReactNode } from \"react\";\nimport {\n ColumnDef,\n ColumnTypeConfig,\n TextEditConfig,\n NumberEditConfig,\n SelectEditConfig,\n SelectAsyncEditConfig,\n MultiselectEditConfig,\n MultiselectAsyncEditConfig,\n BooleanEditConfig,\n TableRow,\n ColumnHeaderConfig,\n} from \"./types\";\nimport { MultiSelectMenuOption } from \"../MultiSelectMenu\";\n\n/**\n * Base column configuration shared by all column types\n */\ntype BaseColumnConfig<T, K extends keyof T> = ColumnHeaderConfig & {\n /**\n * The cleaned-up header configuration.\n */\n header?: ColumnDef<T>[\"header\"];\n /**\n * The label of the header.\n * @deprecated Use `header.label` instead.\n */\n headerLabel?: string;\n /**\n * The alignment of the header.\n * When using `type`, this is set automatically but can be overridden.\n */\n align?: \"start\" | \"center\" | \"end\";\n /**\n * Columns of a group column (for grouped columns)\n */\n columns?: ColumnDef<T>[];\n /**\n * Custom content to display when a cell value is empty (null, undefined, or empty string).\n * Overrides the default em dash. When set on both the column and the DataTable,\n * the column-level value takes precedence.\n */\n emptyCellContent?: ReactNode;\n /**\n * The content of the footer cell. An array will display multiple footer rows\n */\n footerContent?: ReactNode | ReactNode[];\n /**\n * The maximum width of the column, in pixels. Caps automatic growth when\n * the table has extra horizontal space available.\n */\n maxWidth?: number;\n /**\n * The minimum width of the column, in pixels. Used as the floor for manual\n * resize — users can drag a column down to but not below this value. Also\n * serves as the fallback auto-sizing floor when `defaultWidth` is not set.\n */\n minWidth?: number;\n /**\n * The preferred starting width of the column, in pixels. Used as the basis\n * for automatic growing/shrinking: the column renders at this width by\n * default, grows toward `maxWidth` when the table has spare horizontal\n * space, and never auto-shrinks below it — the table scrolls horizontally\n * instead.\n *\n * Manual resize via the column's resize handle is still bounded by\n * `minWidth`/`maxWidth`, so users can drag a column below `defaultWidth`\n * down to `minWidth`.\n *\n * Falls back to `minWidth` when not specified.\n */\n defaultWidth?: number;\n /**\n * The pinning location of the column\n */\n pinned?: \"left\" | \"right\";\n /**\n * Whether the column is resizable\n */\n resizable?: boolean;\n /**\n * The function to customize how the cell content is rendered.\n * When using `type`, a default renderer is provided but can be overridden.\n */\n renderCell?: (\n value: T[K],\n { row, depth }: { row?: TableRow<T>; depth?: number },\n ) => ReactNode;\n /**\n * Whether the column is sortable, or a function to customize the sorting logic\n */\n sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);\n /**\n * The column type for automatic display configuration.\n * Sets default `renderCell` (formatter) and `align` based on the data type.\n */\n type?: ColumnTypeConfig;\n};\n\n// =============================================================================\n// editConfig-based configurations\n// =============================================================================\n\n/**\n * Configuration for read-only columns (no editing)\n */\ntype ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {\n editConfig?: undefined;\n};\n\n/**\n * Configuration for text editable columns using editConfig.\n * Valid when T[K] is a string.\n */\ntype TextEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends string\n ? BaseColumnConfig<T, K> & {\n editConfig: TextEditConfig<T, K>;\n }\n : never;\n\n/**\n * Configuration for number editable columns using editConfig.\n * Valid when T[K] is a number type.\n */\ntype NumberEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends number\n ? BaseColumnConfig<T, K> & {\n editConfig: NumberEditConfig<T, K>;\n }\n : never;\n\n/**\n * Configuration for select editable columns using editConfig\n */\ntype SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig: SelectEditConfig<T, K>;\n};\n\n/**\n * Configuration for async select editable columns using editConfig\n */\ntype SelectAsyncEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<\n T,\n K\n> & {\n editConfig: SelectAsyncEditConfig<T>;\n};\n\ntype CellArrayItem =\n | object\n | string\n | number\n | boolean\n | bigint\n | symbol\n | null\n | undefined;\n\ntype CellArrayValue = readonly CellArrayItem[];\n\n/**\n * Configuration for multiselect editable columns using editConfig\n * Only valid when T[K] is an array type\n */\ntype MultiselectEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends CellArrayValue\n ? BaseColumnConfig<T, K> & {\n editConfig: MultiselectEditConfig<T, K>;\n }\n : never;\n\n/**\n * Configuration for async multiselect editable columns using editConfig.\n * Only valid when T[K] is MultiSelectMenuOption[] — full option objects,\n * not a plain primitive array like string[].\n */\ntype MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends MultiSelectMenuOption[]\n ? BaseColumnConfig<T, K> & {\n editConfig: MultiselectAsyncEditConfig<T>;\n }\n : never;\n\n/**\n * Configuration for boolean editable columns using editConfig.\n * Valid when T[K] is a boolean type.\n */\ntype BooleanEditConfigColumnConfig<T, K extends keyof T> =\n NonNullable<T[K]> extends boolean\n ? BaseColumnConfig<T, K> & {\n editConfig: BooleanEditConfig<T, K>;\n }\n : never;\n\n/**\n * Full column configuration type - union of all possible configurations.\n * TypeScript will enforce that the editConfig matches the value type constraints.\n */\ntype ColumnConfig<T, K extends keyof T> =\n | ReadOnlyColumnConfig<T, K>\n | TextEditConfigColumnConfig<T, K>\n | NumberEditConfigColumnConfig<T, K>\n | SelectEditConfigColumnConfig<T, K>\n | SelectAsyncEditConfigColumnConfig<T, K>\n | MultiselectEditConfigColumnConfig<T, K>\n | MultiselectAsyncEditConfigColumnConfig<T, K>\n | BooleanEditConfigColumnConfig<T, K>;\n\n/**\n * Factory function to create column helper function for defining Table columns.\n *\n * This helper provides type safety by enforcing that:\n * - `type` sets display defaults (formatter and alignment) for the column\n * - `editConfig` enables cell editing with proper type constraints\n * - `editConfig.mode: \"text\"` can only be used with string columns\n * - `editConfig.mode: \"boolean\"` can only be used with boolean columns\n * - `editConfig.mode: \"number\"` can only be used with number columns\n * - `editConfig.mode: \"multiselect\"` can only be used with array columns\n * - `editConfig.mode: \"select\"` options values must match the column's value type\n * - `editConfig.onChange` callback receives the correct value type for the column\n *\n * @template T - The type of the row data\n * @returns A function that creates type-safe column definitions\n *\n * @example\n * ```ts\n * type Data = { name: string; amount: number; tags: string[] };\n * const createColumn = createColumnHelper<Data>();\n *\n * // Display-only column with type defaults\n * createColumn(\"amount\", { header: { label: \"Amount\" }, type: \"currency\" });\n *\n * // Editable column with editConfig\n * createColumn(\"name\", {\n * header: { label: \"Name\" },\n * type: \"text\",\n * editConfig: { mode: \"text\", onChange: (value, rowId) => save(value, rowId) }\n * });\n *\n * // Number editing\n * createColumn(\"amount\", {\n * header: { label: \"Amount\" },\n * editConfig: {\n * mode: \"number\",\n * minValue: 0,\n * maxValue: 10000,\n * step: 0.01,\n * onChange: (value, rowId) => save(value, rowId)\n * }\n * });\n *\n * // Select editing\n * createColumn(\"status\", {\n * header: { label: \"Status\" },\n * editConfig: {\n * mode: \"select\",\n * options: [{ id: \"active\", label: \"Active\" }],\n * onChange: (option, rowId) => save(option?.id, rowId)\n * }\n * });\n *\n * // Multiselect editing with array column\n * createColumn(\"tags\", {\n * header: { label: \"Tags\" },\n * editConfig: {\n * mode: \"multiselect\",\n * options: [{ id: \"urgent\", label: \"Urgent\" }],\n * onChange: (options, rowId) => save(options.map(o => o.id), rowId)\n * }\n * });\n * ```\n */\nexport function createColumnHelper<T>() {\n return function createColumn<K extends keyof T>(\n id: K | { group: string },\n column: ColumnConfig<T, K>,\n ): ColumnDef<T> {\n if (typeof id === \"object\" && \"group\" in id) {\n // Group columns use the group string as the id\n // Cast is necessary here because group columns don't have a K in T\n return {\n id: id.group as keyof T,\n ...column,\n } as ColumnDef<T>;\n }\n\n // For regular columns, we can safely assign the id\n // Type safety is enforced via ColumnConfig<T, K> at the call site\n return { id, ...column } as ColumnDef<T>;\n };\n}\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","import { createContext } from \"react\";\nimport { CellPosition } from \"../../../../internal/types\";\n\nexport type DTFocusState = {\n /**\n * The currently focused cell or null if no cell is focused\n */\n focusedCell: CellPosition | null;\n /**\n * The last focused cell when the table was blurred or { rowIndex: 0, columnIndex: 0 } if never focused\n */\n focusRestorePoint: CellPosition;\n /**\n * Whether the focus has been disrupted by a sub component\n */\n hasFocusBeenDisrupted: boolean;\n};\n\nexport type DTFocusStateContextValue = {\n getFocusedCell: () => CellPosition | null;\n};\n\nexport type DTFocusCellAction = {\n type: \"FOCUS_CELL\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTFocusTableAction = {\n type: \"FOCUS_TABLE\";\n};\n\nexport type DTFocusMoveAction = {\n type: \"MOVE_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusJumpAction = {\n type: \"JUMP_FOCUS\";\n payload: {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n };\n};\n\nexport type DTFocusCellManuallyAction = {\n type: \"FOCUS_CELL_MANUALLY\";\n payload: {\n cellPosition: CellPosition;\n };\n};\n\nexport type DTBlurAction = {\n type: \"BLUR\";\n};\n\nexport type DTFocusSubComponentAction = {\n type: \"FOCUS_SUB_COMPONENT\";\n};\n\nexport type DTFocusSubComponentBlurAction = {\n type: \"BLUR_SUB_COMPONENT\";\n};\n\nexport type DTFocusAction =\n | DTFocusCellAction\n | DTFocusTableAction\n | DTFocusMoveAction\n | DTFocusJumpAction\n | DTBlurAction\n | DTFocusSubComponentAction\n | DTFocusSubComponentBlurAction\n | DTFocusCellManuallyAction;\n\nexport const DTFocusStateContext = createContext<DTFocusStateContextValue>({\n getFocusedCell: () => null,\n});\nexport const DTFocusDispatchContext = createContext<\n React.Dispatch<DTFocusAction>\n>(() => {});\n","import { useCallback, useContext } from \"react\";\nimport { DTFocusDispatchContext } from \"./DTFocusContext\";\nimport { CellPosition } from \"../../../../internal/types\";\n\nexport function useDTFocusDispatchContext() {\n const dispatch = useContext(DTFocusDispatchContext);\n\n const focusTableGenerally = useCallback(() => {\n dispatch({\n type: \"FOCUS_TABLE\",\n });\n }, [dispatch]);\n\n const moveFocusToCell = useCallback(\n (cellPosition: CellPosition) => {\n dispatch({\n type: \"FOCUS_CELL\",\n payload: { cellPosition },\n });\n },\n [dispatch],\n );\n\n /**\n * Moves the focus to the next valid cell in the given direction\n */\n const moveFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"MOVE_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n /**\n * Moves the focus to the first/last valid cell in the given direction\n */\n const jumpFocus = useCallback(\n (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n dispatch({\n type: \"JUMP_FOCUS\",\n payload: { direction },\n });\n },\n [dispatch],\n );\n\n const blur = useCallback(() => {\n dispatch({\n type: \"BLUR\",\n });\n }, [dispatch]);\n\n const focusSubComponent = useCallback(() => {\n dispatch({ type: \"FOCUS_SUB_COMPONENT\" });\n }, [dispatch]);\n\n const blurSubComponent = useCallback(() => {\n dispatch({ type: \"BLUR_SUB_COMPONENT\" });\n }, [dispatch]);\n\n return {\n focusTableGenerally,\n moveFocusToCell,\n moveFocus,\n jumpFocus,\n blur,\n focusSubComponent,\n blurSubComponent,\n dispatch,\n };\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { useDTFocusDispatchContext } from \"../DataTable/internal/context/focus/useDTFocusDispatchContext\";\n\nimport styles from \"./TableBase.module.scss\";\n\n/**\n * Props for the SimpleTableBase component\n * @extends ComponentPropsWithoutRef<\"table\">\n */\nexport type SimpleTableBaseProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * Props for the DataTableBase component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"aria-colcount\" | \"aria-rowcount\">\n */\nexport type DataTableBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"aria-colcount\" | \"aria-rowcount\"\n> & {\n /**\n * The number of columns in the table\n */\n colCount: number;\n /**\n * The number of rows in the table\n */\n rowCount: number;\n /**\n * Whether the table has expandable rows\n */\n hasSubRows?: boolean;\n};\n\n/**\n * Props for the TableBase component\n * @extends SimpleTableBaseProps\n * @extends DataTableBaseProps\n */\nexport type TableBaseProps =\n | ({\n type: \"simple\";\n } & SimpleTableBaseProps)\n | ({\n type: \"data-table\";\n } & DataTableBaseProps);\n\n/**\n * Base table component for simple presentational tables\n * @param props - The props for the SimpleTableBase component\n * @param props.children - The children of the SimpleTableBase component\n * @param props.className - The class name of the SimpleTableBase component\n * @param props.ref - The ref of the SimpleTableBase component\n */\nconst SimpleTableBase = ({\n children,\n className,\n ...rest\n}: SimpleTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"table-base\"]);\n return (\n <table\n data-anv=\"simple-table-base\"\n {...rest}\n className={tableBaseClassNames}\n >\n {children}\n </table>\n );\n};\n\n/**\n * Base table component for complex data tables\n * @param props - The props for the DataTableBase component\n * @param props.children - The children of the DataTableBase component\n * @param props.className - The class name of the DataTableBase component\n * @param props.ref - The ref of the DataTableBase component\n */\nconst DataTableBase = ({\n children,\n className,\n colCount,\n rowCount,\n hasSubRows,\n ...rest\n}: DataTableBaseProps) => {\n const tableBaseClassNames = cx(className, styles[\"data-table-base\"]);\n const { focusTableGenerally, blur, moveFocusToCell } =\n useDTFocusDispatchContext();\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node)) {\n blur();\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n // Focus landed on the table root itself — focus the restore point.\n focusTableGenerally();\n return;\n }\n // Focus landed on a child. Walk up to the nearest element carrying a\n // data-cell-pos (handles clicks on interactive cell content like\n // checkboxes or buttons nested inside a cell) and update the restore\n // point so roving tabindex tracks the newly focused cell.\n const targetEl = event.target as HTMLElement;\n const cellEl = targetEl.closest<HTMLElement>(\"[data-cell-pos]\");\n const cellPosAttr = cellEl?.getAttribute(\"data-cell-pos\");\n if (cellPosAttr) {\n const [rowIndex, columnIndex] = cellPosAttr.split(\",\").map(Number);\n if (!Number.isNaN(rowIndex) && !Number.isNaN(columnIndex)) {\n moveFocusToCell({ rowIndex, columnIndex });\n }\n }\n };\n\n return (\n <div\n data-anv=\"data-table-base\"\n {...rest}\n className={tableBaseClassNames}\n aria-colcount={colCount}\n aria-rowcount={rowCount}\n role={hasSubRows ? \"treegrid\" : \"grid\"}\n tabIndex={0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Styled table component for simple presentational or complex data tables\n * @param props - The props for the TableBase component\n * @param props.type - The type of the TableBase component\n * @param props.children - The children of the TableBase component\n * @param props.className - The class name of the TableBase component\n * @param props.ref - The ref of the TableBase component\n */\nexport const TableBase = ({ type, ...rest }: TableBaseProps) => {\n if (type === \"simple\") {\n return <SimpleTableBase {...rest} />;\n }\n\n if (\"rowCount\" in rest && \"colCount\" in rest) {\n return (\n <DataTableBase\n {...rest}\n rowCount={rest.rowCount}\n colCount={rest.colCount}\n />\n );\n }\n};\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableBody.module.scss\";\n\n/**\n * Props for the TableBody component\n * @extends ComponentPropsWithoutRef<\"tbody\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableBodyProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tbody\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table body component for simple presentational or complex data tables\n * @param props - The props for the TableBody component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableBody component\n * @param props.ref - The ref of the TableBody component\n */\nexport function TableBody({ type, children, ...rest }: TableBodyProps) {\n const classes = cx(styles[\"table-body\"], rest.className);\n const Element = type === \"simple\" ? \"tbody\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { Column } from \"@tanstack/react-table\";\nimport styles from \"../base/cells/TableCells.module.scss\";\n\n/**\n * Get the common classes for adding shadow styles to pinned columns\n */\nexport const getCommonPinningClasses = <T>(\n column: Column<T>,\n): string | undefined => {\n const isPinned = column.getIsPinned();\n const isLastLeftPinnedColumn =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n if (isLastLeftPinnedColumn) {\n return styles[\"last-pinned-left-column\"];\n }\n if (isFirstRightPinnedColumn) {\n return styles[\"first-pinned-right-column\"];\n }\n};\n","import { Icon } from \"../../../../../../components\";\nimport EditIcon from \"../../../../../../../public/assets/icons/material/round/edit.svg\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\n\n/**\n * Edit icon for editable cells in data tables\n * @returns The edit icon\n */\nexport const DataTableEditableCellEditIcon = () => {\n return (\n <span className={styles[\"data-table-body-cell-edit-icon-container\"]}>\n <Icon\n svg={EditIcon}\n size=\"small\"\n color=\"subtle\"\n aria-label=\"Edit cell value\"\n />\n </span>\n );\n};\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableBodyCellProps = ComponentPropsWithoutRef<\"td\"> &\n CommonTableCellProps;\n\nexport type DataTableBodyCellProps = ComponentPropsWithoutRef<\"div\"> &\n CommonTableCellProps;\n\n/**\n * The props for the TableBodyCell component\n */\nexport type TableBodyCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableBodyCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableBodyCellProps);\n\n/**\n * The styled table body cell component\n * @param props - The props for the TableBodyCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableBodyCell component\n * @param props.rest - The rest of the props\n */\nexport const TableBodyCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableBodyCellProps\n>(({ type, children, className, isExpandCell, isSelectCell, ...rest }, ref) => {\n const classes = cx(styles[\"table-body-cell\"], className, {\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-body-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableBodyCell.displayName = \"TableBodyCell\";\n","import { CellPosition } from \"../../../internal/types\";\n\nexport function formatCellPositionString(cellPosition: CellPosition): string {\n return `${cellPosition.rowIndex},${cellPosition.columnIndex}`;\n}\n\n/**\n * Checks if two cell positions are equal.\n */\nexport function areCellPositionsEqual(\n pos1: CellPosition | null | undefined,\n pos2: CellPosition | null | undefined,\n): boolean {\n if (!pos1 || !pos2) return false;\n return (\n pos1.rowIndex === pos2.rowIndex && pos1.columnIndex === pos2.columnIndex\n );\n}\n","import { Cell } from \"@tanstack/react-table\";\nimport { ColumnDef } from \"../../../types\";\n\n/**\n * Extracts the column ID from a cell, with proper type narrowing.\n * Uses the stored ColumnDef from meta if available, otherwise falls back to column.id.\n *\n * @param cell - The TanStack table cell instance\n * @returns The column ID as a keyof T\n */\nexport function getColumnId<T>(cell: Cell<T, unknown>): keyof T {\n // Access the stored ColumnDef from meta\n const columnDef = cell.column.columnDef.meta?.columnDef as\n | ColumnDef<T>\n | undefined;\n if (columnDef?.id) {\n return columnDef.id;\n }\n // Fallback to column.id (may be string, not keyof T)\n return cell.column.id as keyof T;\n}\n\n/**\n * Gets the cell value with proper type narrowing based on column ID.\n * Uses the column ID to narrow the return type from `unknown` to `T[K]`.\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The cell value, typed as T[K]\n */\nexport function getCellValue<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): T[K] {\n const value = cell.getValue();\n // Runtime validation could be added here if needed\n // Note: This assertion is necessary because TanStack Table's Cell type\n // doesn't preserve the specific value type T[K] at the table instance level\n return value as T[K];\n}\n\n/**\n * Gets the onChange callback with proper typing based on column ID.\n * Returns a callback that accepts T[K] instead of the union type T[keyof T].\n *\n * @param cell - The TanStack table cell instance\n * @param _columnId - The column ID to use for type narrowing (unused at runtime, only for TypeScript)\n * @returns The onChange callback, typed to accept T[K], or undefined if not configured\n */\nexport function getCellOnChange<T, K extends keyof T>(\n cell: Cell<T, unknown>,\n _columnId: K,\n): ((value: T[K], rowId: string) => void) | undefined {\n const meta = cell.column.columnDef.meta;\n const onChange = (meta?.editConfig as { onChange?: unknown } | undefined)\n ?.onChange;\n // Note: This assertion is necessary because the onChange type is wider than T[K]\n return onChange as ((value: T[K], rowId: string) => void) | undefined;\n}\n\n/**\n * Logs a warning when a cell value type doesn't match the expected type for its editMode.\n *\n * @param params - The warning parameters\n * @param params.columnId - The column ID for the warning message\n * @param params.editMode - The editMode of the column\n * @param params.expectedType - The expected type description\n * @param params.receivedType - The actual type received\n */\nexport function logWarningForInvalidCellValueType({\n columnId,\n editMode,\n expectedType,\n receivedType,\n}: {\n columnId: string;\n editMode: string;\n expectedType: string;\n receivedType: string;\n}): void {\n console.warn(\n `[DataTable] Column \"${columnId}\" with editMode \"${editMode}\" expects ${expectedType}, received ${receivedType}.`,\n );\n}\n","import { CSSProperties, useMemo } from \"react\";\nimport { Column } from \"@tanstack/react-table\";\n\n/**\n * Get the common styles for sticky positioning of pinned columns\n * Width is handled by CSS Grid, so only positioning is needed\n */\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n zIndex: isPinned ? 1 : 0,\n };\n};\n\nconst EMPTY_PINNING_STYLES: CSSProperties = Object.freeze({\n left: undefined,\n right: undefined,\n position: \"relative\",\n zIndex: 0,\n});\n\nexport const useCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned();\n const left = column.getStart(\"left\");\n const right = column.getAfter(\"right\");\n\n return useMemo(() => {\n if (!isPinned) return EMPTY_PINNING_STYLES;\n return {\n left: isPinned === \"left\" ? `${left}px` : undefined,\n right: isPinned === \"right\" ? `${right}px` : undefined,\n position: \"sticky\",\n zIndex: 1,\n };\n }, [left, right, isPinned]);\n};\n","/**\n * Internal column ID for the primary row action column.\n * This column typically contains expand buttons, but may also contain\n * checkboxes for nested rows when selection is enabled.\n */\nexport const INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID =\n \"a2-table-internal-row-action-primary\";\n\n/**\n * Internal column ID for the secondary row action column.\n * This column contains checkboxes for row selection when enabled.\n * For nested rows, this column renders nothing (selection is handled\n * in the primary action column instead).\n */\nexport const INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID =\n \"a2-table-internal-row-action-secondary\";\n","import { useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport baseTableCellStyles from \"../../../base/cells/TableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { CellPosition } from \"../../../internal/types\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\nimport { TableRow } from \"../../../types\";\n\n/**\n * Props for the DataTableBodyImmutableCell component\n */\nexport type DataTableBodyImmutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Renders an immutable (non-editable) body cell in a DataTable. This component handles keyboard\n * navigation for focus management and row expansion/selection, but does not support cell editing.\n *\n * @param props - The props for the DataTableBodyImmutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @returns The rendered immutable cell component\n */\nexport function DataTableBodyImmutableCell<T>(\n props: DataTableBodyImmutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const cellRef = useRef<HTMLTableCellElement>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n // Derive cell action from column type and row state\n const columnId = column.id;\n const isPrimaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSecondaryActionColumn =\n columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isNestedRow = !!cell.row.getParentRow()?.getCanExpand();\n\n const isExpandCell = isPrimaryActionColumn && rowCanExpand;\n const isSelectCell =\n (isPrimaryActionColumn && isNestedRow && cell.row.getCanSelect()) ||\n (isSecondaryActionColumn && !isNestedRow);\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n [baseTableCellStyles[\"table-cell-internal-expand\"]]: isExpandCell,\n [baseTableCellStyles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \" \": {\n if (isExpandCell || isSelectCell) {\n event.preventDefault();\n if (isExpandCell) {\n toggleRowExpanded();\n }\n if (isSelectCell) {\n cell.row.toggleSelected();\n }\n return;\n }\n return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n isExpandCell,\n isSelectCell,\n cell,\n rowCanExpand,\n rowIsExpanded,\n toggleRowExpanded,\n ],\n );\n\n return (\n <TableBodyCell\n type=\"data-table\"\n {...rest}\n className={classes}\n ref={cellRef}\n tabIndex={-1}\n style={commonPinningStyles}\n onKeyDown={handleKeyDown}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </TableBodyCell>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { EditableCellImperativeHandle, BaseEditableCellProps } from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\n\nexport type DataTableEditableTextCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable text cell in a DataTable. This component provides a text input that appears\n * when the cell is activated, allowing users to edit the cell value. Supports keyboard navigation\n * and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableTextCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable text cell component\n */\nfunction DataTableEditableTextCellInner<T>(\n props: DataTableEditableTextCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const inputRef = useRef<HTMLInputElement>(null);\n const cellRef = useRef<HTMLTableCellElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n if (cellValue === undefined || cellValue === null) {\n return [\"\", true];\n }\n\n if (typeof cellValue === \"string\") {\n return [cellValue, true];\n }\n\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"text\",\n expectedType: \"string\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n return [\"\", false];\n }, [cellValue, columnId]);\n\n const [draftValue, setDraftValue] = useState(initialValue);\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // This assertion is necessary because draftValue is string but onChange expects T[K]\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setIsEditing(true);\n }, [setIsEditing]);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setDraftValue(e.target.value);\n },\n [setDraftValue],\n );\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n // Skip for interactions within the cell (e.g. clicking on the input)\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n // Skip for interactions within the cell (e.g. clicking on the input)\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n // Exclude cellProps to avoid passing it to the DOM\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {isEditing ? (\n <>\n <input\n ref={inputRef}\n type=\"text\"\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n value={draftValue}\n className={styles[\"data-table-body-cell-input\"]}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\nexport const DataTableEditableTextCell = Object.assign(\n forwardRef(DataTableEditableTextCellInner) as <T>(\n props: DataTableEditableTextCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableTextCell\" },\n);\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport dataTableCellStyles from \"../cells/DataTableCells.module.scss\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { EditableCellImperativeHandle, BaseEditableCellProps } from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport {\n getColumnId,\n getCellValue,\n getCellOnChange,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useNumberField } from \"../../../../../../internal/hooks/useNumberField/useNumberField\";\nimport { useMergeRefs } from \"../../../../../../hooks/useMergeRefs\";\n\nexport type DataTableEditableNumberCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable number cell in a DataTable. This component provides a number input\n * that appears when the cell is activated, leveraging the useNumberField hook for formatting,\n * validation, and keyboard navigation (arrow keys for increment/decrement).\n *\n * Features:\n * - Uses useNumberField hook for precise decimal arithmetic and input formatting\n * - Supports configurable min/max values, step size, and fraction digits\n * - Keyboard navigation: Enter/F2 to commit, Escape to cancel\n * - Input masking with thousand separators and decimal precision\n *\n * @param props - The props for the DataTableEditableNumberCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable number cell component\n */\nfunction DataTableEditableNumberCellInner<T>(\n props: DataTableEditableNumberCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown } = cellProps;\n const cellRef = useRef<HTMLTableCellElement>(null);\n const localInputRef = useRef<HTMLInputElement>(null);\n const rowId = cell.row.id;\n const [isEditing, setIsEditing] = useState(false);\n\n // Use type-safe helpers to get column ID and value\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const [initialValue, isValidValueType] = useMemo(() => {\n let value: number | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"number\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"number\",\n expectedType: \"number\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const numberEditOptions = useMemo(() => {\n if (editConfig && editConfig.mode === \"number\") {\n const { mode: _, onChange: __, ...options } = editConfig;\n return options;\n }\n return {};\n }, [editConfig]);\n\n const [draftValue, setDraftValue] = useState<number | null>(initialValue);\n\n const { inputRef: numberFieldInputRef, inputProps } = useNumberField({\n value: draftValue,\n onChange: setDraftValue,\n ...numberEditOptions,\n });\n\n const combinedInputRef = useMergeRefs([localInputRef, numberFieldInputRef]);\n\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n\n const instructionsId = useId();\n const headerLabel =\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? String(columnId);\n const inputAriaLabel = `${headerLabel}, row ${cellPosition.rowIndex + 1}`;\n\n const skipCommitOnBlur = useRef(false);\n\n const onChange = getCellOnChange(cell, columnId);\n\n const commitValue = useCallback(() => {\n if (draftValue !== initialValue) {\n // The onChange expects T[K] which should be number for number columns\n onChange?.(draftValue as T[typeof columnId], rowId);\n }\n setIsEditing(false);\n }, [rowId, draftValue, onChange, initialValue]);\n\n const resetValue = useCallback(() => {\n setDraftValue(initialValue);\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n setIsEditing(false);\n }, [initialValue]);\n\n const beginEditing = useCallback(() => {\n setDraftValue(initialValue);\n setIsEditing(true);\n }, [initialValue]);\n\n useImperativeHandle(ref, () => ({\n invoke: beginEditing,\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n skipCommitOnBlur.current = true;\n cellRef.current?.focus();\n commitValue();\n return;\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n resetValue();\n return;\n }\n },\n [commitValue, resetValue],\n );\n\n const handleInputBlur = useCallback(() => {\n if (skipCommitOnBlur.current) {\n skipCommitOnBlur.current = false;\n return;\n }\n commitValue();\n }, [commitValue]);\n\n const classes = cx(\n styles[\"data-table-body-cell-editable\"],\n cellProps.className,\n {\n [dataTableCellStyles[\"data-table-body-cell-editing\"]]: isEditing,\n },\n );\n\n const handleCellKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isEditing) {\n return;\n }\n onCellKeyDown?.(event);\n },\n [onCellKeyDown, isEditing],\n );\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [setTabIndex],\n );\n\n const handleCellBlur = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (cellRef.current?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n },\n [setTabIndex, cellRef],\n );\n\n const handleCellMouseDown = useCallback(\n (e: React.MouseEvent<HTMLTableCellElement>) => {\n e.preventDefault();\n e.stopPropagation();\n beginEditing();\n moveFocusToCell(cellPosition);\n },\n [beginEditing, cellPosition, moveFocusToCell],\n );\n\n useEffect(() => {\n if (isEditing) {\n localInputRef.current?.focus();\n }\n }, [isEditing]);\n\n if (!isValidValueType) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <TableBodyCell\n ref={cellRef}\n type=\"data-table\"\n className={classes}\n style={cellProps.style}\n onMouseDown={handleCellMouseDown}\n onKeyDown={handleCellKeyDown}\n tabIndex={tabIndex}\n onFocus={handleCellFocus}\n onBlur={handleCellBlur}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {isEditing ? (\n <>\n <input\n ref={combinedInputRef}\n {...inputProps}\n name={`${cell.column.id}-row-${cellPosition.rowIndex}`}\n aria-label={inputAriaLabel}\n aria-describedby={instructionsId}\n className={styles[\"data-table-body-cell-input\"]}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n />\n </>\n ) : (\n <>\n {children}\n {!isEditing && <DataTableEditableCellEditIcon />}\n </>\n )}\n <SrOnly id={instructionsId}>\n {isEditing\n ? \"Press Enter or F2 to save cell value.\"\n : \"Press Enter or F2 to edit cell value. Press Escape to cancel.\"}\n </SrOnly>\n </TableBodyCell>\n );\n}\n\nexport const DataTableEditableNumberCell = Object.assign(\n forwardRef(DataTableEditableNumberCellInner) as <T>(\n props: DataTableEditableNumberCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableNumberCell\" },\n);\n","import { useCallback, useRef, useState, useImperativeHandle } from \"react\";\nimport { CellPosition } from \"../../../internal/types\";\nimport { EditableCellImperativeHandle, EditableCellCellProps } from \"./types\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\n\ntype UseEditableMenuCellOptions = {\n cellPosition: CellPosition;\n onCellKeyDown: EditableCellCellProps[\"onKeyDown\"];\n ref: React.Ref<EditableCellImperativeHandle>;\n};\n\n/**\n * Shared hook for select/multiselect editable DataTable cells that use a menu-based\n * editing UX (SelectMenu, MultiSelectMenu, and their async variants).\n *\n * Encapsulates the common state, refs, imperative handle, and keyboard/focus/mouse handlers\n * that are identical across all four menu-based cell components.\n *\n * @param options.cellPosition - The position of the cell in the table grid\n * @param options.onCellKeyDown - The cell's keyDown handler from cellProps, forwarded when the menu is closed\n * @param options.ref - Ref for the imperative handle (invoke/focus)\n * @returns Shared state, refs, and event handlers\n */\nexport function useEditableMenuCell({\n cellPosition,\n onCellKeyDown,\n ref,\n}: UseEditableMenuCellOptions) {\n const [tabIndex, setTabIndex] = useState(-1);\n const { moveFocusToCell } = useDTFocusDispatchContext();\n const cellRef = useRef<HTMLTableCellElement>(null);\n const triggerClickRef = useRef<(() => void) | null>(null);\n\n useImperativeHandle(ref, () => ({\n invoke: () => {\n triggerClickRef.current?.();\n },\n focus: () => {\n cellRef.current?.focus();\n setTabIndex(0);\n },\n }));\n\n const handleCellKeyDown = useCallback(\n (\n event: React.KeyboardEvent<HTMLElement>,\n menuKeyDown:\n | ((event: React.KeyboardEvent<HTMLButtonElement>) => void)\n | undefined,\n isOpen: boolean,\n ) => {\n if (isOpen) {\n menuKeyDown?.(event as React.KeyboardEvent<HTMLButtonElement>);\n return;\n }\n onCellKeyDown?.(event as React.KeyboardEvent<HTMLDivElement>);\n },\n [onCellKeyDown],\n );\n\n // F2 while menu is open: close it and restore focus to the cell (explicit close)\n const handleMenuKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === \"F2\") {\n e.preventDefault();\n triggerClickRef.current?.();\n }\n }, []);\n\n // Tab/click-outside: menu closed implicitly, reset tabIndex since handleCellBlur won't re-fire\n const handleImplicitClose = useCallback(() => {\n setTabIndex(-1);\n }, []);\n\n const handleCellMouseDown = useCallback(\n (triggerOnClick: () => void) => () => {\n moveFocusToCell(cellPosition);\n triggerOnClick();\n },\n [cellPosition, moveFocusToCell],\n );\n\n const handleCellBlur = useCallback((e: React.FocusEvent<HTMLElement>) => {\n const popoverId = (e.currentTarget as HTMLElement).getAttribute(\n \"aria-controls\",\n );\n const popoverEl = popoverId ? document.getElementById(popoverId) : null;\n if (popoverEl?.contains(e.relatedTarget as Node)) {\n return;\n }\n setTabIndex(-1);\n }, []);\n\n const handleCellFocus = useCallback(\n (event: React.FocusEvent<HTMLTableCellElement>) => {\n if (event.target !== cellRef.current) {\n return;\n }\n event.preventDefault();\n setTabIndex(0);\n },\n [],\n );\n\n return {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n };\n}\n","import { forwardRef, Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../beta/components/SelectMenu/SelectMenuSync\";\nimport { SelectMenuOption } from \"../../../../../../beta/components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable select cell in a DataTable. This component provides a SelectMenu popover\n * that appears when the cell is activated, allowing users to select a single value from a list of\n * options. Supports keyboard navigation and commit/cancel operations.\n *\n * @param props - The props for the DataTableEditableSelectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable select cell component\n */\nfunction DataTableEditableSelectCellInner<T>(\n props: DataTableEditableSelectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const selectEditConfig =\n editConfig?.mode === \"select\" ? editConfig : undefined;\n\n const options: SelectMenuOption[] = useMemo(\n () => selectEditConfig?.options ?? [],\n [selectEditConfig],\n );\n\n const onChange = selectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...selectMenuPassthroughProps\n } = selectEditConfig ?? {};\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // Find selected option by matching cell value to option id\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n return options.find((o) => String(o.id) === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n const hasEditableConfig = !!selectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...selectMenuPassthroughProps}\n />\n );\n}\n\nexport const DataTableEditableSelectCell = Object.assign(\n forwardRef(DataTableEditableSelectCellInner) as <T>(\n props: DataTableEditableSelectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectCell\" },\n);\n","import { forwardRef, Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenu } from \"../../../../../../beta/components/SelectMenu/SelectMenu\";\nimport { SelectMenuOption } from \"../../../../../../beta/components/SelectMenu/types\";\nimport {\n SelectAsyncCellEagerLoader,\n SelectAsyncCellPageLoader,\n SelectAsyncCellOffsetLoader,\n SelectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableSelectAsyncCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an async editable select cell in a DataTable. This component provides a SelectMenu\n * popover that loads options asynchronously via a `loadOptions` function. The loader receives\n * a `context` object containing the current row data, enabling per-row option loading.\n *\n * Features:\n * - Supports all four SelectMenu lazy variants: eager, page, offset, and group\n * - Passes row context to `loadOptions` for per-row async option loading\n * - Auto-disables caching by default to prevent cross-row cache pollution\n * - Supports full SelectMenu passthrough props (debounceMs, virtualize, etc.)\n * - Keyboard navigation consistent with other editable cell types\n *\n * @param props - The props for the DataTableEditableSelectAsyncCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered async editable select cell component\n */\nfunction DataTableEditableSelectAsyncCellInner<T>(\n props: DataTableEditableSelectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"select-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (Array.isArray(cellValue)) return false;\n return true;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Curry context out of the consumer's loader to produce a SelectMenu-compatible loader\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as SelectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as SelectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as SelectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as SelectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n // Auto-disable cache unless consumer explicitly provided one\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // Find selected option by matching cell value to option id — best-effort for display\n const selectedOption = useMemo(() => {\n if (cellValue === undefined || cellValue === null) return null;\n if (typeof cellValue === \"object\") return null;\n return { id: cellValue as string | number, label: String(cellValue) };\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenu\n // Cast required: SelectMenu uses a discriminated union on `lazy`, and the curried\n // `loadOptions` cannot satisfy a single overload after destructuring from the editConfig union.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOption as SelectMenuOption | null}\n onSelectedOptionChange={(option) => {\n onChange?.(option, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\nexport const DataTableEditableSelectAsyncCell = Object.assign(\n forwardRef(DataTableEditableSelectAsyncCellInner) as <T>(\n props: DataTableEditableSelectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableSelectAsyncCell\" },\n);\n","import { forwardRef, Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenuSync } from \"../../../../../../beta/components/MultiSelectMenu/MultiSelectMenuSync\";\nimport { MultiSelectMenuOption } from \"../../../../../../beta/components/MultiSelectMenu/types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable multiselect cell in a DataTable. This component provides a\n * MultiSelectMenu popover with search that appears when the cell is activated, allowing\n * users to select multiple values from a list of options. Supports keyboard navigation\n * and live selection.\n *\n * @param props - The props for the DataTableEditableMultiselectCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable multiselect cell component\n */\nexport function DataTableEditableMultiselectCellInner<T>(\n props: DataTableEditableMultiselectCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"multiselect\",\n expectedType: \"array of primitive values\",\n receivedType: typeof cellValue,\n });\n return false;\n }, [cellValue, columnId]);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const multiselectEditConfig =\n editConfig?.mode === \"multiselect\" ? editConfig : undefined;\n\n const options: MultiSelectMenuOption[] = useMemo(\n () => multiselectEditConfig?.options ?? [],\n [multiselectEditConfig],\n );\n\n const onChange = multiselectEditConfig?.onChange;\n\n const {\n mode: _mode,\n options: _options,\n onChange: _onChange,\n ...multiSelectMenuPassthroughProps\n } = multiselectEditConfig ?? {};\n\n const rowId = cell.row.id;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // Determine currently selected options from cell value (array of ids)\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n const valueStrings = cellValue.map((v) => String(v));\n return options.filter((o) => valueStrings.includes(String(o.id)));\n }, [options, cellValue]);\n\n const hasEditableConfig = !!multiselectEditConfig;\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n {...multiSelectMenuPassthroughProps}\n />\n );\n}\n\nexport const DataTableEditableMultiselectCell = Object.assign(\n forwardRef(DataTableEditableMultiselectCellInner) as <T>(\n props: DataTableEditableMultiselectCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectCell\" },\n);\n","import { forwardRef, Ref, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { MultiSelectMenu } from \"../../../../../../beta/components/MultiSelectMenu/MultiSelectMenu\";\nimport { MultiSelectMenuOption } from \"../../../../../../beta/components/MultiSelectMenu/types\";\nimport {\n MultiselectAsyncCellEagerLoader,\n MultiselectAsyncCellPageLoader,\n MultiselectAsyncCellOffsetLoader,\n MultiselectAsyncCellGroupLoader,\n} from \"../../../types\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport { getColumnId, getCellValue } from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableMultiselectAsyncCellProps<T> =\n BaseEditableCellProps<T>;\n\n/**\n * Renders an async editable multiselect cell in a DataTable. This component provides a\n * MultiSelectMenu popover that loads options asynchronously via a `loadOptions` function.\n * The loader receives a `context` object containing the current row data, enabling per-row\n * option loading.\n *\n * Features:\n * - Supports all four MultiSelectMenu lazy variants: eager, page, offset, and group\n * - Passes row context to `loadOptions` for per-row async option loading\n * - Auto-disables caching by default to prevent cross-row cache pollution\n * - Supports full MultiSelectMenu passthrough props (debounceMs, virtualize, selectAll, etc.)\n * - Live selection: `onChange` fires on each toggle\n * - Keyboard navigation consistent with other editable cell types\n *\n * **Value contract**: Unlike `mode: \"multiselect\"` (which stores ID arrays), the cell value\n * must be `MultiSelectMenuOption[]` — full option objects. The consumer stores them wholesale\n * from the `onChange` callback.\n *\n * @param props - The props for the DataTableEditableMultiselectAsyncCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered async editable multiselect cell component\n */\nexport function DataTableEditableMultiselectAsyncCellInner<T>(\n props: DataTableEditableMultiselectAsyncCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const editConfig = cell.column.columnDef.meta?.editConfig;\n const asyncEditConfig =\n editConfig?.mode === \"multiselect-async\" ? editConfig : undefined;\n\n const isValidValueType = useMemo(() => {\n if (cellValue === null || cellValue === undefined) return true;\n if (Array.isArray(cellValue)) return true;\n return false;\n }, [cellValue]);\n\n const rowId = cell.row.id;\n const row = cell.row.original as T;\n\n const context = useMemo(() => ({ row, rowId }), [row, rowId]);\n\n const {\n mode: _mode,\n lazy,\n lazyOptions,\n loadOptions: cellLoader,\n onChange,\n cache: cacheProp,\n ...passthroughProps\n } = asyncEditConfig ?? {};\n\n // Curry context out of the consumer's loader to produce a MultiSelectMenu-compatible loader\n const loadOptions = useCallback(\n (searchValue: string, ...rest: unknown[]) => {\n if (!cellLoader) return [];\n if (lazy === \"page\") {\n const [pageNumber, pageSize] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellPageLoader<T>)(\n searchValue,\n pageNumber,\n pageSize,\n context,\n );\n }\n if (lazy === \"offset\") {\n const [offset, limit] = rest as [number, number];\n return (cellLoader as MultiselectAsyncCellOffsetLoader<T>)(\n searchValue,\n offset,\n limit,\n context,\n );\n }\n if (lazy === \"group\") {\n const [previousGroupKey] = rest as [string | number | null];\n return (cellLoader as MultiselectAsyncCellGroupLoader<T>)(\n searchValue,\n previousGroupKey,\n context,\n );\n }\n return (cellLoader as MultiselectAsyncCellEagerLoader<T>)(\n searchValue,\n context,\n );\n },\n [cellLoader, context, lazy],\n );\n\n // Auto-disable cache unless consumer explicitly provided one\n const cache = cacheProp ?? { enabled: false };\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // Value contract: cell value must be MultiSelectMenuOption[] (full objects)\n const selectedOptions = useMemo(() => {\n if (!Array.isArray(cellValue)) return [];\n return cellValue as MultiSelectMenuOption[];\n }, [cellValue]);\n\n if (!isValidValueType || !asyncEditConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <MultiSelectMenu\n // Cast required: MultiSelectMenu uses a discriminated union on `lazy`, and the curried\n // `loadOptions` cannot satisfy a single overload after destructuring from the editConfig union.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazy={lazy as any}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions={loadOptions as any}\n lazyOptions={lazyOptions}\n cache={cache}\n {...passthroughProps}\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select cell values. Press Escape or F2 to close.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n value={selectedOptions}\n onSelectedOptionsChange={(selected) => {\n onChange?.(selected, rowId);\n }}\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n />\n );\n}\n\nexport const DataTableEditableMultiselectAsyncCell = Object.assign(\n forwardRef(DataTableEditableMultiselectAsyncCellInner) as <T>(\n props: DataTableEditableMultiselectAsyncCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableMultiselectAsyncCell\" },\n);\n","import { forwardRef, Ref, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectMenuSync } from \"../../../../../../beta/components/SelectMenu/SelectMenuSync\";\nimport { SelectMenuOption } from \"../../../../../../beta/components/SelectMenu/types\";\n\nimport { SrOnly } from \"../../../../../../components/SrOnly\";\n\nimport { DataTableEditableCellEditIcon } from \"./DataTableEditableCellEditIcon\";\nimport { TableBodyCell } from \"../../../base/cells/TableBodyCell\";\n\nimport styles from \"./DataTableEditableCells.module.scss\";\nimport { EditableCellImperativeHandle } from \"./types\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { mergeRefs } from \"../../../../../../hooks/useMergeRefs/useMergeRefs\";\nimport { BaseEditableCellProps } from \"./types\";\nimport {\n getColumnId,\n getCellValue,\n logWarningForInvalidCellValueType,\n} from \"../util/cellTypeHelpers\";\nimport { DataTableBodyImmutableCell } from \"../cells/DataTableBodyImmutableCell\";\nimport type { BooleanFormatterOptions } from \"../../../formatters\";\nimport { useEditableMenuCell } from \"./useEditableMenuCell\";\n\nexport type DataTableEditableBooleanCellProps<T> = BaseEditableCellProps<T>;\n\n/**\n * Renders an editable boolean cell in a DataTable. This component provides a dropdown menu\n * with predefined true/false options (and an optional null option) that appears when the cell\n * is activated. Labels for each option are configurable via editConfig.\n *\n * @param props - The props for the DataTableEditableBooleanCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellProps - Props for styling and event handling of the cell container\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to display when not editing\n * @param ref - Ref to the imperative handle for programmatic control\n * @returns The rendered editable boolean cell component\n */\nfunction DataTableEditableBooleanCellInner<T>(\n props: DataTableEditableBooleanCellProps<T>,\n ref: React.Ref<EditableCellImperativeHandle>,\n) {\n const { cell, cellProps, cellPosition, children } = props;\n const { onKeyDown: onCellKeyDown, className, ...restCellProps } = cellProps;\n\n const columnId = getColumnId(cell);\n const cellValue = getCellValue(cell, columnId);\n\n const meta = cell.column.columnDef.meta;\n const editConfig = meta?.editConfig;\n const booleanEditConfig =\n editConfig?.mode === \"boolean\" ? editConfig : undefined;\n\n const [, isValidValueType] = useMemo(() => {\n let value: boolean | null;\n let isValid = true;\n\n if (cellValue === undefined || cellValue === null) {\n value = null;\n isValid = true;\n return [value, isValid];\n }\n\n if (typeof cellValue === \"boolean\") {\n value = cellValue;\n } else {\n value = null;\n isValid = false;\n }\n\n if (!isValid) {\n logWarningForInvalidCellValueType({\n columnId: String(columnId),\n editMode: \"boolean\",\n expectedType: \"boolean\",\n receivedType: Array.isArray(cellValue) ? \"array\" : typeof cellValue,\n });\n }\n return [value, isValid];\n }, [cellValue, columnId]);\n\n const options: SelectMenuOption[] = useMemo(() => {\n const config =\n booleanEditConfig?.mode === \"boolean\"\n ? booleanEditConfig\n : {\n trueLabel: undefined,\n falseLabel: undefined,\n allowNull: false,\n nullLabel: undefined,\n };\n\n // Fall back to type.options labels when editConfig doesn't specify them\n const typeConfig = cell.column.columnDef.meta?.columnDef?.type;\n const typeOptions: BooleanFormatterOptions | undefined =\n typeof typeConfig === \"object\" && typeConfig.type === \"boolean\"\n ? (typeConfig.options as BooleanFormatterOptions)\n : undefined;\n\n const items: SelectMenuOption[] = [\n {\n id: \"true\",\n label: config.trueLabel ?? typeOptions?.trueLabel ?? \"True\",\n },\n {\n id: \"false\",\n label: config.falseLabel ?? typeOptions?.falseLabel ?? \"False\",\n },\n ];\n if (config.allowNull) {\n items.push({ id: \"null\", label: config.nullLabel ?? \"Unset\" });\n }\n return items;\n }, [booleanEditConfig, cell.column.columnDef.meta?.columnDef?.type]);\n\n const rowId = cell.row.id;\n const onChange = booleanEditConfig?.onChange;\n const hasEditableConfig = !!booleanEditConfig;\n\n const {\n tabIndex,\n cellRef,\n triggerClickRef,\n handleCellKeyDown,\n handleMenuKeyDown,\n handleImplicitClose,\n handleCellMouseDown,\n handleCellBlur,\n handleCellFocus,\n } = useEditableMenuCell({ cellPosition, onCellKeyDown, ref });\n\n // Find selected option by matching cell value to option id\n const selectedOption = useMemo(() => {\n if (cellValue === undefined) return null;\n return options.find((o) => o.id === String(cellValue)) ?? null;\n }, [options, cellValue]);\n\n if (!isValidValueType || !hasEditableConfig) {\n const { cellProps: _cellProps, ...immutableCellProps } = props;\n return <DataTableBodyImmutableCell {...immutableCellProps} />;\n }\n\n return (\n <SelectMenuSync\n trigger={({\n ref: triggerRef,\n onClick,\n onKeyDown: menuKeyDown,\n \"aria-controls\": ariaControls,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHaspopup,\n \"data-state\": dataState,\n }) => {\n triggerClickRef.current = onClick;\n const isOpen = ariaExpanded;\n return (\n <TableBodyCell\n ref={mergeRefs([\n triggerRef as Ref<HTMLElement>,\n cellRef as Ref<HTMLElement>,\n ])}\n tabIndex={tabIndex}\n type=\"data-table\"\n {...restCellProps}\n className={cx(styles[\"data-table-body-cell-editable\"], className)}\n onMouseDown={handleCellMouseDown(onClick)}\n onBlur={handleCellBlur}\n onFocus={handleCellFocus}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHaspopup}\n data-state={dataState}\n onKeyDown={(e) => handleCellKeyDown(e, menuKeyDown, isOpen)}\n >\n {children}\n {!isOpen && <DataTableEditableCellEditIcon />}\n <SrOnly>\n {isOpen\n ? \"Press Enter or Space to select a cell value. Press Escape or F2 to cancel.\"\n : \"Press Enter or F2 to edit cell value.\"}\n </SrOnly>\n </TableBodyCell>\n );\n }}\n label={String(\n cell.column.columnDef.meta?.columnDef?.headerLabel ?? \"Select\",\n )}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={(option) => {\n if (!option) return;\n const id = String(option.id);\n const value = id === \"true\" ? true : id === \"false\" ? false : null;\n onChange?.(value as T[typeof columnId], rowId);\n }}\n disableSearch\n onMenuKeyDown={handleMenuKeyDown}\n onImplicitClose={handleImplicitClose}\n popoverWidth=\"reference\"\n />\n );\n}\n\nexport const DataTableEditableBooleanCell = Object.assign(\n forwardRef(DataTableEditableBooleanCellInner) as <T>(\n props: DataTableEditableBooleanCellProps<T> & {\n ref?: React.Ref<EditableCellImperativeHandle>;\n },\n ) => React.ReactElement,\n { displayName: \"DataTableEditableBooleanCell\" },\n);\n","import { useCallback, useMemo, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { DataTableEditableTextCell } from \"../editable-cells/DataTableEditableTextCell\";\nimport { DataTableEditableNumberCell } from \"../editable-cells/DataTableEditableNumberCell\";\nimport { DataTableEditableSelectCell } from \"../editable-cells/DataTableEditableSelectCell\";\nimport { DataTableEditableSelectAsyncCell } from \"../editable-cells/DataTableEditableSelectAsyncCell\";\nimport { DataTableEditableMultiselectCell } from \"../editable-cells/DataTableEditableMultiselectCell\";\nimport { DataTableEditableMultiselectAsyncCell } from \"../editable-cells/DataTableEditableMultiselectAsyncCell\";\nimport { DataTableEditableBooleanCell } from \"../editable-cells/DataTableEditableBooleanCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { useCommonPinningStyles } from \"../../../internal/getCommonPinningStyles\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { EditableCellImperativeHandle } from \"../editable-cells/types\";\nimport { CellPosition } from \"../../../internal/types\";\nimport { TableRow } from \"../../../types\";\n\n/**\n * Props for the DataTableBodyMutableCell component\n */\nexport type DataTableBodyMutableCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n /**\n * The position of the cell in the table\n */\n cellPosition: CellPosition;\n /**\n * The TanStack table cell instance\n */\n cell: Cell<T, unknown>;\n};\n\n/**\n * Renders a mutable (editable) body cell in a DataTable. This component handles keyboard navigation\n * and delegates to the appropriate editable cell component (text, select, or multiselect) based on\n * the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyMutableCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @returns The rendered editable cell component or null if no editMode is configured\n */\nexport function DataTableBodyMutableCell<T>(\n props: DataTableBodyMutableCellProps<T>,\n) {\n const { cell, cellPosition, children, ...rest } = props;\n const editableCellRef = useRef<EditableCellImperativeHandle>(null);\n\n const column = cell.column;\n\n const rowCanExpand = cell.row.getCanExpand();\n const rowIsExpanded = cell.row.getIsExpanded();\n const toggleRowExpanded = cell.row.toggleExpanded;\n\n const meta = (cell.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[column.id as keyof T];\n const cellWarning = meta?.warnings?.[column.id as keyof T];\n\n const classes = cx(styles[\"data-table-body-cell\"], rest.className, {\n [styles[\"data-table-body-cell-error\"]]: !!cellError,\n [styles[\"data-table-body-cell-warning\"]]: !cellError && !!cellWarning,\n });\n const commonPinningStyles = useCommonPinningStyles<T>(column);\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const editMode = column.columnDef.meta?.editMode;\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (rowCanExpand && rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n if (rowCanExpand && !rowIsExpanded) {\n toggleRowExpanded();\n return;\n }\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \"Enter\":\n case \"F2\":\n case \" \": {\n event.preventDefault();\n editableCellRef.current?.invoke();\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus, rowCanExpand, rowIsExpanded, toggleRowExpanded],\n );\n\n const EditableComponent = useMemo(() => {\n if (editMode === \"text\") {\n return DataTableEditableTextCell;\n }\n if (editMode === \"number\") {\n return DataTableEditableNumberCell;\n }\n if (editMode === \"select\") {\n return DataTableEditableSelectCell;\n }\n if (editMode === \"select-async\") {\n return DataTableEditableSelectAsyncCell;\n }\n if (editMode === \"multiselect\") {\n return DataTableEditableMultiselectCell;\n }\n if (editMode === \"multiselect-async\") {\n return DataTableEditableMultiselectAsyncCell;\n }\n if (editMode === \"boolean\") {\n return DataTableEditableBooleanCell;\n }\n }, [editMode]);\n\n if (!EditableComponent) {\n return null;\n }\n\n return (\n <EditableComponent<T>\n ref={editableCellRef}\n cellPosition={cellPosition}\n cell={cell}\n cellProps={{\n ...rest,\n className: classes,\n onKeyDown: handleKeyDown,\n style: commonPinningStyles,\n }}\n >\n {children}\n </EditableComponent>\n );\n}\n","import { DataTableBodyCellProps as BaseDataTableBodyCellProps } from \"../../../base/cells/TableBodyCell\";\nimport { Cell } from \"@tanstack/react-table\";\nimport { DataTableBodyMutableCell } from \"./DataTableBodyMutableCell\";\nimport { DataTableBodyImmutableCell } from \"./DataTableBodyImmutableCell\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport { ReactNode } from \"react\";\nimport { CellPosition } from \"../../../internal/types\";\n\nexport type DataTableBodyCellProps<T> = Omit<\n BaseDataTableBodyCellProps,\n \"onChange\"\n> & {\n cellPosition: CellPosition;\n cell: Cell<T, unknown>;\n children: ReactNode;\n};\n\n/**\n * Renders a body cell in a DataTable, delegating to either a mutable (editable) or immutable cell\n * based on the column's editMode configuration.\n *\n * @param props - The props for the DataTableBodyCell component\n * @param props.cell - The TanStack table cell instance\n * @param props.cellPosition - The position of the cell in the table\n * @param props.children - The content to render in the cell\n * @returns The rendered cell component\n */\nexport function DataTableBodyCell<T>(props: DataTableBodyCellProps<T>) {\n const { cell, cellPosition, children, ...rest } = props;\n\n const column = cell.column;\n const editMode = column.columnDef.meta?.editMode;\n\n const Component = editMode\n ? DataTableBodyMutableCell<T>\n : DataTableBodyImmutableCell<T>;\n return (\n <Component\n cell={cell}\n cellPosition={cellPosition}\n {...rest}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </Component>\n );\n}\n","import { Fragment, ReactNode, memo } from \"react\";\nimport cx from \"classnames\";\nimport { flexRender, Row } from \"@tanstack/react-table\";\n\nimport { Flex } from \"../../../../../components\";\n\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { TableRow } from \"../../types\";\n\nimport { DataTableBodyCell } from \"./cells/DataTableBodyCell\";\n\nimport styles from \"./DataTableBody.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport { useDTFocusDispatchContext } from \"./context/focus/useDTFocusDispatchContext\";\n\nexport type DataTableBodyRowProps<T> = {\n columnOrder: ReturnType<typeof useColumnOrder>[\"columnOrder\"];\n row: Row<T>;\n rowIndex: number;\n tableHasSubRows: boolean;\n isExpanded: boolean;\n canExpand: boolean;\n depth: number;\n parentRowCanExpand: boolean;\n isSelected: boolean;\n isSomeSelected: boolean;\n /**\n * Optional consumer-provided function that returns a value expressing\n * \"this row has changed.\" When supplied, the row is memoized: a row will\n * only re-render when the returned value differs from the previous render,\n * the row's internal UI state changes (expansion, selection, etc.), or\n * any row it depends on changes structurally. When omitted, every row\n * re-renders whenever the parent re-renders.\n */\n getRowVersion?: (row: T) => unknown;\n};\n\nfunction DataTableBodyRowInner<T>({\n columnOrder,\n row,\n rowIndex,\n tableHasSubRows,\n isExpanded,\n canExpand,\n depth,\n parentRowCanExpand,\n}: DataTableBodyRowProps<T>) {\n const visibleCells = row.getVisibleCells();\n\n const id = row.id;\n const original = row.original;\n\n const { focusSubComponent, blurSubComponent } = useDTFocusDispatchContext();\n\n return (\n <Fragment key={row.id}>\n <div\n role=\"row\"\n aria-rowindex={rowIndex + 1} // aria-rowindex is 1-based, uses sorted position\n aria-expanded={tableHasSubRows && canExpand ? isExpanded : undefined}\n aria-level={\n tableHasSubRows && (canExpand || parentRowCanExpand)\n ? depth + 1\n : undefined\n }\n className={styles[\"data-table-body-row\"]}\n >\n {visibleCells.map((cell) => {\n const isLastInParentGroup = cell.column.parent\n ? cell.column.parent.getLeafColumns().slice(-1)[0] === cell.column\n : false;\n\n const cellClasses = cx(getCommonPinningClasses(cell.column), {\n [styles[\"data-table-body-cell-group\"]]:\n \"columns\" in cell.column.columnDef ||\n (cell.column.parent && isLastInParentGroup),\n });\n const columnIndex = columnOrder.indexOf(cell.column.getIndex());\n return (\n <DataTableBodyCell<T>\n key={cell.id}\n cell={cell}\n cellPosition={{ rowIndex, columnIndex }}\n aria-colindex={columnIndex + 1} // aria-colindex is 1-based\n className={cellClasses}\n data-anv-column-id={cell.column.id}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </DataTableBodyCell>\n );\n })}\n </div>\n {isExpanded && \"subComponent\" in (original as TableRow<T>) && (\n <div\n id={`${id}-sub-component`}\n aria-hidden={!isExpanded}\n className={styles[\"data-table-body-sub-component-row\"]}\n onFocus={() => {\n focusSubComponent();\n }}\n onBlur={() => {\n blurSubComponent();\n }}\n >\n <div className={styles[\"data-table-body-sub-component-container\"]}>\n <Flex className={styles[\"data-table-body-sub-component-content\"]}>\n {(original as TableRow<T>).subComponent as ReactNode}\n </Flex>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n\n/**\n * Equality check for React.memo on DataTableBodyRow.\n *\n * Memoization is opt-in via the `getRowVersion` prop. When the prop is not\n * provided, the comparator returns `false` on every call so the row always\n * re-renders alongside its parent — matching the unmemoized baseline and\n * keeping consumers free of surprises when their cell content depends on\n * external state the comparator doesn't know about.\n *\n * When `getRowVersion` is provided, the consumer has explicitly declared\n * what \"this row is unchanged\" means. The comparator then checks:\n * - row identity (`row.id`)\n * - the consumer-provided version value\n * - table-managed UI state (expansion, selection, depth, column order)\n *\n * Consumers bake anything outside row data that affects cell rendering into\n * the version value they return (e.g. `` `${row.updatedAt}-${highlightedId}` ``).\n */\nfunction areRowPropsEqual<T>(\n prev: DataTableBodyRowProps<T>,\n next: DataTableBodyRowProps<T>,\n): boolean {\n const getRowVersion = next.getRowVersion;\n if (!getRowVersion) {\n return false;\n }\n return (\n prev.row.id === next.row.id &&\n getRowVersion(prev.row.original) === getRowVersion(next.row.original) &&\n prev.rowIndex === next.rowIndex &&\n prev.isExpanded === next.isExpanded &&\n prev.canExpand === next.canExpand &&\n prev.depth === next.depth &&\n prev.parentRowCanExpand === next.parentRowCanExpand &&\n prev.tableHasSubRows === next.tableHasSubRows &&\n prev.columnOrder === next.columnOrder &&\n prev.isSelected === next.isSelected &&\n prev.isSomeSelected === next.isSomeSelected\n );\n}\n\nexport const DataTableBodyRow = memo(\n DataTableBodyRowInner,\n areRowPropsEqual,\n) as typeof DataTableBodyRowInner;\n","import { useCallback, useMemo } from \"react\";\nimport type { Column, Table as TanstackTable } from \"@tanstack/react-table\";\n\n/**\n * Hook to analyze the columns in the table to determine the visual position and pinning status\n * @param table - The table to analyze\n */\nexport const useColumnOrder = <T>({ table }: { table: TanstackTable<T> }) => {\n const getColumnIndexes = useCallback((column: Column<T>) => {\n if (column.columns?.length > 0) {\n return column.columns.map((c) => c.getIndex());\n }\n return [column.getIndex()];\n }, []);\n\n const columnOrder = useMemo(() => {\n const left: number[] = [];\n const right: number[] = [];\n const middle: number[] = [];\n\n table.getAllColumns().forEach((column) => {\n if (column.getIsPinned() === \"left\") {\n left.push(...getColumnIndexes(column));\n } else if (column.getIsPinned() === \"right\") {\n right.push(...getColumnIndexes(column));\n } else {\n middle.push(...getColumnIndexes(column));\n }\n });\n return left.concat(middle).concat(right);\n }, [table, getColumnIndexes]);\n\n return {\n columnOrder,\n };\n};\n","import { ComponentPropsWithoutRef, useMemo } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport { TableBody } from \"../../base/TableBody\";\nimport { DataTableBodyRow } from \"./DataTableBodyRow\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport type { DataTableVirtualizer } from \"./useDataTableVirtualizer\";\nimport styles from \"./DataTableBody.module.scss\";\n\n/**\n * Props for the DataTableBody component\n * @property {TanstackTable<T>} table - The table instance from @tanstack/react-table to render\n * @property {boolean} hasSubRows - Whether the table has sub rows\n * @property {DataTableVirtualizer | undefined} virtualizer - Optional virtualizer instance; when provided the body switches to absolute-position row layout\n * @property {(row: T) => unknown} [getRowVersion] - Optional consumer-provided function whose return value signals whether a row has changed. When supplied, rows are memoized; when omitted, every row re-renders with the parent.\n * @extends {ComponentPropsWithoutRef<\"div\">}\n */\nexport type DataTableBodyProps<T> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * Whether the table has sub rows\n */\n hasSubRows: boolean;\n /**\n * Optional virtualizer instance. When provided the body renders only the\n * visible virtual items in an absolutely-positioned layout instead of\n * rendering all rows in the parent CSS grid flow.\n */\n virtualizer: DataTableVirtualizer | undefined;\n /**\n * Optional consumer-provided function that returns a value expressing\n * \"this row has changed.\" When supplied, each row is memoized and only\n * re-renders when the returned value differs from the previous render\n * (or when table-managed row state like selection or expansion changes).\n * When omitted, every row re-renders whenever the parent re-renders.\n */\n getRowVersion?: (row: T) => unknown;\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction NonVirtualizedContent<T>({\n table,\n hasSubRows,\n getRowVersion,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n getRowVersion?: (row: T) => unknown;\n}) {\n const { columnOrder } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n return (\n <>\n {table.getRowModel().rows.map((row, rowIndex) => (\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n key={row.id}\n row={row}\n rowIndex={rowIndex + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n getRowVersion={getRowVersion}\n />\n ))}\n </>\n );\n}\n\nfunction VirtualizedContent<T>({\n table,\n hasSubRows,\n virtualizer,\n getRowVersion,\n}: {\n table: TanstackTable<T>;\n hasSubRows: boolean;\n virtualizer: DataTableVirtualizer;\n getRowVersion?: (row: T) => unknown;\n}) {\n const { columnOrder } = useColumnOrder({ table });\n const headerCount = table.getHeaderGroups().length;\n const rows = table.getRowModel().rows;\n const virtualItems = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n\n const measureRef = useMemo(\n () => (el: HTMLDivElement | null) => {\n if (el) virtualizer.measureElement(el);\n },\n [virtualizer],\n );\n\n return (\n <div\n className={styles[\"data-table-body-virtualized\"]}\n // Signals to ancestor CSS (via :has) that the body is virtualized,\n // so the parent TableBase switches from display:grid to display:block\n // and header rows fall back to explicit grid-template-columns.\n data-virtualized-body=\"true\"\n style={{ height: `${totalSize}px` }}\n >\n {virtualItems.map((virtualRow) => {\n const row = rows[virtualRow.index];\n return (\n <div\n key={row.id}\n ref={measureRef}\n data-index={virtualRow.index}\n className={styles[\"data-table-body-row-virtualized\"]}\n style={{ transform: `translateY(${virtualRow.start}px)` }}\n >\n <DataTableBodyRow<T>\n columnOrder={columnOrder}\n row={row}\n rowIndex={virtualRow.index + headerCount}\n tableHasSubRows={hasSubRows}\n isExpanded={row.getIsExpanded()}\n canExpand={row.getCanExpand()}\n depth={row.depth}\n parentRowCanExpand={row.getParentRow()?.getCanExpand() ?? false}\n isSelected={row.getIsSelected()}\n isSomeSelected={row.getIsSomeSelected()}\n getRowVersion={getRowVersion}\n />\n </div>\n );\n })}\n </div>\n );\n}\n\nexport function DataTableBody<T>(props: DataTableBodyProps<T>) {\n const { table, hasSubRows, virtualizer, getRowVersion, ...rest } = props;\n return (\n <TableBody type=\"data-table\" {...rest}>\n {virtualizer ? (\n <VirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={virtualizer}\n getRowVersion={getRowVersion}\n />\n ) : (\n <NonVirtualizedContent\n table={table}\n hasSubRows={hasSubRows}\n getRowVersion={getRowVersion}\n />\n )}\n </TableBody>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableFooter.module.scss\";\n\n/**\n * Props for the TableFooter component\n * @extends ComponentPropsWithoutRef<\"tfoot\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableFooterProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"tfoot\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table footer component for simple presentational or complex data tables\n * @param props - The props for the TableFooter component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableFooter component\n * @param props.ref - The ref of the TableFooter component\n */\nexport function TableFooter({ type, children, ...rest }: TableFooterProps) {\n const classes = cx(styles[\"table-footer\"], rest.className);\n const Element = type === \"simple\" ? \"tfoot\" : \"div\";\n\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableCells.module.scss\";\n\nexport type SimpleTableFooterCellProps = ComponentPropsWithoutRef<\"td\"> & {\n colSpan?: number;\n};\n\nexport type DataTableFooterCellProps = ComponentPropsWithoutRef<\"div\"> & {\n colSpan?: number;\n};\n\n/**\n * The props for the TableFooterCell component\n */\nexport type TableFooterCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableFooterCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableFooterCellProps);\n\n/**\n * The styled table footer cell component\n * @param props - The props for the TableFooterCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableFooterCell component\n * @param props.rest - The rest of the props\n */\nexport const TableFooterCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableFooterCellProps\n>((props, ref) => {\n const { type, children, className, ...rest } = props;\n\n const classes = cx(styles[\"table-footer-cell\"], className);\n const CellElement = type === \"simple\" ? \"td\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-footer-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"gridcell\"}\n >\n {children}\n </CellElement>\n );\n});\n\nTableFooterCell.displayName = \"TableFooterCell\";\n","import { useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableFooterCell } from \"../../../base/cells/TableFooterCell\";\nimport { DataTableFooterCellProps as BaseDataTableFooterCellProps } from \"../../../base/cells/TableFooterCell\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\n\n/**\n * Props for the DataTableFooterCell component\n * @extends BaseDataTableFooterCellProps\n */\nexport type DataTableFooterCellProps = BaseDataTableFooterCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n};\n\n/**\n * Data table footer cell with focus management\n * @param props - The props for the DataTableFooterCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableFooterCell component\n * @param props.className - The class name of the DataTableFooterCell component\n * @param props.tabIndex - The tab index of the cell\n */\nexport function DataTableFooterCell(props: DataTableFooterCellProps) {\n const { cellPosition, children, className, ...rest } = props;\n\n const footerCellRef = useRef<HTMLDivElement>(null);\n\n // Tabindex is managed imperatively by DTFocusProvider's syncRovingTabindex.\n // The delegated focusin handler on TableBase updates the restore point.\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTableCellElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n default:\n break;\n }\n },\n [moveFocus, jumpFocus],\n );\n\n return (\n <TableFooterCell\n type=\"data-table\"\n {...rest}\n ref={footerCellRef}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-footer-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n >\n {children}\n </TableFooterCell>\n );\n}\n","import { ComponentPropsWithoutRef } from \"react\";\nimport { Table as TanstackTable } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\n\nimport { ColumnDef } from \"../../types\";\nimport { DataTableProps, type DataTableRowData } from \"../DataTable\";\nimport { TableFooter } from \"../../base/TableFooter\";\nimport { DataTableFooterCell } from \"./cells/DataTableFooterCell\";\n\nimport styles from \"./DataTableFooter.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\n\n/**\n * Props for the default/configured table footer rows\n * @extends TanstackTable<T>\n * @extends ColumnDef<T>[]\n */\nexport type DefaultTableFooterRowsProps<T extends DataTableRowData> = {\n table: TanstackTable<T>;\n columns: ColumnDef<T>[];\n};\n\n/**\n * Props for the custom table footer rows\n * @extends DataTableProps<T>\n */\nexport type CustomTableFooterRowsProps<T extends DataTableRowData> = {\n columnCount: number;\n customFooter: DataTableProps<T>[\"customFooter\"];\n table: TanstackTable<T>;\n};\n\n/**\n * Props for the DataTableFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableFooterProps<T extends DataTableRowData> = {\n /**\n * The table instance from @tanstack/react-table to render\n */\n table: TanstackTable<T>;\n /**\n * The columns of the table\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer of the table\n */\n customFooter?: DataTableProps<T>[\"customFooter\"];\n} & ComponentPropsWithoutRef<\"div\">;\n\nfunction DefaultTableFooterRows<T extends DataTableRowData>({\n table,\n columns,\n}: DefaultTableFooterRowsProps<T>) {\n // Recursively find a column by ID in the column tree\n const findColumnById = (\n cols: ColumnDef<T>[],\n id: string,\n ): ColumnDef<T> | undefined => {\n for (const col of cols) {\n if (col.id === id) {\n return col;\n }\n if (col.columns && Array.isArray(col.columns)) {\n const found = findColumnById(col.columns, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n };\n\n // Recursively get the maximum number of footer rows from a column and its nested columns\n const getMaxFooterRows = (column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n };\n\n const maxFooterRows = Math.max(\n ...columns.map((column) => getMaxFooterRows(column)),\n 1,\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return Array.from({ length: maxFooterRows }, (_, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={`footer-row-${rowIndex}`}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {table\n .getFlatHeaders()\n .filter((header) => {\n const column = findColumnById(columns, header.column.id);\n // Filter out columns that have nested columns (column groups)\n return !column?.columns || column.columns.length === 0;\n })\n .map((header) => {\n const column = findColumnById(columns, header.column.id);\n\n let footerContent = null;\n if (Array.isArray(column?.footerContent)) {\n footerContent = column.footerContent[footerIndex] || null;\n } else if (column?.footerContent && footerIndex === 0) {\n footerContent = column.footerContent;\n }\n\n const columnIndex = columnOrder.indexOf(header.column.getIndex());\n\n return (\n <DataTableFooterCell\n key={header.id}\n className={getCommonPinningClasses(header.column)}\n style={getCommonPinningStyles(header.column)}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footerContent}\n </DataTableFooterCell>\n );\n })}\n </div>\n );\n });\n}\n\nfunction CustomTableFooterRows<T extends DataTableRowData>({\n customFooter,\n columnCount,\n table,\n}: CustomTableFooterRowsProps<T>) {\n return customFooter?.map((footerRow, footerIndex) => {\n const rowIndex =\n footerIndex +\n table.getHeaderGroups().length +\n table.getRowModel().rows.length;\n return (\n <div\n key={footerIndex}\n role=\"row\"\n data-anv=\"table-footer-row\"\n className={styles[\"data-table-footer-row\"]}\n aria-rowindex={rowIndex + 1}\n >\n {(() => {\n let columnIndex = 0;\n return Array.from({\n length:\n // total columns\n columnCount -\n // minus columns merged using colSpan\n footerRow.reduce((acc, curr) => acc + curr.colSpan, 0) +\n // plus columns added in the custom footer row\n footerRow.length,\n }).map((_, index) => {\n const footer = footerRow[index] ?? { content: \"\", colSpan: 1 };\n // Use grid-column span for colspan cells\n const gridColumn =\n footer.colSpan > 1 ? `span ${footer.colSpan}` : undefined;\n\n const cell = (\n <DataTableFooterCell\n key={index}\n colSpan={footer.colSpan}\n style={{\n gridColumn,\n }}\n cellPosition={{ rowIndex, columnIndex }}\n >\n {footer.content}\n </DataTableFooterCell>\n );\n\n // Advance the column index by the colSpan for the next iteration\n columnIndex += footer.colSpan;\n return cell;\n });\n })()}\n </div>\n );\n });\n}\n\n/**\n * Data table footer, which can be either a configured or custom footer\n * @param props - The props for the DataTableFooter component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.customFooter - The custom footer of the table\n * @param props.columns - The columns of the table\n */\nexport function DataTableFooter<T extends DataTableRowData>({\n table,\n customFooter,\n columns,\n ...rest\n}: DataTableFooterProps<T>) {\n const columnCount = table.getFlatHeaders().length;\n const classes = cx(styles[\"data-table-footer\"], rest.className);\n\n return (\n <TableFooter type=\"data-table\" {...rest} className={classes}>\n {customFooter ? (\n <CustomTableFooterRows\n table={table}\n customFooter={customFooter}\n columnCount={columnCount}\n />\n ) : (\n <DefaultTableFooterRows table={table} columns={columns} />\n )}\n </TableFooter>\n );\n}\n","import { useEffect, useState, RefObject } from \"react\";\n\n/**\n * Tracks whether the nearest DataTable cell ancestor of `elementRef` is focused.\n * Replaces CellFocusContext for status cells — avoids a React context for the\n * common case while keeping reactive state where needed (tooltip visibility).\n *\n * @param elementRef Ref to the element whose cell-focus state we want to track.\n * @returns True when the cell ancestor currently contains document.activeElement.\n */\nexport function useCellFocusListener(\n elementRef: RefObject<HTMLElement>,\n): boolean {\n const [isFocused, setIsFocused] = useState(false);\n\n useEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n const cell = el.closest<HTMLElement>('[data-anv=\"table-body-cell\"]');\n if (!cell) return;\n\n const onFocusIn = () => setIsFocused(true);\n const onFocusOut = (e: FocusEvent) => {\n if (!cell.contains(e.relatedTarget as Node)) setIsFocused(false);\n };\n cell.addEventListener(\"focusin\", onFocusIn);\n cell.addEventListener(\"focusout\", onFocusOut);\n return () => {\n cell.removeEventListener(\"focusin\", onFocusIn);\n cell.removeEventListener(\"focusout\", onFocusOut);\n };\n }, [elementRef]);\n\n return isFocused;\n}\n","import ErrorIcon from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\nimport WarningIcon from \"@servicetitan/hammer-icon/mdi/round/warning.svg\";\nimport { Icon } from \"../../../../../../components/Icon\";\nimport styles from \"./DataTableCells.module.scss\";\nimport { Tooltip } from \"../../../../../../components\";\nimport { useCellFocusListener } from \"./useCellFocusListener\";\nimport { useRef, useState } from \"react\";\n\nexport type CellStatusProps = {\n /** Status value - true for status without message, string for status with accessible message */\n status: boolean | string;\n /** The variant determines the icon, color, and aria-label */\n variant: \"error\" | \"warning\";\n};\n\nconst variantConfig = {\n error: {\n icon: ErrorIcon,\n className: \"cell-error-icon\",\n label: \"Cell has an error\",\n },\n warning: {\n icon: WarningIcon,\n className: \"cell-warning-icon\",\n label: \"Cell has a warning\",\n },\n} as const;\n\n/**\n * Renders a status icon (error or warning) for cells.\n * When status is a string, it's used as the aria-label for accessibility and shown in a tooltip.\n * When the parent cell is focused, the tooltip is displayed for keyboard accessibility.\n */\nexport function CellStatus({ status, variant }: CellStatusProps) {\n const message = typeof status === \"string\" ? status : undefined;\n const ref = useRef<HTMLSpanElement>(null);\n const isCellFocused = useCellFocusListener(ref);\n const [isHovered, setIsHovered] = useState(false);\n const config = variantConfig[variant];\n\n const icon = (\n <Icon\n svg={config.icon}\n className={styles[config.className]}\n aria-label={message ? `${config.label}: ${message}` : `${config.label}.`}\n />\n );\n\n if (!message) {\n return <span ref={ref}>{icon}</span>;\n }\n\n // When the cell is focused via keyboard, force the tooltip open, otherwise, open on hover.\n const isTooltipOpen = isCellFocused || isHovered;\n\n return (\n <Tooltip open={isTooltipOpen}>\n {/* We have to track hover manually because the tooltip doesn't like being conditionally controlled */}\n <Tooltip.Trigger\n ref={ref}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {icon}\n </Tooltip.Trigger>\n <Tooltip.Content>{message}</Tooltip.Content>\n </Tooltip>\n );\n}\n","import { createColumnHelper, type ColumnHelper } from \"@tanstack/react-table\";\n\nimport { FieldLabel } from \"../../../../../../components/FieldLabel\";\nimport cellContentStyles from \"../cells/DataTableCells.module.scss\";\n\nimport { type ReactNode, Fragment, isValidElement } from \"react\";\n\nimport {\n ColumnDef,\n ColumnHeader,\n ColumnType,\n ColumnTypeConfig,\n EditMode,\n TableRow,\n} from \"../../../types\";\n\nimport { TableEmptyCellContent } from \"../../../base/cells/TableEmptyCellContent\";\nimport { CellStatus } from \"../cells/CellStatus\";\nimport {\n getColumnTypeDefaults,\n resolveColumnTypeConfig,\n} from \"../../../columnTypeDefaults\";\n\n// TanStack's createColumnHelper is type-only at runtime — one instance\n// is enough for all generic parameters. Cast at the use site.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst sharedColumnHelper = createColumnHelper<any>();\n\n// Extend TanStack Table's ColumnMeta type to include our custom properties\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData, TValue> {\n editMode?: EditMode;\n editConfig?: ColumnDef<TData>[\"editConfig\"];\n /**\n * The original column definition, stored for type narrowing and runtime access\n */\n columnDef?: ColumnDef<TData>;\n /**\n * Whether the header action (expand all / select all) is disabled for this column\n */\n disableHeaderAction?: boolean;\n /**\n * Resolved header alignment for DataTable-owned header layout.\n */\n headerAlign?: HeaderAlign;\n /**\n * Whether this column renders a grouped header.\n */\n isGroupHeader?: boolean;\n }\n}\n\n/**\n * Props for the getTanStackColumnDef function\n */\nexport type TanStackColumnDefProps<T> = {\n /**\n * The column definition to convert to a TanStack column definition\n */\n columnDef: ColumnDef<T>;\n /**\n * Table-level default content for empty cells. Column-level `emptyCellContent`\n * takes precedence over this value.\n */\n emptyCellContent?: ReactNode;\n};\n\ntype TanStackColumnDef<T extends object> =\n | ReturnType<ColumnHelper<T>[\"group\"]>\n | ReturnType<ColumnHelper<T>[\"accessor\"]>;\n\ntype HeaderAlign = \"start\" | \"center\" | \"end\";\n\ntype HeaderJustifyContent = \"flex-start\" | \"center\" | \"flex-end\";\n\ntype NormalizedColumnHeader = ColumnHeader & {\n label: string;\n};\n\nfunction resolveHeaderAlign<T extends object>(\n align?: ColumnDef<T>[\"align\"],\n isGroup = false,\n): HeaderAlign {\n if (isGroup) {\n return \"start\";\n }\n\n return align ?? \"start\";\n}\n\nfunction getHeaderJustifyContent(align: HeaderAlign): HeaderJustifyContent {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\nfunction normalizeColumnHeader<T extends object>(\n columnDef: ColumnDef<T>,\n): NormalizedColumnHeader {\n return {\n label:\n columnDef.header?.label ?? columnDef.headerLabel ?? String(columnDef.id),\n required: columnDef.header?.required,\n moreInfo: columnDef.header?.moreInfo,\n };\n}\n\nfunction renderColumnHeader<T extends object>(\n header: NormalizedColumnHeader,\n {\n align,\n isGroup = false,\n }: {\n align?: ColumnDef<T>[\"align\"];\n isGroup?: boolean;\n },\n) {\n const resolvedAlign = resolveHeaderAlign(align, isGroup);\n\n return (\n <div\n data-a2-datatable-header-wrapper=\"true\"\n data-a2-datatable-header-align={resolvedAlign}\n data-a2-datatable-header-kind={isGroup ? \"group\" : \"leaf\"}\n style={{\n justifyContent: getHeaderJustifyContent(resolvedAlign),\n maxWidth: \"100%\",\n width: \"fit-content\",\n }}\n >\n <div\n data-a2-datatable-header-content=\"true\"\n style={{ maxWidth: \"100%\", width: \"fit-content\" }}\n >\n <FieldLabel\n el=\"div\"\n required={header.required}\n moreInfo={header.moreInfo}\n style={{\n maxWidth: \"100%\",\n textAlign: resolvedAlign,\n width: \"fit-content\",\n }}\n >\n {header.label}\n </FieldLabel>\n </div>\n </div>\n );\n}\nfunction renderRawCellValue<TValue>(value: TValue): ReactNode {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (value === \"\") {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\"\n ) {\n return value;\n }\n\n if (typeof value === \"boolean\") {\n return String(value);\n }\n\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n\n if (typeof value === \"object\" && isValidElement(value)) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item, index) => (\n <Fragment key={index}>{renderRawCellValue(item)}</Fragment>\n ));\n }\n\n return String(value);\n}\n\n/**\n * Build the column definition for TanStack useReactTable.\n * This converts our ColumnDef<T> to TanStack's column definition format,\n * preserving the original column definition in meta for type narrowing.\n *\n * @param props - The props for the getTanStackColumnDef function\n * @param props.columnDef - The column definition to convert\n * @returns The column definition for TanStack useReactTable\n */\nexport function getTanStackColumnDef<T extends object>({\n columnDef,\n emptyCellContent,\n}: TanStackColumnDefProps<T>): TanStackColumnDef<T> {\n const normalizedHeader = normalizeColumnHeader(columnDef);\n\n // If this column has sub-columns, create a group column\n if (columnDef.columns && columnDef.columns.length > 0) {\n return sharedColumnHelper.group({\n id: columnDef.id as string,\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: columnDef.align,\n isGroup: true,\n }),\n columns: columnDef.columns.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n ),\n meta: {\n columnDef,\n headerAlign: resolveHeaderAlign(columnDef.align, true),\n isGroupHeader: true,\n },\n footer: columnDef.footerContent\n ? () => columnDef.footerContent\n : undefined,\n enableResizing: columnDef.resizable,\n }) as TanStackColumnDef<T>;\n }\n\n // Resolve type defaults if type is specified\n let resolvedAlign = columnDef.align;\n let resolvedRenderCell = columnDef.renderCell;\n\n if (columnDef.type) {\n const [columnType, typeOptions] = resolveColumnTypeConfig(\n columnDef.type as ColumnTypeConfig<ColumnType>,\n );\n const typeDefaults = getColumnTypeDefaults(columnType);\n\n // Apply type defaults if not explicitly overridden\n if (resolvedAlign === undefined) {\n resolvedAlign = typeDefaults.align;\n }\n if (resolvedRenderCell === undefined) {\n resolvedRenderCell = typeDefaults.createRenderCell(\n typeOptions,\n ) as typeof resolvedRenderCell;\n }\n }\n\n const resolvedEmptyContent = columnDef.emptyCellContent ??\n emptyCellContent ?? <TableEmptyCellContent />;\n\n const metaColumnDef = {\n ...columnDef,\n headerLabel: normalizedHeader.label,\n };\n\n // Otherwise, create an accessor column\n // The accessor preserves the type T[columnDef.id] as the value type,\n // though TanStack Table's Cell type doesn't expose this at the table level\n return sharedColumnHelper.accessor((row: T) => row[columnDef.id], {\n id: columnDef.id as string,\n cell: (info) => {\n const rawCellValue = info.row.original[columnDef.id];\n let cellContent;\n if (resolvedRenderCell) {\n cellContent = resolvedRenderCell(rawCellValue, {\n row: info.row.original,\n depth: info.row.depth,\n });\n } else {\n cellContent = renderRawCellValue(rawCellValue);\n }\n if (cellContent === \"\") {\n cellContent = resolvedEmptyContent;\n }\n\n const meta = (info.row.original as TableRow<T>).meta;\n const cellError = meta?.errors?.[columnDef.id as keyof T];\n const cellWarning = meta?.warnings?.[columnDef.id as keyof T];\n\n return (\n <div\n className={cellContentStyles[\"data-table-cell-content\"]}\n data-align={resolvedAlign ?? \"start\"}\n >\n {cellError ? (\n <CellStatus status={cellError} variant=\"error\" />\n ) : cellWarning ? (\n <CellStatus status={cellWarning} variant=\"warning\" />\n ) : null}\n {cellContent ?? resolvedEmptyContent}\n </div>\n );\n },\n header: () =>\n renderColumnHeader(normalizedHeader, {\n align: resolvedAlign,\n }),\n footer: columnDef.footerContent ? () => columnDef.footerContent : undefined,\n minSize: columnDef.minWidth,\n maxSize: columnDef.maxWidth,\n // TanStack's `size` is the column's starting width — we use `defaultWidth`\n // when provided and fall back to `minWidth` so the auto-sizing basis\n // matches the manual-resize floor by default.\n size: columnDef.defaultWidth ?? columnDef.minWidth,\n enableResizing: columnDef.resizable,\n enableSorting: !!columnDef.sortable,\n meta: {\n editMode: columnDef.editConfig?.mode,\n editConfig: columnDef.editConfig,\n columnDef: metaColumnDef, // Store original for type narrowing\n headerAlign: resolveHeaderAlign(resolvedAlign),\n isGroupHeader: false,\n },\n\n // If custom sorting function is provided, use it\n ...(columnDef.sortable && typeof columnDef.sortable === \"function\"\n ? {\n sortingFn: (rowA, rowB, colId) => {\n if (typeof columnDef.sortable === \"function\") {\n return columnDef.sortable(\n rowA.getValue(colId),\n rowB.getValue(colId),\n );\n }\n return 0;\n },\n }\n : undefined),\n }) as TanStackColumnDef<T>;\n}\n","import type { SortingState } from \"@tanstack/react-table\";\n\nexport function shallowSortingEqual(a: SortingState, b: SortingState): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i].id !== b[i].id || a[i].desc !== b[i].desc) return false;\n }\n return true;\n}\n","import * as React from \"react\";\nconst SvgArrowUpward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 19V7.83l4.88 4.88c.39.39 1.03.39 1.42 0a.996.996 0 0 0 0-1.41l-6.59-6.59a.996.996 0 0 0-1.41 0l-6.6 6.58a.996.996 0 1 0 1.41 1.41L11 7.83V19c0 .55.45 1 1 1s1-.45 1-1z\" }));\nexport default SvgArrowUpward;\n","import * as React from \"react\";\nconst SvgArrowDownward = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0a.996.996 0 0 0 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 1 0-1.41-1.41L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1z\" }));\nexport default SvgArrowDownward;\n","import { ComponentPropsWithoutRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./TableHeader.module.scss\";\n\n/**\n * Props for the TableHeader component\n * @extends ComponentPropsWithoutRef<\"thead\">\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableHeaderProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & ComponentPropsWithoutRef<\"thead\">)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & ComponentPropsWithoutRef<\"div\">);\n\n/**\n * Table header component for simple presentational or complex data tables\n * @param props - The props for the TableHeader component\n * @param props.type - The type of table being rendered\n * @param props.children - The children of the TableHeader component\n * @param props.ref - The ref of the TableHeader component\n */\nexport function TableHeader({ type, children, ...rest }: TableHeaderProps) {\n const classes = cx(styles[\"table-header\"], rest.className);\n\n const Element = type === \"simple\" ? \"thead\" : \"div\";\n return (\n <Element\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"rowgroup\"}\n >\n {children}\n </Element>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { CommonTableCellProps } from \"./types\";\n\nimport styles from \"./TableCells.module.scss\";\n\n/**\n * The common props for the TableHeaderCell component\n */\nexport type CommonTableHeaderCellProps = CommonTableCellProps & {\n /**\n * Whether the cell is a group cell (for grouped columns)\n */\n isGroup?: boolean;\n /**\n * Whether the header cell can be used to activate column sorting\n */\n isSortable?: boolean;\n /**\n * Whether the header cell should show whole-cell interactive affordances\n */\n isInteractiveHeaderCell?: boolean;\n};\n\nexport type SimpleTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"th\">;\n\nexport type DataTableHeaderCellProps = CommonTableHeaderCellProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * The props for the TableHeaderCell component\n */\nexport type TableHeaderCellProps =\n | ({\n /**\n * The type of table being rendered\n */\n type: \"simple\";\n } & SimpleTableHeaderCellProps)\n | ({\n /**\n * The type of table being rendered\n */\n type: \"data-table\";\n } & DataTableHeaderCellProps);\n\n/**\n * The styled table header cell component\n * @param props - The props for the TableHeaderCell component\n * @param props.type - The type of table being rendered\n * @param props.children - The children to render in the cell\n * @param props.className - The class name of the TableHeaderCell component\n * @param props.rest - The rest of the props\n */\nexport const TableHeaderCell = forwardRef<\n HTMLTableCellElement | HTMLDivElement,\n TableHeaderCellProps\n>(\n (\n {\n type,\n children,\n className,\n isGroup,\n isSortable,\n isInteractiveHeaderCell,\n isSelectCell,\n isExpandCell,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(styles[\"table-header-cell\"], className, {\n [styles[\"table-header-cell-group\"]]: isGroup,\n [styles[\"table-header-cell-sortable\"]]: isSortable,\n [styles[\"table-header-cell-interactive\"]]: isInteractiveHeaderCell,\n [styles[\"table-cell-internal-expand\"]]: isExpandCell,\n [styles[\"table-cell-internal-select\"]]: isSelectCell,\n });\n const CellElement = type === \"simple\" ? \"th\" : \"div\";\n\n return (\n <CellElement\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- could be table cell or div\n ref={ref as any}\n data-anv=\"table-header-cell\"\n {...rest}\n className={classes}\n role={type === \"simple\" ? undefined : \"columnheader\"}\n >\n {children}\n </CellElement>\n );\n },\n);\n\nTableHeaderCell.displayName = \"TableHeaderCell\";\n","import { forwardRef, Ref, useCallback, useRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { TableHeaderCell } from \"../../../base/cells/TableHeaderCell\";\nimport { HeaderContext } from \"@tanstack/react-table\";\nimport { DataTableHeaderCellProps as BaseDataTableHeaderCellProps } from \"../../../base/cells/TableHeaderCell\";\nimport { SrOnly } from \"../../../../../../components\";\n\nimport styles from \"./DataTableCells.module.scss\";\nimport { useDTFocusDispatchContext } from \"../context/focus/useDTFocusDispatchContext\";\nimport { formatCellPositionString } from \"../util/cellPositionHelpers\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"../constants\";\n\nconst INTERACTIVE_DESCENDANT_SELECTOR = [\n \"button\",\n \"a[href]\",\n \"input\",\n \"select\",\n \"textarea\",\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[contenteditable=\"true\"]',\n].join(\", \");\n\nfunction isInteractiveDescendant(\n target: EventTarget | null,\n currentTarget: HTMLElement,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveElement = target.closest(INTERACTIVE_DESCENDANT_SELECTOR);\n\n return !!interactiveElement && currentTarget.contains(interactiveElement);\n}\n\n/**\n * Props for the DataTableHeaderCell component\n * @extends BaseDataTableHeaderCellProps\n */\nexport type DataTableHeaderCellProps<T, TValue> =\n BaseDataTableHeaderCellProps & {\n cellPosition: { rowIndex: number; columnIndex: number };\n header: HeaderContext<T, TValue>;\n };\n\n/**\n * Data table header cell with focus management\n * @param props - The props for the DataTableHeaderCell component\n * @param props.cellPosition - The cell position of the cell\n * @param props.children - The children of the DataTableHeaderCell component\n * @param props.header - The header of the DataTableHeaderCell component\n * @param props.isFocused - Whether the cell is focused\n */\nfunction DataTableHeaderCellInner<T, TValue>(\n props: DataTableHeaderCellProps<T, TValue>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const { cellPosition, children, header, className, ...rest } = props;\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n // Merge internal and forwarded refs\n const setRefs = useCallback(\n (element: HTMLDivElement | null) => {\n // Set internal ref\n (internalRef as React.MutableRefObject<HTMLDivElement | null>).current =\n element;\n // Set forwarded ref\n if (typeof forwardedRef === \"function\") {\n forwardedRef(element);\n } else if (forwardedRef) {\n (\n forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = element;\n }\n },\n [forwardedRef],\n );\n\n const { jumpFocus, moveFocus } = useDTFocusDispatchContext();\n // Tabindex is managed imperatively by DTFocusProvider's syncRovingTabindex\n // (writes `tabIndex=0` onto the focus-restore-point cell). The delegated\n // focusin handler on TableBase updates the restore point on click.\n\n // Derive cell action from column ID\n const columnId = header.column.id;\n const isExpandCell = columnId === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n const isSelectCell = columnId === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isSortingCell = header.column.getCanSort();\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveFocus(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveFocus(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveFocus(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveFocus(\"right\");\n return;\n case \"Home\": {\n event.preventDefault();\n jumpFocus(\"left\");\n return;\n }\n case \"End\": {\n event.preventDefault();\n jumpFocus(\"right\");\n return;\n }\n case \" \":\n case \"Enter\": {\n if (isInteractiveDescendant(event.target, event.currentTarget)) {\n return;\n }\n\n const isDisabled = header.column.columnDef.meta?.disableHeaderAction;\n if (isSelectCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllPageRowsSelected();\n return;\n }\n if (isExpandCell && !isDisabled) {\n event.preventDefault();\n header.table.toggleAllRowsExpanded();\n return;\n }\n if (isSortingCell) {\n event.preventDefault();\n header.column.toggleSorting();\n return;\n }\n return;\n }\n default:\n break;\n }\n },\n [\n moveFocus,\n jumpFocus,\n header.column,\n header.table,\n isExpandCell,\n isSelectCell,\n isSortingCell,\n ],\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (isSortingCell) {\n if (!(event.target instanceof Element)) {\n return;\n }\n\n const resizeHandle = event.target.closest(\n '[aria-roledescription=\"Resize handle\"]',\n );\n\n if (\n resizeHandle ||\n isInteractiveDescendant(event.target, event.currentTarget)\n ) {\n return;\n }\n\n header.column.getToggleSortingHandler()?.(event);\n }\n },\n [header.column, isSortingCell],\n );\n\n return (\n <TableHeaderCell\n type=\"data-table\"\n {...rest}\n ref={setRefs}\n tabIndex={-1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cx(styles[\"data-table-header-cell\"], className)}\n data-cell-pos={formatCellPositionString(cellPosition)}\n aria-sort={\n header.column.getIsSorted() === \"asc\"\n ? \"ascending\"\n : header.column.getIsSorted() === \"desc\"\n ? \"descending\"\n : undefined\n }\n >\n {children}\n {isSortingCell && (\n <SrOnly>\n {header.column.getIsSorted() === \"asc\"\n ? \"Sorted ascending.\"\n : header.column.getIsSorted() === \"desc\"\n ? \"Sorted descending.\"\n : \"Not sorted.\"}{\" \"}\n Click to toggle sort.\n </SrOnly>\n )}\n </TableHeaderCell>\n );\n}\n\n/**\n * Data table header cell with focus management and ref forwarding\n */\nexport const DataTableHeaderCell = forwardRef(DataTableHeaderCellInner) as <\n T,\n TValue,\n>(\n props: DataTableHeaderCellProps<T, TValue> & { ref?: Ref<HTMLDivElement> },\n) => ReturnType<typeof DataTableHeaderCellInner>;\n","import cx from \"classnames\";\nimport { Header } from \"@tanstack/react-table\";\n\nimport styles from \"./ResizeHandle.module.scss\";\n\n/**\n * Props for the ResizeHandle component\n * @property {Header<T, unknown>} header - The header instance from TanStack Table\n * @property {() => void} [onResizeStart] - Callback fired before resize begins, useful for initializing state\n */\nexport type ResizeHandleProps<T> = {\n header: Header<T, unknown>;\n onResizeStart?: () => void;\n onResizeEnd?: () => void;\n};\n\n/**\n * Resize handle component resizing table columns\n * @param props - The props for the ResizeHandle component\n * @param props.header - The header of the ResizeHandle component\n * @param props.onResizeStart - Optional callback fired before resize begins\n */\nexport function ResizeHandle<T>({\n header,\n onResizeStart,\n onResizeEnd,\n}: ResizeHandleProps<T>) {\n const classes = cx(styles[\"resize-handle\"], {\n [styles[\"resizing\"]]: header.column.getIsResizing(),\n });\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ) => {\n onResizeStart?.();\n header.getResizeHandler()(e);\n };\n\n return (\n <div\n role=\"button\"\n // TODO: enable keyboard resizing\n tabIndex={-1}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={handleResizeStart}\n onTouchStart={handleResizeStart}\n onMouseUp={onResizeEnd}\n onTouchEnd={onResizeEnd}\n className={classes}\n aria-label=\"Resize column\"\n aria-pressed={header.column.getIsResizing()}\n aria-roledescription=\"Resize handle\"\n />\n );\n}\n","import {\n ComponentPropsWithoutRef,\n useCallback,\n useRef,\n RefObject,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { flexRender, Table as TanstackTable } from \"@tanstack/react-table\";\n\nimport IconArrowUpward from \"../../../../../../public/assets/icons/material/round/arrow_upward.svg\";\nimport IconArrowDownward from \"../../../../../../public/assets/icons/material/round/arrow_downward.svg\";\n\nimport { TableHeader } from \"../../base/TableHeader\";\nimport { DataTableHeaderCell } from \"./cells/DataTableHeaderCell\";\nimport { Flex, Icon } from \"../../../../../components\";\nimport { getCommonPinningClasses } from \"../../internal/getCommonPinningClasses\";\nimport { getCommonPinningStyles } from \"../../internal/getCommonPinningStyles\";\nimport { ResizeHandle } from \"../../internal/ResizeHandle\";\n\nimport styles from \"./DataTableHeader.module.scss\";\nimport { useColumnOrder } from \"./useColumnOrder\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./constants\";\n\ntype HeaderContentAlign = \"flex-start\" | \"center\" | \"flex-end\";\n\nfunction getHeaderContentAlign(\n align?: \"start\" | \"center\" | \"end\",\n): HeaderContentAlign {\n if (align === \"center\") {\n return \"center\";\n }\n\n if (align === \"end\") {\n return \"flex-end\";\n }\n\n return \"flex-start\";\n}\n\n/**\n * Props for the DataTableHeader component\n * @extends TanstackTable<T>\n * @extends ComponentPropsWithoutRef<\"div\">\n */\ntype DataTableHeaderProps<T> = {\n table: TanstackTable<T>;\n tableRef: RefObject<HTMLDivElement>;\n} & ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Data table header container\n * @param props - The props for the DataTableHeader component\n * @param props.table - The table instance from @tanstack/react-table to render\n * @param props.tableRef - Ref to the table root element for imperative DOM writes\n */\nexport function DataTableHeader<T>({\n table,\n tableRef,\n}: DataTableHeaderProps<T>) {\n const getTableBase = useCallback(\n () =>\n tableRef.current?.querySelector<HTMLElement>(\n '[data-anv=\"data-table-base\"]',\n ) ?? null,\n [tableRef],\n );\n\n const handleHoverColumn = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n base.setAttribute(\"data-anv-hover-col\", columnId);\n base\n .querySelectorAll(`[data-anv-column-id=\"${CSS.escape(columnId)}\"]`)\n .forEach((el) => el.setAttribute(\"data-anv-is-hovered-col\", \"true\"));\n },\n [getTableBase],\n );\n\n const handleHoverColumnLeave = useCallback(\n (columnId: string) => {\n const base = getTableBase();\n if (!base) return;\n if (base.getAttribute(\"data-anv-hover-col\") !== columnId) return;\n base.removeAttribute(\"data-anv-hover-col\");\n base\n .querySelectorAll(\n `[data-anv-column-id=\"${CSS.escape(columnId)}\"][data-anv-is-hovered-col=\"true\"]`,\n )\n .forEach((el) => el.removeAttribute(\"data-anv-is-hovered-col\"));\n },\n [getTableBase],\n );\n\n // Store refs to header cells for measuring actual DOM width during resize\n const cellRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n\n // Create a resize start handler that initializes columnSizing with the actual DOM width\n // Uses flushSync to ensure the DOM is updated with the new width before TanStack measures it\n const createResizeStartHandler = useCallback(\n (columnId: string) => () => {\n const cellElement = cellRefs.current.get(columnId);\n if (cellElement) {\n const actualWidth = cellElement.getBoundingClientRect().width;\n flushSync(() => {\n table.setColumnSizing((prev) => ({\n ...prev,\n [columnId]: actualWidth,\n }));\n });\n }\n },\n [table],\n );\n\n const { columnOrder } = useColumnOrder({ table });\n\n return (\n <TableHeader type=\"data-table\">\n {table.getHeaderGroups().map((headerGroup, index) => (\n <div\n key={headerGroup.id}\n className={styles[\"data-table-header-row\"]}\n role=\"row\"\n aria-rowindex={index + 1}\n >\n {headerGroup.headers.map((header) => {\n const isLastInParentGroup = header.column.parent\n ? header.column.parent.getLeafColumns().slice(-1)[0] ===\n header.column\n : false;\n\n const isInternalSelectColumn =\n header.column.id === INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID;\n const isInternalExpandColumn =\n header.column.id === INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID;\n\n // Use grid-column span for grouped columns\n const gridColumn =\n header.colSpan > 1 ? `span ${header.colSpan}` : undefined;\n\n const headerContentAlign = getHeaderContentAlign(\n header.column.columnDef.meta?.headerAlign,\n );\n const isGroupHeader = header.subHeaders.length > 0;\n const hasGroupDivider =\n isGroupHeader ||\n Boolean(header.column.parent && isLastInParentGroup);\n const isHeaderActionDisabled =\n header.column.columnDef.meta?.disableHeaderAction === true;\n const headerCellInteractive =\n !isGroupHeader &&\n (header.column.getCanSort() ||\n ((isInternalExpandColumn || isInternalSelectColumn) &&\n !isHeaderActionDisabled));\n\n return (\n <DataTableHeaderCell\n header={header.getContext()}\n key={header.id}\n ref={(el: HTMLDivElement | null) => {\n if (el) {\n cellRefs.current.set(header.column.id, el);\n } else {\n cellRefs.current.delete(header.column.id);\n }\n }}\n className={getCommonPinningClasses(header.column)}\n data-anv-column-id={header.column.id}\n style={{\n gridColumn,\n ...getCommonPinningStyles(header.column),\n }}\n aria-colspan={header.colSpan}\n isGroup={hasGroupDivider}\n isSortable={header.column.getCanSort()}\n isInteractiveHeaderCell={headerCellInteractive}\n isSelectCell={isInternalSelectColumn}\n isExpandCell={isInternalExpandColumn}\n onMouseEnter={\n headerCellInteractive\n ? () => handleHoverColumn(header.column.id)\n : undefined\n }\n onMouseLeave={\n headerCellInteractive\n ? () => handleHoverColumnLeave(header.column.id)\n : undefined\n }\n cellPosition={{\n rowIndex: index,\n columnIndex: columnOrder.indexOf(header.column.getIndex()),\n }}\n >\n {header.isPlaceholder ? null : (\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n gap={2}\n style={{\n width: \"100%\",\n }}\n >\n <Flex\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={headerContentAlign}\n gap={2}\n grow={1}\n style={{\n minWidth: 0,\n width: \"100%\",\n }}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getIsSorted() ? (\n <span\n style={{\n alignItems: \"center\",\n display: \"flex\",\n flexShrink: 0,\n }}\n >\n {{\n asc: <Icon svg={IconArrowUpward} size=\"small\" />,\n desc: <Icon svg={IconArrowDownward} size=\"small\" />,\n }[header.column.getIsSorted() as string] ?? null}\n </span>\n ) : null}\n </Flex>\n {header.column.columnDef.enableResizing && (\n <ResizeHandle\n header={header}\n onResizeStart={createResizeStartHandler(\n header.column.id,\n )}\n />\n )}\n </Flex>\n )}\n </DataTableHeaderCell>\n );\n })}\n </div>\n ))}\n </TableHeader>\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport styles from \"./TableContainer.module.scss\";\n\n/**\n * Props for the TableContainer component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TableContainerProps = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Styled container for tables that includes a scroll container and provides consistent background and border treatment\n * @param props - The props for the TableContainer component\n * @param props.children - The children of the TableContainer component\n * @param props.className - The class name of the TableContainer component\n * @param props.style - The style of the TableContainer component\n * @param props.ref - The ref of the TableContainer component\n */\nexport const TableContainer = forwardRef<HTMLDivElement, TableContainerProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const tableContainerClassNames = cx(className, styles[\"table-container\"]);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div\n style={styleCombined}\n ref={ref}\n {...rest}\n className={tableContainerClassNames}\n data-anv=\"table-container\"\n >\n <div\n className={styles[\"table-scroll-container\"]}\n data-anv=\"table-scroll-container\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nTableContainer.displayName = \"TableContainer\";\n","import { Pagination, PaginationProps } from \"../../../../..\";\n\nimport styles from \"./DataTablePagination.module.scss\";\n\nexport type DataTablePaginationProps = Pick<\n PaginationProps,\n | \"page\"\n | \"itemsPerPage\"\n | \"totalItemCount\"\n | \"showCount\"\n | \"onPageChange\"\n | \"onItemsPerPageChange\"\n | \"itemsPerPageOptions\"\n>;\n\nexport const DataTablePagination = ({\n showCount = true,\n ...props\n}: DataTablePaginationProps) => {\n return (\n <Pagination\n className={styles[\"pagination\"]}\n {...props}\n showCount={showCount}\n />\n );\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useAsyncData = <T,>(dataOrPromise: T | Promise<T>) => {\n const [resolvedData, setResolvedData] = useState<T | null>(null);\n const [error, setError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n async function resolveData() {\n if (dataOrPromise instanceof Promise) {\n setIsLoading(true);\n try {\n const data = await dataOrPromise;\n setResolvedData(data);\n setIsLoading(false);\n } catch (_error) {\n setError(true);\n setIsLoading(false);\n setResolvedData(null);\n }\n } else {\n setResolvedData(dataOrPromise);\n setIsLoading(false);\n }\n }\n resolveData();\n }, [dataOrPromise]);\n\n if (!(dataOrPromise instanceof Promise)) {\n return { data: dataOrPromise, error: false, isLoading: false };\n }\n\n return { data: resolvedData, error, isLoading };\n};\n","import { useCallback, useRef } from \"react\";\nimport type { TableRow } from \"../../types\";\nimport type { DataTableCacheOptions, SortedColumn } from \"../types\";\n\nconst DEFAULT_CACHE_MAX_SIZE = 15;\n\n/**\n * Hook for caching resolved page data in DataTable.\n *\n * Features:\n * - Caches resolved page data per page index using a Map stored in a ref\n * - Returns cached data synchronously on cache hit, avoiding unnecessary API calls\n * - Synchronously clears cache during render when invalidation triggers change\n * - Size-based eviction (FIFO) when cache exceeds maxSize: oldest entry is dropped to make room\n *\n * @param config - Configuration including loadPageData function, cache options, and invalidation triggers\n * @returns Object containing getOrLoad function and clearCache function\n */\nexport function usePageDataCache<T>(config: {\n loadPageData?: (params: {\n pageIndex: number;\n pageSize: number;\n sorting?: SortedColumn;\n }) => TableRow<T>[] | Promise<TableRow<T>[]>;\n cache?: DataTableCacheOptions;\n refreshKey?: string | number;\n refreshCounter: number;\n rowsPerPage: number;\n sorting?: SortedColumn;\n}): {\n getOrLoad: (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ) => TableRow<T>[] | Promise<TableRow<T>[]>;\n clearCache: () => void;\n} {\n const { loadPageData, cache: cacheConfig } = config;\n\n const cacheEnabled = cacheConfig?.enabled !== false;\n const cacheMaxSize = cacheConfig?.maxSize ?? DEFAULT_CACHE_MAX_SIZE;\n\n const pageCacheRef = useRef(new Map<number, TableRow<T>[]>());\n const loadPageDataRef = useRef(loadPageData);\n loadPageDataRef.current = loadPageData;\n\n // Generation counter to prevent stale in-flight promises from writing to the cache\n // after an invalidation has occurred. Incremented on every cache clear.\n const generationRef = useRef(0);\n\n // Synchronous cache invalidation during render:\n // Compare previous values of invalidation triggers and clear cache when any change.\n // This runs before useMemo in the consuming component, ensuring stale data is never returned.\n const prevRefreshKeyRef = useRef(config.refreshKey);\n const prevRefreshCounterRef = useRef(config.refreshCounter);\n const prevRowsPerPageRef = useRef(config.rowsPerPage);\n const prevSortingRef = useRef(config.sorting);\n\n if (\n prevRefreshKeyRef.current !== config.refreshKey ||\n prevRefreshCounterRef.current !== config.refreshCounter ||\n prevRowsPerPageRef.current !== config.rowsPerPage ||\n prevSortingRef.current?.id !== config.sorting?.id ||\n prevSortingRef.current?.desc !== config.sorting?.desc\n ) {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n prevRefreshKeyRef.current = config.refreshKey;\n prevRefreshCounterRef.current = config.refreshCounter;\n prevRowsPerPageRef.current = config.rowsPerPage;\n prevSortingRef.current = config.sorting;\n }\n\n const getOrLoad = useCallback(\n (\n pageIndex: number,\n pageSize: number,\n sorting?: SortedColumn,\n ): TableRow<T>[] | Promise<TableRow<T>[]> => {\n if (cacheEnabled) {\n const cached = pageCacheRef.current.get(pageIndex);\n if (cached) return cached;\n }\n\n const loader = loadPageDataRef.current;\n if (!loader) return [];\n\n const result = loader({ pageIndex, pageSize, sorting });\n\n if (!cacheEnabled) return result;\n\n // Capture the current generation so the promise callback can check\n // whether the cache was invalidated while the request was in-flight.\n const requestGeneration = generationRef.current;\n\n if (result instanceof Promise) {\n return result.then((data) => {\n if (generationRef.current !== requestGeneration) return data;\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, data);\n return data;\n });\n }\n\n const cache = pageCacheRef.current;\n if (cache.size >= cacheMaxSize) {\n const oldest = cache.keys().next().value;\n if (oldest != null) cache.delete(oldest);\n }\n cache.set(pageIndex, result);\n return result;\n },\n [cacheEnabled, cacheMaxSize],\n );\n\n const clearCache = useCallback(() => {\n pageCacheRef.current = new Map();\n generationRef.current += 1;\n }, []);\n\n return { getOrLoad, clearCache };\n}\n","/**\n * Scrolls a table cell into view, accounting for sticky headers/footers and pinned columns.\n * Used for keyboard navigation to ensure focused cells are visible.\n *\n * @param element - The cell element to scroll into view\n * @param stickyDimensions - The dimensions of pinned columns\n * @param stickyDimensions.leftWidth - Width of left-pinned columns\n * @param stickyDimensions.rightWidth - Width of right-pinned columns\n */\nexport function scrollCellIntoView(\n element: HTMLElement,\n stickyDimensions: { leftWidth: number; rightWidth: number },\n): void {\n const isBodyCell = element.getAttribute(\"data-anv\") === \"table-body-cell\";\n\n const scrollContainer = element.closest(\n '[data-anv=\"table-scroll-container\"]',\n ) as HTMLElement | null;\n\n if (!scrollContainer) return;\n\n const headerElement =\n scrollContainer.querySelectorAll('[role=\"rowgroup\"]')[0];\n const footerElement = scrollContainer\n .querySelector('[data-anv=\"table-footer-row\"]')\n ?.closest('[role=\"rowgroup\"]') as HTMLElement | undefined;\n\n const dimensions = {\n headerHeight: headerElement?.getBoundingClientRect().height ?? 0,\n footerHeight: footerElement?.getBoundingClientRect().height ?? 0,\n leftWidth: stickyDimensions.leftWidth,\n rightWidth: stickyDimensions.rightWidth,\n };\n\n const elementRect = element.getBoundingClientRect();\n const scrollContainerRect = scrollContainer.getBoundingClientRect();\n\n // Use clientWidth/clientHeight instead of bounding rect dimensions.\n // getBoundingClientRect includes scrollbars, but sticky elements position\n // relative to the content area which excludes scrollbars.\n const contentWidth = scrollContainer.clientWidth;\n const contentHeight = scrollContainer.clientHeight;\n\n // Calculate visible area (excluding sticky regions)\n const visibleLeft = scrollContainerRect.x + dimensions.leftWidth;\n const visibleRight =\n scrollContainerRect.x + contentWidth - dimensions.rightWidth;\n const visibleTop = scrollContainerRect.y + dimensions.headerHeight;\n const visibleBottom =\n scrollContainerRect.y + contentHeight - dimensions.footerHeight;\n\n // Check if element is fully visible within the non-sticky area\n const isFullyVisible =\n elementRect.x >= visibleLeft &&\n elementRect.x + elementRect.width <= visibleRight &&\n (isBodyCell\n ? elementRect.y >= visibleTop &&\n elementRect.y + elementRect.height <= visibleBottom\n : true);\n\n if (isFullyVisible) return;\n\n // Calculate scroll offsets\n const getScrollByLeft = (): number => {\n // Element is under left pinned columns - scroll left to bring left edge to visibleLeft\n if (elementRect.x < visibleLeft) {\n return elementRect.x - visibleLeft;\n }\n // Element is under right pinned columns - scroll right to bring right edge to visibleRight\n if (elementRect.x + elementRect.width > visibleRight) {\n return elementRect.x + elementRect.width - visibleRight;\n }\n return 0;\n };\n\n const getScrollByTop = (): number => {\n if (!isBodyCell) return 0;\n // Element is under header - scroll up to bring top of element to visibleTop\n if (elementRect.y < visibleTop) {\n return elementRect.y - visibleTop;\n }\n // Element is under footer - scroll down to bring bottom of element to visibleBottom\n if (elementRect.y + elementRect.height > visibleBottom) {\n return elementRect.y + elementRect.height - visibleBottom;\n }\n return 0;\n };\n\n const scrollLeft = getScrollByLeft();\n const scrollTop = getScrollByTop();\n\n if (scrollLeft !== 0 || scrollTop !== 0) {\n scrollContainer.scrollBy({\n left: scrollLeft,\n top: scrollTop,\n behavior: \"smooth\",\n });\n }\n}\n","import { useRef, useCallback, useMemo, useLayoutEffect } from \"react\";\nimport {\n DTFocusAction,\n DTFocusDispatchContext,\n DTFocusState,\n DTFocusStateContext,\n} from \"./DTFocusContext\";\nimport { CellPosition } from \"../../../../internal/types\";\nimport {\n areCellPositionsEqual,\n formatCellPositionString,\n} from \"../../util/cellPositionHelpers\";\nimport { scrollCellIntoView } from \"../../../../internal/scrollCellIntoView\";\nimport type { DataTableVirtualizer } from \"../../useDataTableVirtualizer\";\n\nconst initialState: DTFocusState = {\n focusedCell: null,\n focusRestorePoint: { rowIndex: 0, columnIndex: 0 },\n hasFocusBeenDisrupted: false,\n};\n\nfunction reducer(\n state: DTFocusState,\n action: DTFocusAction,\n rowCount: number,\n columnCount: number,\n): DTFocusState {\n switch (action.type) {\n case \"FOCUS_CELL_MANUALLY\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_CELL\": {\n return {\n ...state,\n focusedCell: action.payload.cellPosition,\n focusRestorePoint: action.payload.cellPosition,\n hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_TABLE\": {\n return {\n ...state,\n // Focus the focus restore point (i.e. the last focused cell when the table was blurred or 0,0 if never focused)\n focusedCell: state.focusRestorePoint,\n };\n }\n // Move to the next cell in the given direction\n case \"MOVE_FOCUS\": {\n let newFocusedCell: CellPosition;\n\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.max(0, currentColumnIndex - 1),\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: Math.min(columnCount - 1, currentColumnIndex + 1),\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: Math.max(0, currentRowIndex - 1),\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: Math.min(rowCount - 1, currentRowIndex + 1),\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n // Jump to the first/last cell in the given direction\n case \"JUMP_FOCUS\": {\n let newFocusedCell: CellPosition;\n const currentColumnIndex = state.focusedCell?.columnIndex ?? 0;\n const currentRowIndex = state.focusedCell?.rowIndex ?? 0;\n if (action.payload.direction === \"left\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: 0,\n };\n } else if (action.payload.direction === \"right\") {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: columnCount - 1,\n };\n } else if (action.payload.direction === \"up\") {\n newFocusedCell = {\n rowIndex: 0,\n columnIndex: currentColumnIndex,\n };\n } else if (action.payload.direction === \"down\") {\n newFocusedCell = {\n rowIndex: rowCount - 1,\n columnIndex: currentColumnIndex,\n };\n } else {\n newFocusedCell = {\n rowIndex: currentRowIndex,\n columnIndex: currentColumnIndex,\n };\n }\n return {\n ...state,\n focusedCell: newFocusedCell,\n };\n }\n case \"BLUR\": {\n return {\n ...state,\n focusedCell: null,\n focusRestorePoint: state.focusedCell ?? { columnIndex: 0, rowIndex: 0 },\n hasFocusBeenDisrupted: false,\n };\n }\n case \"FOCUS_SUB_COMPONENT\": {\n return {\n ...state,\n hasFocusBeenDisrupted: true,\n };\n }\n case \"BLUR_SUB_COMPONENT\": {\n // Meaningless action, but have it if we need it\n return {\n ...state,\n };\n }\n default: {\n throw new Error(\"Unknown action\");\n }\n }\n}\n\nexport interface DTFocusProviderProps {\n children: React.ReactNode;\n rowCount: number;\n columnCount: number;\n tableRef: React.RefObject<HTMLDivElement>;\n leftPinnedWidth: number;\n rightPinnedWidth: number;\n virtualizer?: DataTableVirtualizer;\n headerRowCount: number;\n}\n\nexport function DTFocusProvider({\n children,\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n virtualizer,\n headerRowCount,\n}: DTFocusProviderProps) {\n const stateRef = useRef<DTFocusState>(initialState);\n\n const lastTabbablePosRef = useRef<CellPosition | null>(null);\n\n const syncRovingTabindex = useCallback(() => {\n const restorePoint = stateRef.current.focusRestorePoint;\n const prev = lastTabbablePosRef.current;\n const nextEl = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(restorePoint)}\"]`,\n ) as HTMLElement | null;\n\n // If the restore point hasn't moved AND the target cell already has\n // tabIndex=0, nothing to do. Checking tabIndex on the element (not just\n // the ref position) handles remounted cells that appear at the same\n // data-cell-pos but with the default tabIndex=-1.\n const restorePointUnchanged =\n prev &&\n prev.rowIndex === restorePoint.rowIndex &&\n prev.columnIndex === restorePoint.columnIndex;\n if (restorePointUnchanged && nextEl?.tabIndex === 0) {\n return;\n }\n\n const prevEl =\n prev && !restorePointUnchanged\n ? (tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(prev)}\"]`,\n ) as HTMLElement | null)\n : null;\n if (prevEl) prevEl.tabIndex = -1;\n if (nextEl) nextEl.tabIndex = 0;\n lastTabbablePosRef.current = restorePoint;\n }, [tableRef]);\n\n // Write initial tabindex on mount and whenever the table's shape changes\n // (e.g., rows-per-page change remounts cells, pagination swaps the body).\n // The layout effect ensures the DOM is updated synchronously before paint.\n useLayoutEffect(() => {\n syncRovingTabindex();\n }, [syncRovingTabindex, rowCount, columnCount]);\n\n const dispatch = useCallback(\n (action: DTFocusAction) => {\n const newState = reducer(stateRef.current, action, rowCount, columnCount);\n let shouldSkipFocusUpdate = false;\n // If the focused cell is the same as the current focused cell, skip the update/focus\n if (\n areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n shouldSkipFocusUpdate = true;\n if (action.type === \"FOCUS_TABLE\" && newState.hasFocusBeenDisrupted) {\n shouldSkipFocusUpdate = false;\n }\n }\n stateRef.current = newState;\n syncRovingTabindex();\n\n // If there is no new cell to focus, skip focusing.\n if (!newState.focusedCell || shouldSkipFocusUpdate) {\n return;\n }\n\n const focusTargetCell = () => {\n if (!newState.focusedCell) return;\n // Skip stale rAF-deferred invocations: during sustained keyboard nav,\n // multiple dispatches can queue rAF callbacks before any of them run.\n // If a later dispatch has superseded this one, don't query/focus/fall\n // back for the old target — that would snap focus to (0,0) mid-scroll.\n if (\n !areCellPositionsEqual(\n newState.focusedCell,\n stateRef.current.focusedCell,\n )\n ) {\n return;\n }\n const element = tableRef.current?.querySelector(\n `[data-cell-pos=\"${formatCellPositionString(newState.focusedCell)}\"]`,\n ) as HTMLElement | null;\n\n if (element) {\n element.focus();\n scrollCellIntoView(element, {\n leftWidth: leftPinnedWidth,\n rightWidth: rightPinnedWidth,\n });\n } else {\n // Focus moved to a non-existent cell. This is possible if rows per page was reduced.\n dispatch({\n type: \"FOCUS_CELL_MANUALLY\",\n payload: { cellPosition: { rowIndex: 0, columnIndex: 0 } },\n });\n }\n };\n\n if (virtualizer && newState.focusedCell) {\n // Translate the focused cell's row index (which includes header rows)\n // into a body-row index for the virtualizer. Header rows\n // 0..headerRowCount-1 are always in the DOM — skip scrollToIndex for\n // those. Footer rows live past `rowCount` and also aren't virtualized,\n // so bound the index by the virtualizer's row count to avoid wasting\n // a frame of focus latency on a no-op scroll.\n const virtualRowIndex = newState.focusedCell.rowIndex - headerRowCount;\n const bodyRowCount = virtualizer.options.count;\n if (virtualRowIndex >= 0 && virtualRowIndex < bodyRowCount) {\n virtualizer.scrollToIndex(virtualRowIndex, { align: \"auto\" });\n // Defer focus to next frame so the virtualizer has a chance to render\n // the target row into the DOM.\n requestAnimationFrame(focusTargetCell);\n return;\n }\n }\n\n focusTargetCell();\n },\n [\n rowCount,\n columnCount,\n tableRef,\n leftPinnedWidth,\n rightPinnedWidth,\n syncRovingTabindex,\n virtualizer,\n headerRowCount,\n ],\n );\n\n const state = useMemo(\n () => ({ getFocusedCell: () => stateRef.current.focusedCell }),\n [],\n );\n\n return (\n <DTFocusStateContext.Provider value={state}>\n <DTFocusDispatchContext.Provider value={dispatch}>\n {children}\n </DTFocusDispatchContext.Provider>\n </DTFocusStateContext.Provider>\n );\n}\n","import { RefObject, useMemo } from \"react\";\nimport { useVirtualizer, Virtualizer } from \"@tanstack/react-virtual\";\n\n/**\n * Row count threshold at which row virtualization activates. Tables with fewer\n * than this many rows render all rows in the DOM (the pre-virtualization\n * behavior); tables with this many or more are virtualized.\n *\n * Set to 101 so tables with exactly 100 rows remain non-virtualized (and\n * therefore keep every row — including any editable cells — fully mounted).\n */\nexport const VIRTUALIZATION_THRESHOLD = 101;\n\n/**\n * Initial per-row height estimate used before measurement. Individual rows are\n * measured via `measureElement` and corrected after first paint, so this value\n * only affects the pre-measurement scroll range.\n */\nconst DEFAULT_ESTIMATED_ROW_HEIGHT = 35;\n\nexport type DataTableVirtualizer = Virtualizer<HTMLDivElement, HTMLDivElement>;\n\n/**\n * Create a TanStack virtualizer for DataTable body rows.\n *\n * Returns `undefined` when virtualization is disabled or when `rowCount` is\n * below `VIRTUALIZATION_THRESHOLD`, signaling to the body that rows should\n * render via the non-virtualized flat flow.\n *\n * @param rowCount Total number of body rows that would render if not virtualized.\n * @param scrollRef Ref to the scrollable container whose scroll position the virtualizer tracks.\n * @param disabled When `true`, virtualization is skipped regardless of row count.\n * @returns A `Virtualizer` instance when virtualization should run; `undefined` when the body should flat-render.\n */\nexport function useDataTableVirtualizer({\n rowCount,\n scrollRef,\n disabled,\n}: {\n rowCount: number;\n scrollRef: RefObject<HTMLDivElement>;\n disabled?: boolean;\n}): DataTableVirtualizer | undefined {\n const shouldVirtualize = !disabled && rowCount >= VIRTUALIZATION_THRESHOLD;\n\n const virtualizer = useVirtualizer<HTMLDivElement, HTMLDivElement>({\n count: shouldVirtualize ? rowCount : 0,\n // `scrollRef` points at the outer TableContainer div, which does not\n // itself scroll — the nested [data-anv=\"table-scroll-container\"] child\n // owns `overflow-y: auto`. Descend to that child so the virtualizer\n // tracks the right element. Fall back to `scrollRef.current` for\n // containers that one day collapse the scroll wrapper.\n getScrollElement: () => {\n const outer = scrollRef.current;\n if (!outer) return null;\n return (\n outer.querySelector<HTMLDivElement>(\n '[data-anv=\"table-scroll-container\"]',\n ) ?? outer\n );\n },\n estimateSize: () => DEFAULT_ESTIMATED_ROW_HEIGHT,\n overscan: 5,\n measureElement:\n typeof window !== \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.userAgent.indexOf(\"jsdom\") === -1\n ? (el) =>\n el?.getBoundingClientRect().height ?? DEFAULT_ESTIMATED_ROW_HEIGHT\n : undefined,\n });\n\n return useMemo(\n () => (shouldVirtualize ? virtualizer : undefined),\n [shouldVirtualize, virtualizer],\n );\n}\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n ColumnPinningState,\n RowSelectionState,\n TableOptions,\n ExpandedState,\n getExpandedRowModel,\n SortingState,\n} from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../../../types\";\nimport { useLayoutPropsUtil } from \"../../../../internal/hooks/useLayoutPropsUtil\";\n\nimport Checkbox from \"../../../../components/Checkbox\";\nimport Button from \"../../../../components/Button\";\nimport Flex from \"../../../../components/Flex\";\nimport ExpandIcon from \"../../../../../public/assets/icons/material/round/chevron_right.svg\";\n\nimport { ColumnDef, CustomTableFooterCellProps, TableRow } from \"../types\";\nimport { TableBase } from \"../base/TableBase\";\nimport { DataTableBody } from \"./internal/DataTableBody\";\nimport { DataTableFooter } from \"./internal/DataTableFooter\";\nimport { getTanStackColumnDef } from \"./internal/util/getTanStackColumnDef\";\nimport { shallowSortingEqual } from \"./internal/util/shallowSortingEqual\";\nimport { DataTableHeader } from \"./internal/DataTableHeader\";\nimport { TableContainer } from \"../base/TableContainer\";\nimport { DataTablePagination } from \"./internal/DataTablePagination\";\nimport { useOptionallyControlledState } from \"../../../../internal\";\nimport {\n DataTableCacheOptions,\n DataTableEmptyState,\n DataTablePaginationConfig,\n DataTableRef,\n SortedColumn,\n} from \"./types\";\n\nexport type {\n DataTableCacheOptions,\n DataTableRef,\n DataTableEmptyState,\n SortedColumn,\n};\n\nimport styles from \"./DataTable.module.scss\";\nimport { Spinner, SrOnly } from \"../../../../components\";\nimport { usePrefersColorScheme } from \"../../../../hooks\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useAsyncData } from \"./internal/useAsyncData\";\nimport { usePageDataCache } from \"./internal/usePageDataCache\";\nimport { DTFocusProvider } from \"./internal/context/focus/DTFocusProvider\";\nimport {\n INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n} from \"./internal/constants\";\nimport { CellStatus } from \"./internal/cells/CellStatus\";\nimport { useDataTableVirtualizer } from \"./internal/useDataTableVirtualizer\";\n\nconst EMPTY_DATA: never[] = [];\n\ntype DataTableCellValue =\n | object\n | string\n | number\n | boolean\n | bigint\n | symbol\n | null\n | undefined;\n\nexport type DataTableRowData = Record<PropertyKey, DataTableCellValue>;\n\n/**\n * Props for the DataTable component\n * @extends LayoutUtilProps\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DataTableProps<T extends DataTableRowData> = LayoutUtilProps &\n ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The columns for the table, created with the `createColumnHelper` factory function.\n */\n columns: ColumnDef<T>[];\n /**\n * The custom footer content for the table. Will be overridden by the footer content of the columns.\n */\n customFooter?: CustomTableFooterCellProps[][];\n /**\n * The data for the table. Must be an array of objects with an `id` property.\n */\n data?: TableRow<T>[] | Promise<TableRow<T>[]>;\n /**\n * The default expanded row ids. Can be \"all\" to expand all rows, or an array of row ids to expand specific rows.\n */\n defaultExpandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Disables the \"expand all\" action in the table header.\n * When true, users can only expand individual rows.\n * @default false\n */\n disableExpandAll?: boolean;\n /**\n * The default selected row ids.\n */\n defaultSelectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The default sorted column.\n */\n defaultSortedColumn?: SortedColumn;\n /**\n * The expanded row ids.\n */\n expandedRowIds?: \"all\" | TableRow<T>[\"id\"][];\n /**\n * Disables the \"select all\" action in the table header.\n * When true, users can only select individual rows.\n * @default false\n */\n disableSelectAll?: boolean;\n /**\n * Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @default false\n */\n isSelectable?: boolean | ((row: T) => boolean);\n /**\n * Called when the row expansion state changes. Passes the expanded row ids.\n */\n onExpandRow?: (expandedRowIds: \"all\" | TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the row selection state changes. Passes the selected row ids.\n */\n onSelectRow?: (selectedRowIds: TableRow<T>[\"id\"][]) => void;\n /**\n * Called when the column sorting state changes. Passes the sorted column.\n */\n onSort?: (sortedColumn: SortedColumn | undefined) => void;\n /**\n * Pagination configuration. When provided, enables pagination and filters data to show only the current page.\n * When `true`, the default pagination configuration is used.\n * When `false` or `undefined`, no pagination is applied and all data is shown.\n */\n pagination?: boolean | DataTablePaginationConfig<T>;\n /**\n * The selected row ids.\n */\n selectedRowIds?: TableRow<T>[\"id\"][];\n /**\n * The sorted column.\n */\n sortedColumn?: SortedColumn;\n /**\n * Configuration for the empty state displayed when the table has no data.\n * Only shown when data is empty and the table is not loading.\n */\n emptyState?: DataTableEmptyState;\n /**\n * Custom content to display when a cell value is empty (null, undefined, or empty string).\n * Overrides the default em dash for all columns. Individual columns can further override\n * this with their own `emptyCellContent` property.\n */\n emptyCellContent?: ReactNode;\n /**\n * Disables row virtualization. By default, tables with 101 or more rows\n * virtualize their body to keep DOM size bounded; set this to `true` to\n * render every row in the DOM regardless of count. Intended as an escape\n * hatch for rollout safety and for flows that need every row mounted\n * (e.g., find-in-page, certain print or export paths).\n * @default false\n */\n disableVirtualization?: boolean;\n /**\n * Optional function that returns a value signaling whether a row has\n * changed since the last render. When supplied, each row is memoized:\n * a row will only re-render when the returned value differs, or when\n * table-managed row state (selection, expansion, etc.) changes.\n * When omitted, every row re-renders whenever the DataTable re-renders.\n *\n * Consumers should bake anything outside the row's own data that\n * affects cell rendering into the version value (e.g.\n * `` `${row.updatedAt}-${highlightedId}` ``), otherwise cells may\n * appear stale when external state changes.\n */\n getRowVersion?: (row: T) => unknown;\n };\n\nfunction DataTableInner<T extends DataTableRowData>(\n props: DataTableProps<T>,\n ref: Ref<DataTableRef>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n data: dataProp,\n columns: columnsProp,\n customFooter,\n defaultExpandedRowIds,\n defaultSelectedRowIds,\n defaultSortedColumn,\n disableExpandAll,\n disableSelectAll,\n expandedRowIds,\n isSelectable,\n onSelectRow,\n onSort,\n onExpandRow,\n pagination,\n selectedRowIds,\n sortedColumn,\n emptyState,\n emptyCellContent,\n disableVirtualization,\n getRowVersion,\n className,\n style,\n ...rest\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const tableRef = useRef<HTMLDivElement>(null);\n\n const [rowSelection, setRowSelection] =\n useOptionallyControlledState<RowSelectionState>({\n controlledValue:\n isSelectable && selectedRowIds\n ? Object.fromEntries(selectedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isSelectable\n ? defaultSelectedRowIds\n ? Object.fromEntries(defaultSelectedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newRowSelection) => {\n onSelectRow?.(Object.keys(newRowSelection) as TableRow<T>[\"id\"][]);\n },\n });\n\n const [sorting, setSorting] = useOptionallyControlledState<SortingState>({\n controlledValue: sortedColumn ? [sortedColumn] : undefined,\n defaultValue: defaultSortedColumn ? [defaultSortedColumn] : undefined,\n onChange: (newSorting) => {\n onSort?.(newSorting[0]);\n },\n });\n\n const isPaginated = !!pagination;\n const paginationObject =\n typeof pagination === \"object\" ? pagination : undefined;\n const rowsPerPage = paginationObject?.rowsPerPage ?? 25;\n const refreshKey = paginationObject?.refreshKey;\n\n const [currentPageIndex, setCurrentPageIndex] =\n useOptionallyControlledState<number>({\n controlledValue: paginationObject?.currentPageIndex,\n defaultValue: paginationObject?.defaultPageIndex ?? 0,\n onChange: (newPageIndex) => {\n paginationObject?.onPageChange?.(newPageIndex);\n },\n });\n\n const [refreshCounter, setRefreshCounter] = useState(0);\n\n const pageLoader = paginationObject?.loadPageData;\n const isAsyncPaginated = !!pageLoader && typeof pageLoader === \"function\";\n\n const { getOrLoad, clearCache } = usePageDataCache<T>({\n loadPageData: pageLoader,\n cache: paginationObject?.cache,\n refreshKey,\n refreshCounter,\n rowsPerPage,\n sorting: sorting?.[0],\n });\n\n useImperativeHandle(\n ref,\n () => ({\n refresh: () => {\n setRefreshCounter((c) => c + 1);\n setCurrentPageIndex(0);\n },\n clearCache,\n }),\n [setCurrentPageIndex, clearCache],\n );\n\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n // Skip reset on initial render\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n // Reset to page 0 when refreshKey changes\n if (refreshKey !== undefined) {\n setCurrentPageIndex(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- setCurrentPageIndex excluded to prevent reset on every page change\n }, [refreshKey]);\n\n const dataSource = useMemo(() => {\n if (!isAsyncPaginated) {\n return dataProp;\n }\n\n return getOrLoad(currentPageIndex ?? 0, rowsPerPage, sorting?.[0]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pageLoader omitted intentionally\n }, [\n isAsyncPaginated,\n currentPageIndex,\n rowsPerPage,\n dataProp,\n refreshKey,\n refreshCounter,\n getOrLoad,\n sorting,\n ]);\n\n const {\n data: resolvedData,\n //TODO: Table should represent error state\n error: _error,\n isLoading,\n } = useAsyncData(dataSource);\n const totalItemCount =\n paginationObject?.totalRowCount ?? resolvedData?.length ?? 0;\n\n const hasSubRows = useMemo(\n () => !!resolvedData?.some((row) => (row?.subRows?.length ?? 0) > 0),\n [resolvedData],\n );\n const hasSubComponent = useMemo(\n () => !!resolvedData?.some((row) => row?.subComponent != null),\n [resolvedData],\n );\n const isExpandable = hasSubRows || hasSubComponent;\n\n const [expanded, setExpanded] = useOptionallyControlledState<ExpandedState>({\n controlledValue:\n isExpandable && expandedRowIds\n ? expandedRowIds === \"all\"\n ? true\n : Object.fromEntries(expandedRowIds.map((id) => [id, true]))\n : undefined,\n defaultValue: isExpandable\n ? defaultExpandedRowIds\n ? defaultExpandedRowIds === \"all\"\n ? true\n : Object.fromEntries(defaultExpandedRowIds.map((id) => [id, true]))\n : {}\n : {},\n onChange: (newExpanded) => {\n if (newExpanded === true) {\n onExpandRow?.(\"all\");\n } else {\n onExpandRow?.(Object.keys(newExpanded) as TableRow<T>[\"id\"][]);\n }\n },\n });\n\n // Full data passed to TanStack — getPaginationRowModel slices after sorting.\n const tableData = isLoading ? EMPTY_DATA : resolvedData;\n\n // Check if any row has a row-level error or warning\n const hasRowStatus = useMemo(() => {\n return tableData?.some((row) => {\n const meta = (row as TableRow<T>).meta;\n return meta?.rowError || meta?.rowWarning;\n });\n }, [tableData]);\n\n // Calculate column pinning state (including select/expand/row-error columns if needed)\n const columnPinning = useMemo((): ColumnPinningState => {\n const { left, right } = {\n left: columnsProp\n .filter((column) => column.pinned === \"left\")\n .map((c) => String(c.id)),\n right: columnsProp\n .filter((column) => column.pinned === \"right\")\n .map((c) => String(c.id)),\n };\n\n // If any are pinned left, we want to also pin select/expand/row-status columns\n const hasInternalColumns = isSelectable || isExpandable || hasRowStatus;\n const standardPinnedColumns = [];\n if (isSelectable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID);\n }\n if (isExpandable) {\n standardPinnedColumns.push(INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID);\n }\n if (hasRowStatus) {\n standardPinnedColumns.push(\"a2-table-internal-row-status\");\n }\n\n return {\n left:\n hasInternalColumns && left && left.length > 0\n ? [...standardPinnedColumns, ...left]\n : (left ?? []),\n right: right ?? [],\n };\n }, [columnsProp, hasRowStatus, isSelectable, isExpandable]);\n\n // Build columns for TanStack useReactTable\n const columns = useMemo(() => {\n const tableColumns: TableOptions<T>[\"columns\"] = columnsProp.map((column) =>\n getTanStackColumnDef({\n columnDef: column,\n emptyCellContent,\n }),\n );\n\n // Add row status column if any row has a row-level error or warning\n // This goes after expand/select columns but before data columns\n if (hasRowStatus) {\n tableColumns.unshift({\n id: \"a2-table-internal-row-status\",\n size: 32,\n maxSize: 32,\n minSize: 32,\n header: () => null,\n cell: ({ row }) => {\n const meta = (row.original as TableRow<T>).meta;\n const rowError = meta?.rowError;\n const rowWarning = meta?.rowWarning;\n if (rowError) return <CellStatus status={rowError} variant=\"error\" />;\n if (rowWarning)\n return <CellStatus status={rowWarning} variant=\"warning\" />;\n return null;\n },\n });\n }\n\n // Add expand column if subRows are present\n if (isExpandable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_PRIMARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableExpandAll },\n header: ({ table }) => {\n if (disableExpandAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Button\n tabIndex={-1}\n onClick={table.getToggleAllRowsExpandedHandler()}\n appearance=\"ghost\"\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: table.getIsAllRowsExpanded(),\n })}\n size=\"small\"\n icon={ExpandIcon}\n aria-label={\n table.getIsAllRowsExpanded()\n ? \"Collapse all rows\"\n : \"Expand all rows\"\n }\n data-cell-action=\"expand\"\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n if (row.getCanExpand()) {\n return (\n <Button\n tabIndex={-1}\n onClick={row.getToggleExpandedHandler()}\n appearance=\"ghost\"\n size=\"small\"\n icon={ExpandIcon}\n className={cx(styles[\"expand-button\"], {\n [styles[\"expanded\"]]: row.getIsExpanded(),\n })}\n aria-label={row.getIsExpanded() ? \"Collapse row\" : \"Expand row\"}\n aria-expanded={\n hasSubComponent && row.getCanExpand()\n ? row.getIsExpanded()\n : undefined\n }\n aria-controls={\n hasSubComponent && row.getCanExpand()\n ? `${row.id}-sub-component`\n : undefined\n }\n data-cell-action=\"expand\"\n />\n );\n // show a checkbox for nested rows if isSelectable is true\n } else if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return (\n <Checkbox\n tabIndex={-1}\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n }\n },\n });\n }\n\n // Add select column if isSelectable is true\n if (isSelectable) {\n tableColumns.unshift({\n id: INTERNAL_ROW_ACTION_SECONDARY_COLUMN_ID,\n size: 44,\n maxSize: 44,\n minSize: 44,\n meta: { disableHeaderAction: disableSelectAll },\n header: ({ table }) => {\n if (disableSelectAll) return null;\n return (\n <Flex grow={1} justifyContent=\"center\">\n <Checkbox\n tabIndex={-1}\n aria-label={\n table.getIsAllPageRowsSelected()\n ? \"Deselect all rows\"\n : \"Select all rows\"\n }\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={table.getToggleAllPageRowsSelectedHandler()}\n data-cell-action=\"select\"\n />\n </Flex>\n );\n },\n cell: ({ row }) => {\n if (row.getParentRow()?.getCanExpand() && isSelectable) {\n return null;\n }\n return (\n <Checkbox\n tabIndex={-1}\n aria-label={row.getIsSelected() ? \"Deselect row\" : \"Select row\"}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n data-cell-action=\"select\"\n />\n );\n },\n });\n }\n\n return tableColumns;\n }, [\n columnsProp,\n disableExpandAll,\n disableSelectAll,\n emptyCellContent,\n hasRowStatus,\n hasSubComponent,\n isExpandable,\n isSelectable,\n ]);\n\n const table = useReactTable({\n data: tableData ?? [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n ...(isPaginated && { getPaginationRowModel: getPaginationRowModel() }),\n ...(isExpandable && { getExpandedRowModel: getExpandedRowModel() }),\n // Grouping row model is retained for future use; cheap to exclude now.\n getRowId: (row) => (row as TableRow<T>).id.toString(),\n getSubRows: (row) => (row as TableRow<T>).subRows ?? undefined,\n getRowCanExpand: (row) => {\n const originalRow = row.original as TableRow<T>;\n return (\n (originalRow?.subRows?.length ?? 0) > 0 ||\n originalRow?.subComponent != null\n );\n },\n state: {\n columnPinning,\n rowSelection,\n expanded,\n sorting,\n ...(isPaginated && {\n pagination: {\n pageIndex: currentPageIndex ?? 0,\n pageSize: rowsPerPage,\n },\n }),\n },\n manualPagination: !isPaginated || isAsyncPaginated,\n // Server provides sorted data via loadPageData; disable client-side sort.\n manualSorting: isAsyncPaginated,\n autoResetPageIndex: false,\n columnResizeMode: \"onChange\",\n enableRowSelection:\n typeof isSelectable === \"function\"\n ? (row) => isSelectable(row.original)\n : isSelectable,\n onRowSelectionChange: (newRowSelection) => {\n setRowSelection(newRowSelection as RowSelectionState);\n },\n onExpandedChange: (newExpanded) => {\n setExpanded(newExpanded as ExpandedState);\n },\n onSortingChange: (updaterOrValue) => {\n const newSorting =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(sorting)\n : updaterOrValue;\n\n if (shallowSortingEqual(newSorting, sorting ?? [])) {\n return;\n }\n\n setSorting(newSorting);\n if (isPaginated) {\n setCurrentPageIndex(0);\n }\n },\n });\n\n const rowVirtualizer = useDataTableVirtualizer({\n rowCount: table.getRowModel().rows.length,\n scrollRef: tableRef,\n disabled: disableVirtualization,\n });\n\n const headers = table.getFlatHeaders();\n const headerRowCount = table.getHeaderGroups().length;\n const bodyRowCount = table.getRowModel().rows.length;\n const columnSizing = table.getState().columnSizing;\n\n const getMaxFooterRows = useCallback((column: ColumnDef<T>): number => {\n let currentMax = 0;\n\n // Check current column's footer content\n if (Array.isArray(column.footerContent)) {\n currentMax = column.footerContent.length;\n } else if (column.footerContent) {\n currentMax = 1;\n }\n\n // Recursively check nested columns and find the maximum\n if (column.columns && Array.isArray(column.columns)) {\n const nestedMax = Math.max(\n ...column.columns.map((nestedCol) => getMaxFooterRows(nestedCol)),\n 0,\n );\n currentMax = Math.max(currentMax, nestedMax);\n }\n\n return currentMax;\n }, []);\n\n const footerLength = useMemo(() => {\n return Math.max(\n ...columnsProp.map((column) => getMaxFooterRows(column)),\n 0,\n );\n }, [columnsProp, getMaxFooterRows]);\n\n const hasFooters =\n footerLength > 0 || (customFooter !== undefined && customFooter.length > 0);\n\n const rowCount = useMemo(\n () => bodyRowCount + headerRowCount + footerLength,\n [bodyRowCount, headerRowCount, footerLength],\n );\n\n const isEmpty = !isLoading && (!tableData || tableData.length === 0);\n\n const { mode: themeMode } = useContext(ThemeProviderContext);\n const { mode: sysMode } = usePrefersColorScheme();\n const colorSchemeMode = themeMode ?? sysMode;\n\n const EmptyStateSvg = (() => {\n const svg = emptyState?.svg;\n if (!svg) return undefined;\n if (typeof svg === \"function\") return svg;\n return colorSchemeMode === \"dark\"\n ? (svg.dark ?? svg.light)\n : (svg.light ?? svg.dark);\n })();\n\n /**\n * Create CSS variables for the column sizes and grid template\n */\n const cssVars = useMemo(() => {\n const vars: { [key: string]: number | string } = {};\n\n // Get leaf columns (non-grouped) in visual order\n const leafHeaders = headers.filter(\n (header) => header.subHeaders?.length === 0,\n );\n\n // Check if all columns have maxWidth defined\n const allHaveMaxWidth = leafHeaders.every(\n (header) => header.column.columnDef.maxSize != null,\n );\n\n // Build grid-template-columns from leaf column sizes using minmax()\n // Columns expand to fill available space up to their maxWidth\n const gridColumns = leafHeaders\n .map((header) => {\n const columnId = header.column.id;\n const hasBeenResized = columnId in columnSizing;\n const currentSize = header.column.getSize();\n\n // If user has manually resized this column, lock it to that size\n if (hasBeenResized) {\n return `${currentSize}px`;\n }\n\n // Pinned columns render at a fixed width equal to their configured\n // `size`. Sticky `left`/`right` offsets (computed from TanStack's\n // `column.getStart` / `getAfter`, which sum configured sizes) must\n // match actual rendered widths, or subsequent pinned columns leave\n // a gap between them — see ANV-4802. Locking pinned columns to a\n // fixed track eliminates the gap at the source and keeps pinned\n // widths stable regardless of available horizontal space.\n if (header.column.getIsPinned()) {\n return `${currentSize}px`;\n }\n\n // Otherwise, use `getSize()` (which reflects `defaultWidth`, falling\n // back to `minWidth`, then TanStack's default) as the auto-sizing\n // basis. Columns grow up to `maxWidth` when space allows and never\n // auto-shrink below the basis — when the table is too narrow to fit\n // all columns, it scrolls horizontally instead.\n const maxSize = header.column.columnDef.maxSize;\n return `minmax(${currentSize}px, ${maxSize ? `${maxSize}px` : \"1fr\"})`;\n })\n .join(\" \");\n vars[\"--a2-grid-template-columns\"] = gridColumns;\n\n // Set table width: 100% if any column can expand (no maxWidth), otherwise auto\n vars[\"--a2-table-width\"] = allHaveMaxWidth ? \"max-content\" : \"100%\";\n\n return vars;\n }, [headers, columnSizing]);\n\n const columnCount = useMemo(() => {\n // don't count grouped column header cells\n return headers.filter((header) => header.subHeaders?.length === 0).length;\n }, [headers]);\n\n return (\n <DTFocusProvider\n rowCount={rowCount}\n columnCount={columnCount}\n tableRef={tableRef}\n leftPinnedWidth={table.getLeftTotalSize()}\n rightPinnedWidth={table.getRightTotalSize()}\n virtualizer={rowVirtualizer}\n headerRowCount={headerRowCount}\n >\n <TableContainer\n {...rest}\n ref={tableRef}\n style={{\n ...styleCombined,\n width: cssVars[\"--a2-table-width\"],\n }}\n className={cx(className, {\n [styles[\"container-with-pagination\"]]: pagination,\n })}\n >\n <TableBase\n type=\"data-table\"\n style={cssVars}\n rowCount={rowCount}\n colCount={columnCount}\n hasSubRows={hasSubRows}\n >\n <DataTableHeader table={table} tableRef={tableRef} />\n <DataTableBody\n table={table}\n hasSubRows={hasSubRows}\n virtualizer={rowVirtualizer}\n getRowVersion={getRowVersion}\n />\n {isEmpty && emptyState && (\n <>\n <SrOnly>No data to display.</SrOnly>\n <div className={styles[\"empty-state-container\"]}>\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n direction=\"column\"\n gap={2}\n >\n {EmptyStateSvg && <EmptyStateSvg aria-hidden=\"true\" />}\n {emptyState.content}\n </Flex>\n </div>\n </>\n )}\n {isLoading && (\n <>\n <SrOnly>Loading data. Please wait.</SrOnly>\n {/* Visual spacer to avoid collapsing the table body area */}\n <div\n style={{\n height: rowsPerPage ? `${rowsPerPage * 35}px` : \"200px\",\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: \"auto\",\n zIndex: 3,\n }}\n >\n <Spinner />\n </Flex>\n </div>\n </>\n )}\n {hasFooters && (\n <DataTableFooter\n className={\n pagination ? styles[\"footer-with-pagination\"] : undefined\n }\n table={table}\n columns={columnsProp}\n customFooter={customFooter}\n />\n )}\n </TableBase>\n {pagination && (\n <DataTablePagination\n itemsPerPage={rowsPerPage}\n showCount={paginationObject?.showCount ?? true}\n page={(currentPageIndex ?? 0) + 1}\n totalItemCount={totalItemCount}\n onPageChange={(page) => {\n setCurrentPageIndex(page - 1);\n }}\n onItemsPerPageChange={(itemsPerPage) => {\n paginationObject?.onRowsPerPageChange?.(itemsPerPage);\n }}\n itemsPerPageOptions={paginationObject?.rowsPerPageOptions}\n />\n )}\n </TableContainer>\n </DTFocusProvider>\n );\n}\n\n/**\n * Data table component for complex data grid layouts\n *\n * Features:\n * - Built-in focus management for accessibility\n * - Column resizing\n * - Column pinning\n * - Column grouping\n * - Controlled or uncontrolled column sorting\n * - Row selection\n * - Row expansion\n * - Row sub-component\n * - Row sub-rows\n * - Default and Strong backgrounds\n * - Pagination support with configurable items per page\n * - Imperative refresh via ref\n * - Customizable empty state with optional SVG illustration and content\n *\n * @param props - The props for the DataTable component\n * @param props.data - The data for the table. Must be an array of objects with an `id` property.\n * @param props.columns - The columns for the table, created with the `createColumnHelper` factory function.\n * @param props.customFooter - The custom footer content for the table. Will be overridden by the footer content of the columns.\n * @param props.defaultExpandedRowIds - The default expanded row ids.\n * @param props.defaultSelectedRowIds - The default selected row ids.\n * @param props.defaultSortedColumn - The default sorted column.\n * @param props.expandedRowIds - The expanded row ids.\n * @param props.isSelectable - Whether the table is selectable. Can be a boolean or a function to customize the selection logic.\n * @param props.onSelectRow - Called when the row selection state changes. Passes the selected row ids.\n * @param props.onSort - Called when the column sorting state changes. Passes the sorted column.\n * @param props.onExpandRow - Called when the row expansion state changes. Passes the expanded row ids.\n * @param props.pagination - Pagination configuration. When provided, enables pagination and filters data to show only the current page. When undefined, all data is shown and no pagination controls are rendered.\n * @param props.selectedRowIds - The selected row ids.\n * @param props.sortedColumn - The sorted column.\n * @param props.emptyState - Configuration for the empty state displayed when the table has no data.\n * @param props.style - The style of the table container.\n * @param props.rest - The rest of the props for the DataTable component, spread to the div surrounding the table.\n *\n * @example\n * <DataTable\n * data={tableData}\n * columns={columns}\n * pagination={{\n * itemsPerPage: 25,\n * defaultPageIndex: 0,\n * onPageChange: (pageIndex) => console.log('Page changed to:', pageIndex),\n * showCount: true,\n * }}\n * />\n */\ntype DataTableComponent = <T extends DataTableRowData>(\n props: DataTableProps<T> & { ref?: Ref<DataTableRef> },\n) => ReturnType<typeof DataTableInner>;\n\nexport const DataTable = forwardRef(DataTableInner) as DataTableComponent;\n"],"names":["styles","createColumnHelper","EditIcon","baseTableCellStyles","dataTableCellStyles","Fragment","memo","ErrorIcon","WarningIcon","cellContentStyles","IconArrowUpward","IconArrowDownward","cache","table","ExpandIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,EAAE,SAAA,GAAY,QAAQ,UAAA,GAAa,OAAA,EAAQ,GAA6B,EAAC,KACtE;AACH,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,QAAQ,SAAA,GAAY,UAAA;AAC7B;;;;;;;;;;;;;;;;ACzBO,MAAM,wBAAwB,MAAM;AACzC,EAAA,uBACE,GAAA,CAAC,UAAK,YAAA,EAAW,kBAAA,EAAmB,WAAWA,QAAA,CAAO,YAAY,GAAG,QAAA,EAAA,GAAA,EAErE,CAAA;AAEJ,CAAA;;;;;;AC2BO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAQ,EAAC;AAAA,EACT,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,iBAAA,GAAoB,OAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,MAAA,CAA6C,EAAE,CAAA;AACnE,EAAA,MAAM,WAAA,GAAc,OAAwB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,CAAC,CAAA;AAEpD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,kBAAkB,OAAA,EAAS;AAChC,IAAA,IAAI,gBAAA,GAAmB,CAAA;AACvB,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,OAAA,KAAY;AACX,QAAA,MAAM,aAAa,QAAA,CAAS,aAAA;AAAA,UAC1B;AAAA,SACF;AACA,QAAA,IAAI,UAAA,EAAY;AAGhB,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,UAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AAErB,UAAA,IAAI,MAAM,cAAA,EAAgB;AAExB,YAAA,MAAA,CAAO,MAAM,OAAA,GAAU,MAAA;AACvB,YAAA,MAAA,CAAO,MAAM,UAAA,GAAa,SAAA;AAC1B,YAAA,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,gBAAA,GAAmB,CAAC,CAAA;AAAA,UACrD;AAEA,UAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAEzB,YAAA,WAAA,CAAY,QAAQ,IAAA,CAAK;AAAA,cACvB,EAAA,EAAI,MAAA;AAAA,cACJ,IAAA,EAAM,OAAO,qBAAA;AAAsB,aACpC,CAAA;AACD,YAAA,MAAA,CAAO,MAAM,UAAA,GAAa,QAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,OAAA,GAAU,MAAA;AACvB,YAAA,gBAAA,EAAA;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAED,QAAA,cAAA,CAAe,gBAAgB,CAAA;AAAA,MACjC,CAAA;AAAA,MACA;AAAA,QACE,MAAM,YAAA,CAAa,OAAA;AAAA,QACnB,UAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW;AAAA;AACb,KACF;AAEA,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,iBAAA,CAAkB,QAAQ,QAAQ,CAAA;AAC9D,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1B,MAAA,QAAA,CAAS,QAAQ,KAAoB,CAAA;AAAA,IACvC,CAAC,CAAA;AAGD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,CAAC,OAAA,KAAY;AAC/C,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA;AACxC,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAI,WAAA,GAAc,CAAA,IAAK,YAAA,CAAa,OAAA,EAAS;AAC3C,UAAA,MAAM,YAAA,GAAe,WAAA,CAAY,OAAA,EAAS,qBAAA,EAAsB;AAChE,UAAA,gBAAA,CAAiB,YAAA,EAAc,SAAS,CAAC,CAAA;AACzC,UAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACjE,UAAA,MAAM,WACJ,WAAA,CAAY,OAAA,CAAQ,YAAY,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA;AAEtD,UAAA,MAAM,gBAAA,GACJ,QAAA,CAAS,KAAA,IAAS,aAAA,CAAc,KAAA,IAChC,QAAA,CAAS,IAAA,IAAQ,aAAA,CAAc,IAAA,IAC/B,QAAA,CAAS,KAAA,IAAS,aAAA,CAAc,KAAA;AAElC,UAAA,MAAM,cAAA,GACJ,QAAA,CAAS,MAAA,IAAU,aAAA,CAAc,MAAA,IACjC,QAAA,CAAS,GAAA,IAAO,aAAA,CAAc,GAAA,IAC9B,QAAA,CAAS,MAAA,IAAU,aAAA,CAAc,MAAA;AAEnC,UAAA,MAAM,iBAAiB,gBAAA,IAAoB,cAAA;AAE3C,UAAA,WAAA,CAAY,OAAA,CAAQ,cAAc,CAAC,CAAA,CAAE,GAAG,KAAA,CAAM,OAAA,GAAU,iBACpD,MAAA,GACA,MAAA;AAEJ,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,WAAA,CAAY,QAAQ,GAAA,EAAI;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,OAAO,CAAA;AAErC,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,gBAAgB,GAAG,SAAS,CAAA;AAAA,MACjD,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB;AAAA,OACnB;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,iBAAA,EAAmB,KAAA,EAAO,EAAE,SAAS,UAAA,EAAW,EAEvD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChB,GAAA,CAAC,IAAA,EAAA,EAAkB,GAAG,IAAA,EAAM,KAAA,EAAO,EAAE,YAAY,QAAA,EAAS,EAAA,EAA/C,KAAkD,CAC9D,CAAA,EACH,CAAA;AAAA,QAGC,WAAA,GAAc,qBAAK,GAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,GAAA,EAAK,WAAA,EAAa;AAAA;AAAA;AAAA,GACxE;AAEJ,CAAA;;AC3IO,MAAM,cAAA,GAAiB,CAC5B,KAAA,EACA,EAAE,eAAc,GAA2B,EAAE,aAAA,EAAe,KAAA,EAAM,KAC/D;AACH,EAAA,IAAI,CAAC,KAAA,EAAO,uBAAO,GAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA;AAE1C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,2BAAQ,qBAAA,EAAA,EAAsB,CAAA;AAAA,IAChC;AAEA,IAAA,MAAM,gBAAgB,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,KAAM,OAAO,MAAM,QAAQ,CAAA;AAC9D,IAAA,MAAM,KAAA,GAAQ,aAAA,GACV,KAAA,CAAM,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA,GAC9B,KAAA;AAEL,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,uBAAO,GAAA,CAAC,iBAAc,KAAA,EAAc,CAAA;AAAA,IACtC;AAEA,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,GAAA,EAAI,KAAI,IAAA,EAAK,MAAA,EAChC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChB,GAAA,CAAC,IAAA,EAAA,EAAqC,GAAG,IAAA,EAAA,EAA9B,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAc,CAChD,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,EAC7B;AAEA,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAC1B;;ACtCO,MAAM,iBAAA,GAAoB,CAC/B,KAAA,EACA,OAAA,GAAoC,EAAC,KAClC;AACH,EAAA,MAAM,EAAE,MAAA,GAAS,OAAA,EAAS,QAAA,GAAW,OAAM,GAAI,OAAA;AAE/C,EAAA,OAAO,KAAA,IAAS,IAAA,GACZ,KAAA,CAAM,cAAA,CAAe,MAAA,EAAQ;AAAA,IAC3B,KAAA,EAAO,UAAA;AAAA,IACP;AAAA,GACD,CAAA,GACD,IAAA;AACN;;ACrBO,MAAM,iBAAA,GAGT;AAAA,EACF,OAAO,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,SAAA,EAAW,KAAK,SAAA,EAAU;AAAA,EAC3D,QAAQ,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,OAAA,EAAS,KAAK,SAAA,EAAU;AAAA,EAC1D,MAAM,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,MAAA,EAAQ,KAAK,SAAA,EAAU;AAAA,EACvD,IAAA,EAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAM,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,SAAA;AAChE;AAKO,MAAM,iBAAA,GAGT;AAAA,EACF,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,QAAQ,SAAA,EAAU;AAAA,EAC5C,QAAQ,EAAE,IAAA,EAAM,WAAW,MAAA,EAAQ,SAAA,EAAW,QAAQ,SAAA;AACxD;;ACKO,MAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,EAAE,MAAA,GAAS,SAAS,MAAA,GAAS,OAAA,EAAQ,GAA0B,EAAC,KAC7D;AACH,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,WAAW,QAAA,CAAS,OAAA,CAAQ,OAAO,EAAE,IAAA,EAAM,OAAO,CAAA;AAExD,EAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,YAAA,GAAe,MAAA,EAAQ,QAAA,EAAS,IAAK,OAAA;AAG3C,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,MAAA,GAAS,kBAAkB,MAAM,CAAA;AACvC,IAAA,OAAO,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA,CAAE,eAAe,MAAM,CAAA;AAAA,EAC/D;AAGA,EAAA,OAAO,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA,CAAE,eAAe,MAAM,CAAA;AAC/D;;ACAA,MAAM,eAAA,GAAkB,CAAC,SAAA,KAA+B;AACtD,EAAA,OAAO,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAChD,CAAA;AAiBO,MAAM,iBAAA,GAAoB,CAC/B,KAAA,EACA;AAAA,EACE,MAAA,GAAS,OAAA;AAAA,EACT,UAAA,GAAa,OAAA;AAAA,EACb,UAAA,GAAa,OAAA;AAAA,EACb;AACF,CAAA,GAA8B,EAAC,KAC5B;AACH,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,eAAA,GAAkB,KAAA;AAEtB,EAAA,IAAI,iBAAiB,IAAA,EAAM;AAEzB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,GAAW,SAAS,UAAA,CAAW,KAAA,EAAO,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,IAC1D,CAAA,MAAO;AAEL,MAAA,QAAA,GAAW,QAAA,CAAS,WAAW,KAAK,CAAA;AAAA,IACtC;AAEA,IAAA,eAAA,GAAkB,IAAA;AAAA,EACpB,CAAA,MAAO;AAEL,IAAA,IAAI,eAAA,CAAgB,KAAK,CAAA,EAAG;AAE1B,MAAA,QAAA,GAAW,QAAA,CAAS,QAAQ,KAAK,CAAA;AACjC,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,eAAA,GAAkB,IAAA;AAAA,IACpB,CAAA,MAAO;AAEL,MAAA,QAAA,GAAW,SAAS,OAAA,CAAQ,KAAA,EAAO,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,IACpD;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,YAAA,GAAe,MAAA,EAAQ,QAAA,EAAS,IAAK,OAAA;AAC3C,EAAA,MAAM,iBAAA,GAAoB,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA;AAGzD,EAAA,MAAM,cACJ,OAAO,UAAA,KAAe,QAAA,GAAW,iBAAA,CAAkB,UAAU,CAAA,GAAI,UAAA;AAGnE,EAAA,MAAM,WAAA,GACJ,OAAO,UAAA,KAAe,QAAA,GAClB,UAAA,KAAe,SACb,EAAC,GACD,iBAAA,CAAkB,UAAU,CAAA,GAC9B,UAAA;AAGN,EAAA,MAAM,aAAA,GAA4C;AAAA,IAChD,GAAI,eAAA,IAAmB,EAAE,YAAA,EAAc,OAAA,EAAQ;AAAA,IAC/C,GAAG,WAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,OAAO,iBAAA,CAAkB,eAAe,aAAa,CAAA;AACvD;;ACvJA,MAAM,wBAAwB,CAAC,QAAA,EAAU,KAAK,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAM,CAAA;AAEvE,MAAM,mBAAmB,IAAI,MAAA;AAAA,EAC3B,CAAA,EAAA,EAAK,qBAAA,CAAsB,IAAA,CAAK,GAAG,CAAC,CAAA,+BAAA,CAAA;AAAA,EACpC;AACF,CAAA;AAEA,MAAM,eAAA,GAAoD;AAAA,EACxD,MAAA,EAAQ,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,EACd,EAAA,EAAI,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,EACb,CAAA,EAAG,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,EACZ,IAAA,EAAM,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,EACf,IAAA,EAAM,CAAC,IAAA,EAAM,IAAI;AACnB,CAAA;AAEA,SAAS,kBAAkB,IAAA,EAAsB;AAC/C,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,IAAI,QAAA,GAAW,EAAA;AAEf,EAAA,OAAO,WAAW,QAAA,EAAU;AAC1B,IAAA,QAAA,GAAW,MAAA;AACX,IAAA,MAAA,GAAS,OAAO,OAAA,CAAQ,gBAAA,EAAkB,CAAC,CAAA,EAAG,GAAA,EAAK,QAAQ,OAAA,KAAY;AACrE,MAAA,MAAM,aAAA,GAAgB,IAAI,WAAA,EAAY;AACtC,MAAA,MAAM,OAAA,GAAU,gBAAgB,aAAa,CAAA;AAC7C,MAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,MAAA,OAAO,QAAQ,CAAC,CAAA,GAAI,kBAAkB,OAAO,CAAA,GAAI,QAAQ,CAAC,CAAA;AAAA,IAC5D,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,MAAM,QAAA,GAAW,cAAA;AACjB,MAAM,YAAA,GAAe,iBAAA;AACrB,MAAM,aAAA,GAAgB,SAAA;AAEtB,MAAM,cAAA,GAAyC;AAAA,EAC7C,GAAA,EAAK,GAAA;AAAA,EACL,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,IAAA,EAAM,GAAA;AAAA,EACN,IAAA,EAAM,GAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAEA,MAAM,YAAA,GAAe,oCAAA;AAErB,SAAS,eAAe,IAAA,EAAsB;AAC5C,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,CAAC,OAAO,MAAA,KAAmB;AAC3D,IAAA,IAAI,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA,EAAG;AAC3B,MAAA,OAAO,MAAA,CAAO,aAAa,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,IAC1D;AACA,IAAA,IAAI,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAC1B,MAAA,OAAO,MAAA,CAAO,aAAa,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,IAC1D;AACA,IAAA,OAAO,cAAA,CAAe,MAAM,CAAA,IAAK,KAAA;AAAA,EACnC,CAAC,CAAA;AACH;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,QAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA;AAEA,MAAM,wBAAwB,IAAI,MAAA;AAAA,EAChC,CAAA,SAAA,EAAY,cAAA,CAAe,IAAA,CAAK,GAAG,CAAC,CAAA,6CAAA,CAAA;AAAA,EACpC;AACF,CAAA;AAEA,MAAM,2BAA2B,IAAI,MAAA;AAAA,EACnC,CAAA,QAAA,EAAW,cAAA,CAAe,IAAA,CAAK,GAAG,CAAC,CAAA,mBAAA,CAAA;AAAA,EACnC;AACF,CAAA;AAEA,SAAS,sBAAsB,IAAA,EAAsB;AACnD,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,IAAI,QAAA,GAAW,EAAA;AAGf,EAAA,OAAO,WAAW,QAAA,EAAU;AAC1B,IAAA,QAAA,GAAW,MAAA;AACX,IAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,qBAAA,EAAuB,EAAE,CAAA;AAAA,EACnD;AAGA,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,wBAAA,EAA0B,EAAE,CAAA;AAEpD,EAAA,OAAO,MAAA;AACT;AAEA,MAAM,QAAA,GAAW,gCAAA;AACjB,MAAM,QAAA,GAAW,gCAAA;AACjB,MAAM,QAAA,GAAW,gCAAA;AACjB,MAAM,gBAAA,GAAmB,2BAAA;AAEzB,SAAS,WAAA,CAAY,UAAkB,OAAA,EAA0B;AAC/D,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA;AACrC,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,OAAO,KAAA,CACJ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACpB,IAAA,MAAM,OAAA,GAAU,iBAAA;AAAA,MACd,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAkB,EAAE,EAAE,IAAA;AAAK,KAC1C;AACA,IAAA,OAAO,OAAA,GAAU,GAAG,KAAA,GAAQ,CAAC,KAAK,OAAO,CAAA,CAAA,GAAK,KAAK,OAAO,CAAA,CAAA;AAAA,EAC5D,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACd;AAEA,SAAS,aAAa,IAAA,EAAsB;AAC1C,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,MAAA,GAAS,MAAA,CAAO,QAAQ,QAAA,EAAU,CAAC,UAAU,WAAA,CAAY,KAAA,EAAO,KAAK,CAAC,CAAA;AACtE,EAAA,MAAA,GAAS,MAAA,CAAO,QAAQ,QAAA,EAAU,CAAC,UAAU,WAAA,CAAY,KAAA,EAAO,IAAI,CAAC,CAAA;AACrE,EAAA,OAAO,MAAA;AACT;AAYO,SAAS,eAAe,KAAA,EAA+B;AAC5D,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA,EAAI;AACjC,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,MAAA,GAAS,KAAA;AAGb,EAAA,MAAA,GAAS,sBAAsB,MAAM,CAAA;AAGrC,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AACxC,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,aAAA,EAAe,IAAI,CAAA;AAG3C,EAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAG5B,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,IAAI,CAAA;AAGtC,EAAA,MAAA,GAAS,kBAAkB,MAAM,CAAA;AAGjC,EAAA,MAAA,GAAS,eAAe,MAAM,CAAA;AAG9B,EAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAElC,EAAA,OAAO,MAAA;AACT;;;;;;;;;;;;;ACnKA,MAAM,YAAA,GACJ,8DAAA;AAEF,MAAM,oBAAA,GAAuB,UAAA;AAC7B,MAAM,kBAAA,GAAqB,cAAA;AAE3B,SAAS,YAAY,IAAA,EAA2B;AAC9C,EAAA,MAAM,QAAqB,EAAC;AAC5B,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,YAAA,CAAa,SAAA,GAAY,CAAA;AACzB,EAAA,IAAI,KAAA;AAEJ,EAAA,OAAA,CAAQ,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,IAAI,OAAO,IAAA,EAAM;AACjD,IAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,KAAK,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IACnD;AAEA,IAAA,MAAM,MAAM,KAAA,CAAM,KAAA;AAClB,IAAA,MAAM,aAAa,YAAA,CAAa,SAAA;AAEhC,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG;AAEZ,MAAA,KAAA,CAAM,IAAA;AAAA,wBACJ,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,WAAA,CAAY,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,EAAA,EADhB,GAEb;AAAA,OACF;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,EAAG;AAEnB,MAAA,KAAA,CAAM,IAAA,qBAAM,QAAA,EAAA,EAAkB,QAAA,EAAA,WAAA,CAAY,MAAM,CAAC,CAAC,CAAA,EAAA,EAA1B,GAA4B,CAAS,CAAA;AAAA,IAC/D,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,EAAG;AAEnB,MAAA,KAAA,CAAM,IAAA,qBAAM,IAAA,EAAA,EAAc,QAAA,EAAA,WAAA,CAAY,MAAM,CAAC,CAAC,CAAA,EAAA,EAA1B,GAA4B,CAAK,CAAA;AAAA,IACvD,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,EAAG;AAEnB,MAAA,KAAA,CAAM,IAAA;AAAA,wBACJ,GAAA,CAAC,MAAA,EAAA,EAAe,SAAA,EAAWA,QAAA,CAAO,SAAA,EAC/B,sBAAY,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EADZ,GAEX;AAAA,OACF;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,EAAG;AAEnB,MAAA,KAAA,CAAM,IAAA;AAAA,wBACJ,GAAA,CAAC,UAAe,SAAA,EAAWA,QAAA,CAAO,MAC/B,QAAA,EAAA,KAAA,CAAM,CAAC,KADC,GAEX;AAAA,OACF;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,SAAA,GAAY,UAAA;AACzB,IAAA,SAAA,GAAY,UAAA;AAAA,EACd;AAEA,EAAA,IAAI,SAAA,GAAY,KAAK,MAAA,EAAQ;AAC3B,IAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,KAAA;AACT;AAOA,SAAS,YAAY,IAAA,EAAuB;AAC1C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,EAAA,MAAM,SAAkB,EAAC;AACzB,EAAA,IAAI,CAAA,GAAI,CAAA;AAER,EAAA,OAAO,CAAA,GAAI,MAAM,MAAA,EAAQ;AACvB,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,oBAAoB,CAAA;AAC/C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,kBAAkB,CAAA;AAE7C,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAM,KAAA,GAAkB,CAAC,OAAA,CAAQ,CAAC,CAAC,CAAA;AACnC,MAAA,CAAA,EAAA;AACA,MAAA,OAAO,CAAA,GAAI,MAAM,MAAA,EAAQ;AACvB,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,oBAAoB,CAAA;AAClD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACb,QAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AACpB,QAAA,CAAA,EAAA;AAAA,MACF;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAAA,IACnC,WAAW,OAAA,EAAS;AAClB,MAAA,MAAM,KAAA,GAAkB,CAAC,OAAA,CAAQ,CAAC,CAAC,CAAA;AACnC,MAAA,CAAA,EAAA;AACA,MAAA,OAAO,CAAA,GAAI,MAAM,MAAA,EAAQ;AACvB,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,kBAAkB,CAAA;AAChD,QAAA,IAAI,CAAC,MAAA,EAAQ;AACb,QAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AACpB,QAAA,CAAA,EAAA;AAAA,MACF;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAAA,IACnC,CAAA,MAAO;AACL,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AAAA,MAC7C;AACA,MAAA,CAAA,EAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,aAAa,MAAA,EAA8B;AAClD,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AAClC,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,MAAA;AACH,QAAA,2BAAQ,MAAA,EAAA,EAAkB,QAAA,EAAA,WAAA,CAAY,KAAA,CAAM,OAAO,KAAjC,KAAmC,CAAA;AAAA,MACvD,KAAK,IAAA;AACH,QAAA,2BACG,IAAA,EAAA,EAAe,SAAA,EAAWA,SAAO,IAAA,EAC/B,QAAA,EAAA,KAAA,CAAM,MAAM,GAAA,CAAI,CAAC,MAAM,CAAA,qBACtB,GAAA,CAAC,QAAY,QAAA,EAAA,WAAA,CAAY,IAAI,KAApB,CAAsB,CAChC,KAHM,KAIT,CAAA;AAAA,MAEJ,KAAK,IAAA;AACH,QAAA,2BACG,IAAA,EAAA,EAAe,SAAA,EAAWA,SAAO,IAAA,EAC/B,QAAA,EAAA,KAAA,CAAM,MAAM,GAAA,CAAI,CAAC,MAAM,CAAA,qBACtB,GAAA,CAAC,QAAY,QAAA,EAAA,WAAA,CAAY,IAAI,KAApB,CAAsB,CAChC,KAHM,KAIT,CAAA;AAAA;AAEN,EACF,CAAC,CAAA;AACH;AAWO,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAqC;AACrE,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA,EAAI;AACjC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAEhC,EAAA,IAAI,OAAO,MAAA,KAAW,CAAA,IAAK,OAAO,CAAC,CAAA,CAAE,SAAS,MAAA,EAAQ;AACpD,IAAA,uCAAU,QAAA,EAAA,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,CAAE,OAAO,CAAA,EAAE,CAAA;AAAA,EAC3C;AAEA,EAAA,2BAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,SAAO,SAAA,EAAY,QAAA,EAAA,YAAA,CAAa,MAAM,CAAA,EAAE,CAAA;AACjE;;AC7IO,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAqC;AACjE,EAAA,MAAM,QAAA,GAAW,eAAe,KAAK,CAAA;AACrC,EAAA,OAAO,kBAAkB,QAAQ,CAAA;AACnC;;ACwBO,MAAM,eAAA,GAAkB,CAC7B,KAAA,EACA,OAAA,GAAkC,EAAC,KAChC;AACH,EAAA,MAAM;AAAA,IACJ,MAAA,GAAS,OAAA;AAAA,IACT,qBAAA,GAAwB,CAAA;AAAA,IACxB,qBAAA,GAAwB,CAAA;AAAA,IACxB,WAAA,GAAc,IAAA;AAAA,IACd,QAAA,GAAW,UAAA;AAAA,IACX,WAAA,GAAc;AAAA,GAChB,GAAI,OAAA;AAEJ,EAAA,OAAO,KAAA,IAAS,IAAA,GACZ,KAAA,CAAM,cAAA,CAAe,MAAA,EAAQ;AAAA,IAC3B,KAAA,EAAO,SAAA;AAAA,IACP,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA,GACD,IAAA;AACN;;AC3CO,MAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,OAAA,GAAmC,EAAC,KACjC;AACH,EAAA,MAAM,EAAE,QAAA,GAAW,CAAA,EAAG,MAAA,GAAS,SAAQ,GAAI,OAAA;AAE3C,EAAA,OAAO,KAAA,IAAS,IAAA,GACZ,KAAA,CAAM,cAAA,CAAe,MAAA,EAAQ;AAAA,IAC3B,KAAA,EAAO,SAAA;AAAA,IACP,qBAAA,EAAuB,QAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA,GACD,IAAA;AACN;;ACJO,MAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,EAAE,MAAA,GAAS,SAAS,MAAA,GAAS,OAAA,EAAQ,GAA0B,EAAC,KAC7D;AACH,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAIA,EAAA,MAAM,QAAA,GAAW,SAAS,OAAA,CAAQ,CAAA,WAAA,EAAc,KAAK,CAAA,CAAA,EAAI,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAExE,EAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,YAAA,GAAe,MAAA,EAAQ,QAAA,EAAS,IAAK,OAAA;AAG3C,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,MAAA,GAAS,kBAAkB,MAAM,CAAA;AACvC,IAAA,OAAO,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA,CAAE,eAAe,MAAM,CAAA;AAAA,EAC/D;AAGA,EAAA,OAAO,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA,CAAE,eAAe,MAAM,CAAA;AAC/D;;AC/BA,MAAM,aAAA,GAGF;AAAA,EACF,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,EAAS,KAAK,SAAA,EAAU;AAAA,EACxC,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAK,SAAA;AAC9B,CAAA;AAUO,MAAM,qBAAA,GAAwB,CACnC,KAAA,EACA,EAAE,MAAA,GAAS,SAAS,MAAA,GAAS,OAAA,EAAQ,GAAkC,EAAC,KACrE;AACH,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,GAAA;AAEJ,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAE7B,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,qBAAqB,CAAA;AAC/C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,EAAE,CAAA;AAC7B,IAAA,GAAA,GAAM,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,EAC7B,CAAA,MAAO;AAEL,IAAA,IAAI,KAAA,CAAM,KAAA,IAAS,IAAA,IAAQ,KAAA,CAAM,OAAO,IAAA,EAAM;AAC5C,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AACd,IAAA,GAAA,GAAM,KAAA,CAAM,GAAA;AAAA,EACd;AAGA,EAAA,MAAM,YAAA,GAAe,MAAA,EAAQ,QAAA,EAAS,IAAK,OAAA;AAG3C,EAAA,MAAM,WAAW,QAAA,CAAS,UAAA;AAAA,IACxB;AAAA,MACE,IAAA,EAAM,GAAA;AAAA,MACN,KAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,EAAE,QAAQ,YAAA;AAAa,GACzB;AAEA,EAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,MAAA,GAAS,cAAc,MAAM,CAAA;AACnC,IAAA,OAAO,QAAA,CAAS,eAAe,MAAM,CAAA;AAAA,EACvC;AAGA,EAAA,OAAO,QAAA,CAAS,eAAe,MAAM,CAAA;AACvC;;ACrDO,MAAM,oBAAA,GAA+D;AAAA,EAC1E,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,kBAAkB,MAAM;AAAA;AAAA,GAC1B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,eAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,iBAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,gBAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,aAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,iBAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,aAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,gBAAA,EAAkB,CAAC,OAAA,KAAY,CAAC,KAAA,KAC9B,gBAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA;AACF,GACJ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,OAAA;AAAA,IACP,gBAAA,EAAkB,MAAM,CAAC,KAAA,KACvB,kBAAkB,KAA2B;AAAA,GACjD;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,gBAAA,EAAkB,MAAM,CAAC,KAAA,KACvB,cAAc,KAA2B;AAAA;AAE/C;AAiBO,SAAS,wBACd,MAAA,EAC0C;AAC1C,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAO,CAAC,QAAQ,MAAS,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,CAAC,MAAA,CAAO,IAAA,EAAM,MAAA,CAAO,OAAO,CAAA;AACrC;AAcO,SAAS,sBAAsB,IAAA,EAAsC;AAC1E,EAAA,OAAO,qBAAqB,IAAI,CAAA;AAClC;;AC2HO,SAASC,oBAAA,GAAwB;AACtC,EAAA,OAAO,SAAS,YAAA,CACd,EAAA,EACA,MAAA,EACc;AACd,IAAA,IAAI,OAAO,EAAA,KAAO,QAAA,IAAY,OAAA,IAAW,EAAA,EAAI;AAG3C,MAAA,OAAO;AAAA,QACL,IAAI,EAAA,CAAG,KAAA;AAAA,QACP,GAAG;AAAA,OACL;AAAA,IACF;AAIA,IAAA,OAAO,EAAE,EAAA,EAAI,GAAG,MAAA,EAAO;AAAA,EACzB,CAAA;AACF;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;AACpC,MAAM,OAAO,OAAO,QAAQ,KAAK,UAAU,GAAG;AAC9C,QAAQ,GAAG,MAAM;AACjB,QAAQ,UAAU,EAAE;AACpB,OAAO,GAAG;AACV,QAAQ,GAAG,MAAM;AACjB,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM;AAC7B,IAAI,KAAK,EAAE,MAAM,IAAI;AACrB,GAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1C,EAAE,OAAO,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;AACjE;AAIA,SAAS,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE;AACzC,EAAE,OAAO,OAAO,IAAI;AACpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC7B,MAAM,OAAO;AACb,QAAQ,GAAG,GAAG;AACd,QAAQ,CAAC,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;AACjD,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,YAAY,QAAQ;AAC9B;AACA,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AACpE;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE;AACrC,EAAE,MAAM,IAAI,GAAG,EAAE;AACjB,EAAE,MAAM,OAAO,GAAG,MAAM,IAAI;AAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;AAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;AACxC,MAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC;AACzB,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,EAAE,OAAO,IAAI;AACb;AACA,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,IAAI,MAAM;AACZ,EAAE,OAAO,OAAO,IAAI;AACpB,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;AACpD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;AAC3G,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,IAAI,GAAG,OAAO;AAClB,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;AACvD,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClE,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AACxC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG;AACzE,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,GAAG,CAAC,GAAG,GAAG;AAC/E,QAAQ,MAAM,mBAAmB,GAAG,aAAa,GAAG,EAAE;AACtD,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AAClC,UAAU,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,UAAU,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AACnC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3B,UAAU;AACV,UAAU,OAAO,GAAG;AACpB,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/E;AACA;AACA,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACvI,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH;AACA,SAAS,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;AACjE,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,MAAM;AACjB,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,YAAY,CAAC,UAAU,CAAC;AACvJ,IAAI,CAAC;AACL,IAAI,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,GAAG;AACtD,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClD,EAAE,MAAM,cAAc,GAAG,MAAM;AAC/B,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB;AAC1G,EAAE,CAAC;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,GAAG;AACP,IAAI,MAAM;AACV,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,IAAI,WAAW,EAAE,cAAc;AAC/B,IAAI,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM;AACtF,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,WAAW,EAAE,IAAI,CAAC;AACxB,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,CAAC;AACtE,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;AAC9E,EAAE,CAAC,EAAE,EAAE,CAAC;AACR,EAAE,OAAO,IAAI;AACb;;AAEA,SAAS,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;AACvD,EAAE,IAAI,IAAI,EAAE,qBAAqB;AACjC,EAAE,MAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB,EAAE;AACpD,EAAE,MAAM,iBAAiB,GAAG;AAC5B,IAAI,GAAG,aAAa;AACpB,IAAI,GAAG;AACP,GAAG;AACH,EAAE,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW;AACnD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,WAAW,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI,GAAG,OAAO,iBAAiB,CAAC,MAAM,KAAK,QAAQ,GAAG,iBAAiB,CAAC,MAAM,GAAG,SAAS;AAC1V,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,iBAAiB,CAAC,UAAU,EAAE;AACpC,IAAI,UAAU,GAAG,iBAAiB,CAAC,UAAU;AAC7C,EAAE,CAAC,MAAM,IAAI,WAAW,EAAE;AAC1B;AACA,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,UAAU,GAAG,WAAW,IAAI;AAClC,QAAQ,IAAI,MAAM,GAAG,WAAW;AAChC,QAAQ,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAClD,UAAU,IAAI,OAAO;AACrB,UAAU,MAAM,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;AACrE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,KAAK,SAAS,EAAE;AAC7E,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC9F,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5E,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,EAAE,EAAE;AACX,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC/C,MAAM,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,GAAG,CAAC,8CAA8C,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AAC/J,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,EAAE;AACrB,EAAE;AACF,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,IAAI,UAAU;AACd,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,KAAK;AACT,IAAI,SAAS,EAAE,iBAAiB;AAChC,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;AAC7C,MAAM,IAAI,eAAe;AACzB,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAClI,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAC9E,IAAI,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC7E,MAAM,IAAI,gBAAgB;AAC1B,MAAM,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAClF,QAAQ,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;AACnF,QAAQ,OAAO,YAAY,CAAC,WAAW,CAAC;AACxC,MAAM;AACN,MAAM,OAAO,CAAC,MAAM,CAAC;AACrB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC;AAC7E,GAAG;AACH,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACvE,EAAE;;AAEF;AACA,EAAE,OAAO,MAAM;AACf;;AAEA,MAAM,KAAK,GAAG,cAAc;AAC5B;;AAEA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,WAAW;AACjB,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,EAAE;AACzE,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,EAAE;AACN,IAAI,MAAM;AACV,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK;AACxB,IAAI,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa;AAC1C,IAAI,aAAa,EAAE,OAAO,CAAC,aAAa;AACxC,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK;AACxB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,cAAc,EAAE,MAAM;AAC1B,MAAM,MAAM,WAAW,GAAG,EAAE;AAC5B,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI;AACjC,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE;AACjD,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;AACzC,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,MAAM,CAAC;AACP,MAAM,aAAa,CAAC,MAAM,CAAC;AAC3B,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,OAAO;AACvB,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM;AACN,KAAK;AACL,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACvE,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,MAAM;AACf;AACA,MAAM,OAAO,GAAG;AAChB,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB;;AAEA,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK;AACpN,MAAM,IAAI,gBAAgB,EAAE,iBAAiB;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,gBAAgB,GAAG,EAAE;AACrL,MAAM,MAAM,YAAY,GAAG,CAAC,iBAAiB,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE;AAC1L,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACtJ,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,EAAE,KAAK,CAAC;AACpH,MAAM,OAAO,YAAY;AACzB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK;AAC1N,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9I,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;AACxE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK;AAC3K,MAAM,IAAI,iBAAiB;AAC3B,MAAM,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE;AAC9L,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC;AAC7E,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,KAAK;AAC9K,MAAM,IAAI,kBAAkB;AAC5B,MAAM,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,kBAAkB,GAAG,EAAE;AAClM,MAAM,OAAO,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9E,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;;AAEpE;;AAEA,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,IAAI;AAClF,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC/D,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC1F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC9F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,YAAY,IAAI;AAC5F,MAAM,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE;AACxC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;;AAEpE;;AAEA,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,IAAI;AACjF,MAAM,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,IAAI;AAC7C,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC9D,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,IAAI;AACjF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAClE,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,IAAI;AACrF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACpE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI,IAAI;AACnF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI;AACrC,QAAQ,OAAO,WAAW,CAAC,OAAO;AAClC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;;AAEnE;;AAEA,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,WAAW,IAAI;AAC3F,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,kBAAkB;AAC9B,QAAQ,OAAO,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC;AAC/F,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACpE,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,WAAW,IAAI;AACvF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,mBAAmB;AAC/B,QAAQ,OAAO,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACjG,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAClE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,WAAW,IAAI;AACzF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1C,QAAQ,IAAI,mBAAmB;AAC/B,QAAQ,OAAO,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACjG,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3J,MAAM,IAAI,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO;AACzF,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,eAAe,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,iBAAiB,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,GAAG,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI;AACrX,QAAQ,OAAO,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC9D,EAAE;AACF,CAAC;AACD,SAAS,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5E,EAAE,IAAI,qBAAqB,EAAE,cAAc;AAC3C;AACA;AACA;AACA;AACA;;AAEA,EAAE,IAAI,QAAQ,GAAG,CAAC;AAClB,EAAE,MAAM,YAAY,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,MAAM,KAAK,GAAG,CAAC;AACf,IAAI;AACJ,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI;AACtE,MAAM,IAAI,eAAe;AACzB,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AAChF,QAAQ,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;AAC/C,MAAM;AACN,IAAI,CAAC,EAAE,CAAC,CAAC;AACT,EAAE,CAAC;AACH,EAAE,YAAY,CAAC,UAAU,CAAC;AAC1B,EAAE,IAAI,YAAY,GAAG,EAAE;AACvB,EAAE,MAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,KAAK,KAAK;AACvD;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,KAAK;AACX,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,MAAM,OAAO,EAAE;AACf,KAAK;;AAEL;AACA,IAAI,MAAM,oBAAoB,GAAG,EAAE;;AAEnC;AACA,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,IAAI;AAC5C;;AAEA,MAAM,MAAM,yBAAyB,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK;AAC3E,MAAM,IAAI,MAAM;AAChB,MAAM,IAAI,aAAa,GAAG,KAAK;AAC/B,MAAM,IAAI,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;AACvD;AACA,QAAQ,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM;AAC5C,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,GAAG,aAAa,CAAC,MAAM;AACrC,QAAQ,aAAa,GAAG,IAAI;AAC5B,MAAM;AACN,MAAM,IAAI,yBAAyB,IAAI,CAAC,yBAAyB,IAAI,IAAI,GAAG,MAAM,GAAG,yBAAyB,CAAC,MAAM,MAAM,MAAM,EAAE;AACnI;AACA,QAAQ,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AAChE,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AACnD,UAAU,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,IAAI,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3H,UAAU,aAAa;AACvB,UAAU,aAAa,EAAE,aAAa,GAAG,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;AACtH,UAAU,KAAK;AACf,UAAU,KAAK,EAAE,oBAAoB,CAAC;AACtC,SAAS,CAAC;;AAEV;AACA,QAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C;AACA;AACA,QAAQ,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,MAAM;AACN,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,MAAM,aAAa,CAAC,WAAW,GAAG,WAAW;AAC7C,IAAI,CAAC,CAAC;AACN,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC;AACxD,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1F,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,iBAAiB,CAAC,aAAa,EAAE,QAAQ,GAAG,CAAC,CAAC;AAChD,EAAE,YAAY,CAAC,OAAO,EAAE;;AAExB;AACA;AACA;;AAEA,EAAE,MAAM,sBAAsB,GAAG,OAAO,IAAI;AAC5C,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAClF,IAAI,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,IAAI;AACzC,MAAM,IAAI,OAAO,GAAG,CAAC;AACrB,MAAM,IAAI,OAAO,GAAG,CAAC;AACrB,MAAM,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;AAC7B,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACzD,QAAQ,aAAa,GAAG,EAAE;AAC1B,QAAQ,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;AAClE,UAAU,IAAI;AACd,YAAY,OAAO,EAAE,YAAY;AACjC,YAAY,OAAO,EAAE;AACrB,WAAW,GAAG,IAAI;AAClB,UAAU,OAAO,IAAI,YAAY;AACjC,UAAU,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,GAAG,CAAC;AACnB,MAAM;AACN,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;AACxD,MAAM,OAAO,GAAG,OAAO,GAAG,eAAe;AACzC,MAAM,MAAM,CAAC,OAAO,GAAG,OAAO;AAC9B,MAAM,MAAM,CAAC,OAAO,GAAG,OAAO;AAC9B,MAAM,OAAO;AACb,QAAQ,OAAO;AACf,QAAQ;AACR,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE,CAAC;AACH,EAAE,sBAAsB,CAAC,CAAC,qBAAqB,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACrK,EAAE,OAAO,YAAY;AACrB;;AAEA,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK;AAC/E,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,EAAE;AACN,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,YAAY,EAAE,EAAE;AACpB,IAAI,kBAAkB,EAAE,EAAE;AAC1B,IAAI,QAAQ,EAAE,QAAQ,IAAI;AAC1B,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACrD,QAAQ,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACzC,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AAClD,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5E,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;AACvC,IAAI,CAAC;AACL,IAAI,eAAe,EAAE,QAAQ,IAAI;AACjC,MAAM,IAAI,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC3D,QAAQ,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AAClD,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE;AAC7C,QAAQ,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,MAAM;AACN,MAAM,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACjG,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,WAAW,EAAE,QAAQ,IAAI;AAC7B,MAAM,IAAI,aAAa;AACvB,MAAM,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB;AACjH,IAAI,CAAC;AACL,IAAI,OAAO,EAA8B,EAAE;AAC3C,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7D,IAAI,YAAY,EAAE,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS;AACnF,IAAI,aAAa,EAAE,MAAM;AACzB,MAAM,IAAI,UAAU,GAAG,EAAE;AACzB,MAAM,IAAI,UAAU,GAAG,GAAG;AAC1B,MAAM,OAAO,IAAI,EAAE;AACnB,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE;AACnD,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,QAAQ,UAAU,GAAG,SAAS;AAC9B,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,OAAO,EAAE;AACjC,IAAI,CAAC;AACL,IAAI,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,IAAI;AACxE,MAAM,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,IAAI;AACvC,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AACxD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACjE,IAAI,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,IAAI;AACxE,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;AAClC,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC;AAC1E,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AACjF,EAAE;AACF,EAAE,OAAO,GAAG;AACZ,CAAC;;AAED;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACvH,IAAI,MAAM,CAAC,kBAAkB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACvC,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,mBAAmB,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACnI,IAAI,MAAM,CAAC,sBAAsB,GAAG,MAAM;AAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAC3C,QAAQ,OAAO,IAAI,GAAG,EAAE;AACxB,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,uBAAuB,EAAE;AAC7C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACnI,IAAI,MAAM,CAAC,sBAAsB,GAAG,MAAM;AAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAC3C,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,uBAAuB,EAAE;AAC7C,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACvD,EAAE,IAAI,qBAAqB,EAAE,aAAa;AAC1C,EAAE,MAAM,MAAM,GAAG,WAAW,IAAI,IAAI,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE;AAC/I,EAAE,OAAO,OAAO,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3N,CAAC;AACD,cAAc,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAClD,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AAChE,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,OAAO,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3K,CAAC;AACD,uBAAuB,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACrD,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,WAAW,IAAI,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;AAC3N,CAAC;AACD,YAAY,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAChD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACpD,EAAE,IAAI,cAAc;AACpB,EAAE,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1G,CAAC;AACD,WAAW,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC/C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACvD,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;AAClC,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,EAAE,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/F,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,cAAc,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;AAClF,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACxD,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;AACjC,IAAI,IAAI,cAAc;AACtB,IAAI,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpG,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,eAAe,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;AACnF,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AAC/C,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW;AAC/C,CAAC;AACD,MAAM,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACnD,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW;AAC9C,CAAC;AACD,UAAU,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,KAAK;AACtD,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW;AAC9B,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,EAAE,OAAO,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG;AAC3C,CAAC;AACD,aAAa,CAAC,kBAAkB,GAAG,GAAG,IAAI;AAC1C,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG;AAClC,EAAE,IAAI,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS;AACnF,EAAE,IAAI,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS;AACnF,EAAE,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS;AACjF,EAAE,IAAI,GAAG,GAAG,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,GAAG,SAAS;AAChF,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,GAAG;AACpB,IAAI,GAAG,GAAG,GAAG;AACb,IAAI,GAAG,GAAG,IAAI;AACd,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB,CAAC;AACD,aAAa,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE7F;;AAEA,MAAM,SAAS,GAAG;AAClB,EAAE,cAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,YAAY;AACd,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAE,eAAe;AACjB,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE;AACF,CAAC;AACD;;AAEA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;AACxD;;AAEA;;AAEA,MAAM,eAAe,GAAG;AACxB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,aAAa,EAAE,EAAE;AACvB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC;AACrE,MAAM,kBAAkB,EAAE,KAAK;AAC/B,MAAM,qBAAqB,EAAE;AAC7B,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,SAAS,CAAC,cAAc;AACvC,MAAM;AACN,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,SAAS,CAAC,aAAa;AACtC,MAAM;AACN,MAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACtC,QAAQ,OAAO,SAAS,CAAC,MAAM;AAC/B,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvD,QAAQ,OAAO,SAAS,CAAC,MAAM;AAC/B,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,OAAO,SAAS,CAAC,WAAW;AACpC,MAAM;AACN,MAAM,OAAO,SAAS,CAAC,UAAU;AACjC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE;AAChJ,MAAM,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9N,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB;AAC9E,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACtV,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE;AAC7D,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK;AAC7M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,sBAAsB,EAAE,sBAAsB;AACxD,MAAM,OAAO,CAAC,sBAAsB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,sBAAsB,GAAG,EAAE;AACpN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,KAAK,IAAI;AACrC,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI;AACpC,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC7C,QAAQ,MAAM,cAAc,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACvF,QAAQ,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC,KAAK,GAAG,SAAS,CAAC;;AAEpG;AACA,QAAQ,IAAI,sBAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;AACjE,UAAU,IAAI,WAAW;AACzB,UAAU,OAAO,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE;AACtH,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG;AAC7B,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE;AACvB,UAAU,KAAK,EAAE;AACjB,SAAS;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,IAAI,QAAQ;AACtB,UAAU,OAAO,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACjE,YAAY,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AACpC,cAAc,OAAO,YAAY;AACjC,YAAY;AACZ,YAAY,OAAO,CAAC;AACpB,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE;AACrC,QAAQ;AACR,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACvC,UAAU,OAAO,CAAC,GAAG,GAAG,EAAE,YAAY,CAAC;AACvC,QAAQ;AACR,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC7B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AAC9B,IAAI,GAAG,CAAC,aAAa,GAAG,EAAE;AAC1B,IAAI,GAAG,CAAC,iBAAiB,GAAG,EAAE;AAC9B,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,IAAI;AACxC,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,EAAE;AACnD,MAAM,MAAM,QAAQ,GAAG,GAAG,IAAI;AAC9B,QAAQ,IAAI,iBAAiB;AAC7B,QAAQ,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1H,UAAU,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAClE,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AACjD,YAAY,IAAI,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACxE,cAAc,OAAO,KAAK;AAC1B,YAAY;AACZ,UAAU;AACV,UAAU,OAAO,IAAI;AACrB,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC;AACP,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;AAClG,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,YAAY,IAAI;AAC/C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,gBAAgB,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAChN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;AAChE,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC5E,QAAQ,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC7E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACxE,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,oBAAoB,EAAE;AACzC,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;AACzD,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,KAAK,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;AAC9J;;AAEA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD;AACA;AACA,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AACzC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7C,IAAI,OAAO,GAAG,IAAI,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;AAChE,EAAE,CAAC,EAAE,CAAC,CAAC;AACP,CAAC;AACD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;AAC/E,MAAM,GAAG,GAAG,KAAK;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AAChD,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;AAC/E,MAAM,GAAG,GAAG,KAAK;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK;AACnD,EAAE,IAAI,GAAG;AACT,EAAE,IAAI,GAAG;AACT,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;AAC3B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK;AAC7C,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;AACpC,QAAQ,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;AACpC,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB,CAAC;AACD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACrC,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,IAAI,GAAG,GAAG,CAAC;AACb,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;AAC1B,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE;AACpD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK;AAC3B,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,KAAK,EAAE,OAAO,GAAG,GAAG,KAAK;AAC/B,EAAE;AACF,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxB,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,EAAE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9E,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9E,CAAC;AACD,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AAC5C,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AAC9D,CAAC;AACD,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,QAAQ,CAAC,MAAM;AACxB,CAAC;AACD,MAAM,cAAc,GAAG;AACvB,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,WAAW;AACb,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,cAAc,EAAE,KAAK,IAAI;AAC/B,QAAQ,IAAI,SAAS,EAAE,eAAe;AACtC,QAAQ,OAAO,CAAC,SAAS,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,eAAe,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI;AAC9K,MAAM,CAAC;AACP,MAAM,aAAa,EAAE;AACrB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC3D,MAAM,iBAAiB,EAAE;AACzB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;AAC/B;AACA,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACpD,UAAU,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;AACjD,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;AACvD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAClR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7H,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,sBAAsB;AAChC,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9H,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,wBAAwB,GAAG,MAAM;AAC5C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,oBAAoB,GAAG,MAAM;AACxC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,cAAc,CAAC,GAAG;AACjC,MAAM;AACN,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,EAAE;AACrE,QAAQ,OAAO,cAAc,CAAC,MAAM;AACpC,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,EAAE;AACzB,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,MAAM,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AACnZ,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC5H,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE;AACnE,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC1E,QAAQ,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC3E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;AACtE,QAAQ,OAAO,KAAK,CAAC,qBAAqB,EAAE;AAC5C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,mBAAmB,EAAE;AACxC,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB;AACnD,IAAI,GAAG,CAAC,gBAAgB,GAAG,QAAQ,IAAI;AACvC,MAAM,IAAI,GAAG,CAAC,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7D,QAAQ,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACjD,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC9C,MAAM,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;AAClE,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,MAAM;AACN,MAAM,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1F,MAAM,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,oBAAoB,GAAG,EAAE;AACjC,EAAE,CAAC;AACH,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK;AAC5C,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,gBAAgB;AACzF,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/E,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM;AACjC,MAAM,IAAI,YAAY;AACtB,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAChI,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AAChE,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACpE,IAAI,OAAO,WAAW;AACtB,EAAE;AACF,EAAE,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClF,EAAE,IAAI,iBAAiB,KAAK,QAAQ,EAAE;AACtC,IAAI,OAAO,kBAAkB;AAC7B,EAAE;AACF,EAAE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAClG,EAAE,OAAO,CAAC,GAAG,eAAe,EAAE,GAAG,kBAAkB,CAAC;AACpD;;AAEA;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,WAAW,EAAE,EAAE;AACrB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,aAAa,EAAE,KAAK;AAChE,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AACnM,IAAI,MAAM,CAAC,gBAAgB,GAAG,QAAQ,IAAI;AAC1C,MAAM,IAAI,SAAS;AACnB,MAAM,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC7D,MAAM,OAAO,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE;AACrF,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,QAAQ,IAAI;AACzC,MAAM,IAAI,QAAQ;AAClB,MAAM,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC7D,MAAM,OAAO,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE;AACpG,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,cAAc,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrI,IAAI,KAAK,CAAC,gBAAgB,GAAG,YAAY,IAAI;AAC7C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC7I,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,iBAAiB,KAAK,OAAO,IAAI;AAC/L;AACA;AACA,MAAM,IAAI,cAAc,GAAG,EAAE;;AAE7B;AACA,MAAM,IAAI,EAAE,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACxD,QAAQ,cAAc,GAAG,OAAO;AAChC,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,eAAe,GAAG,CAAC,GAAG,WAAW,CAAC;;AAEhD;AACA,QAAQ,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC;;AAExC;;AAEA;AACA,QAAQ,OAAO,WAAW,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE;AAC7D,UAAU,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE;AACxD,UAAU,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC;AAChF,UAAU,IAAI,UAAU,GAAG,EAAE,EAAE;AAC/B,YAAY,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,UAAU;AACV,QAAQ;;AAER;AACA,QAAQ,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC;AAC5D,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,iBAAiB,CAAC;AACtE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AACzE,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,4BAA4B,GAAG,OAAO;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,KAAK,EAAE;AACT,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,aAAa,EAAE,4BAA4B,EAAE;AACnD,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,EAAE,KAAK;AACpE,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,GAAG,GAAG,QAAQ,IAAI;AAC7B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9E,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI;AACpC,QAAQ,IAAI,UAAU,EAAE,WAAW;AACnC,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE;AAClC,UAAU,IAAI,SAAS,EAAE,UAAU;AACnC,UAAU,OAAO;AACjB,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,YAAY,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS;AAC3K,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE;AACjC,UAAU,IAAI,UAAU,EAAE,WAAW;AACrC,UAAU,OAAO;AACjB,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;AAC1K,YAAY,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1J,WAAW;AACX,QAAQ;AACR,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,UAAU,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxJ,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM;AAC7B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE;AACjD,MAAM,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI;AACnC,QAAQ,IAAI,qBAAqB,EAAE,IAAI,EAAE,qBAAqB;AAC9D,QAAQ,OAAO,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACzQ,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AACxC,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK;AACxD,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,OAAO,QAAQ,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,GAAG,CAAC;AACxR,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,KAAK;AAC9K,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3F,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAC3E,IAAI,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK;AAC/H,MAAM,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC7I,QAAQ,GAAG,CAAC;AACZ,QAAQ,QAAQ,EAAE;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK;AAClI,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC/I,QAAQ,GAAG,CAAC;AACZ,QAAQ,QAAQ,EAAE;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;AAC1E,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC3I,IAAI,KAAK,CAAC,kBAAkB,GAAG,YAAY,IAAI;AAC/C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,OAAO,KAAK,CAAC,gBAAgB,CAAC,YAAY,GAAG,4BAA4B,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,4BAA4B,EAAE,CAAC;AAC/Q,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,QAAQ,IAAI;AAC/C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;AACzD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,kBAAkB,EAAE,mBAAmB;AACnD,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,kBAAkB,GAAG,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,MAAM,MAAM,CAAC,mBAAmB,GAAG,YAAY,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7M,MAAM;AACN,MAAM,OAAO,OAAO,CAAC,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACtH,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAClI,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1H,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;AAC3E,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK;AACrI,MAAM,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5H,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC;AAC5E,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,KAAK;AACjL,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3F,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC;AAC7E,EAAE;AACF,CAAC;;AAED,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACzC,EAAE,OAAO,SAAS,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;AACzE;;AAEA;;AAEA;;AAEA,MAAM,mBAAmB,GAAG;AAC5B,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,OAAO,EAAE,MAAM,CAAC;AAClB,CAAC;AACD,MAAM,+BAA+B,GAAG,OAAO;AAC/C,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,gBAAgB,EAAE,KAAK;AACzB,EAAE,iBAAiB,EAAE;AACrB,CAAC,CAAC;AACF,MAAM,YAAY,GAAG;AACrB,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO,mBAAmB;AAC9B,EAAE,CAAC;AACH,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,gBAAgB,EAAE,+BAA+B,EAAE;AACzD,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,OAAO;AAC/B,MAAM,qBAAqB,EAAE,KAAK;AAClC,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,KAAK;AAC1E,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM;AAC3B,MAAM,IAAI,qBAAqB,EAAE,IAAI,EAAE,qBAAqB;AAC5D,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AACjE,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,UAAU,IAAI,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC/W,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAC5S,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAC7S,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM;AAC7B,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,IAAI;AACrC,QAAQ,IAAI;AACZ,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;AACxB,UAAU,GAAG;AACb,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,IAAI;AACnB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AACxN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM;AACjC,MAAM,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,KAAK,MAAM,CAAC,EAAE;AAC7E,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM;AAC3B,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI;AAChC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACtC,UAAU,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,qBAAqB;AACnC,UAAU,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AACtG,QAAQ;AACR,MAAM,CAAC;AACP,MAAM,OAAO,CAAC,MAAM,CAAC;AACrB,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM;AAC5B,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5B,QAAQ,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9E,QAAQ,OAAO,iBAAiB,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE;AACzE,MAAM;AACN,MAAM,OAAO,CAAC;AACd,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,IAAI;AAClD,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE;AACvE,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE;AACnC,UAAU;AACV,QAAQ;AACR,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAClC;AACA,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE;AAC1C,QAAQ,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAChJ,QAAQ,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO;AAC3F,QAAQ,MAAM,eAAe,GAAG,EAAE;AAClC,QAAQ,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,KAAK;AACxD,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAC9C,YAAY;AACZ,UAAU;AACV,UAAU,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAI;AAC3C,YAAY,IAAI,gBAAgB,EAAE,cAAc;AAChD,YAAY,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC;AACzF,YAAY,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,CAAC,gBAAgB,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,GAAG,gBAAgB,GAAG,CAAC,CAAC,IAAI,cAAc;AAC5J,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,cAAc,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,GAAG,cAAc,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC7J,YAAY,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI;AACnD,cAAc,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,KAAK;AAChD,cAAc,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,eAAe,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;AACxH,YAAY,CAAC,CAAC;AACd,YAAY,OAAO;AACnB,cAAc,GAAG,GAAG;AACpB,cAAc,WAAW;AACzB,cAAc;AACd,aAAa;AACb,UAAU,CAAC,CAAC;AACZ,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,UAAU,IAAI,SAAS,KAAK,KAAK,EAAE;AACpF,YAAY,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK;AAC1C,cAAc,GAAG,GAAG;AACpB,cAAc,GAAG;AACjB,aAAa,CAAC,CAAC;AACf,UAAU;AACV,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG,UAAU,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AACrE,QAAQ,MAAM,KAAK,GAAG,UAAU,IAAI;AACpC,UAAU,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;AACzC,UAAU,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC5C,YAAY,GAAG,GAAG;AAClB,YAAY,gBAAgB,EAAE,KAAK;AACnC,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,eAAe,EAAE,IAAI;AACjC,YAAY,iBAAiB,EAAE;AAC/B,WAAW,CAAC,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,eAAe,GAAG,oBAAoB,CAAC,gBAAgB,CAAC;AACtE,QAAQ,MAAM,WAAW,GAAG;AAC5B,UAAU,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7C,UAAU,SAAS,EAAE,CAAC,IAAI;AAC1B,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;AAChH,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC;AAC5G,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5B,UAAU;AACV,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG;AAC5B,UAAU,WAAW,EAAE,CAAC,IAAI;AAC5B,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;AAC9B,cAAc,CAAC,CAAC,cAAc,EAAE;AAChC,cAAc,CAAC,CAAC,eAAe,EAAE;AACjC,YAAY;AACZ,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACxC,YAAY,OAAO,KAAK;AACxB,UAAU,CAAC;AACX,UAAU,SAAS,EAAE,CAAC,IAAI;AAC1B,YAAY,IAAI,WAAW;AAC3B,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;AAChH,YAAY,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC;AAC7G,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;AAC9B,cAAc,CAAC,CAAC,cAAc,EAAE;AAChC,cAAc,CAAC,CAAC,eAAe,EAAE;AACjC,YAAY;AACZ,YAAY,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;AACtF,UAAU;AACV,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,GAAG;AAC7D,UAAU,OAAO,EAAE;AACnB,SAAS,GAAG,KAAK;AACjB,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAClC,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/H,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC5H,QAAQ,CAAC,MAAM;AACf,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/H,UAAU,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC3H,QAAQ;AACR,QAAQ,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC1C,UAAU,GAAG,GAAG;AAChB,UAAU,WAAW,EAAE,OAAO;AAC9B,UAAU,SAAS;AACnB,UAAU,WAAW,EAAE,CAAC;AACxB,UAAU,eAAe,EAAE,CAAC;AAC5B,UAAU,iBAAiB;AAC3B,UAAU,gBAAgB,EAAE,MAAM,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxI,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACpJ,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC/I,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mBAAmB,GAAG,YAAY,IAAI;AAChD,MAAM,IAAI,sBAAsB;AAChC,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,GAAG,+BAA+B,EAAE,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,KAAK,IAAI,GAAG,sBAAsB,GAAG,+BAA+B,EAAE,CAAC;AACvN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AACtK,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC1K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC5K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AAC3K,QAAQ,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;AACrC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC;AAChD,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,IAAI,gBAAgB,GAAG,IAAI;AAC3B,SAAS,qBAAqB,GAAG;AACjC,EAAE,IAAI,OAAO,gBAAgB,KAAK,SAAS,EAAE,OAAO,gBAAgB;AACpE,EAAE,IAAI,SAAS,GAAG,KAAK;AACvB,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,IAAI,OAAO,GAAG;AACpB,QAAQ,SAAS,GAAG,IAAI;AACxB,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC;AACzB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;AAClD,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5C,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,SAAS,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,gBAAgB,GAAG,SAAS;AAC9B,EAAE,OAAO,gBAAgB;AACzB;AACA,SAAS,iBAAiB,CAAC,CAAC,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,YAAY;AAChC;;AAEA;;AAEA,MAAM,gBAAgB,GAAG;AACzB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,EAAE;AAC1B,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,KAAK;AAC1E,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,gBAAgB,GAAG,KAAK,IAAI;AACvC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC/B,QAAQ,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAC1C,UAAU,GAAG,GAAG;AAChB,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,YAAY;AACnE,SAAS,CAAC,CAAC;AACX,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;AACzC,MAAM,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5N,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AAC9M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,0BAA0B,GAAG,MAAM;AAC9C,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,MAAM,CAAC,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACpF,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,IAAI;AAC1G,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7D,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,qBAAqB,EAAE,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAClP,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK;AAC1D,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI;AACxH,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AACtF,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AAC5D,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACpH,IAAI,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACpH,IAAI,KAAK,CAAC,yBAAyB,GAAG,wBAAwB,CAAC,2BAA2B,EAAE,MAAM,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC7H,IAAI,KAAK,CAAC,0BAA0B,GAAG,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC;AAChI,IAAI,KAAK,CAAC,2BAA2B,GAAG,wBAAwB,CAAC,6BAA6B,EAAE,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC;AACnI,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACpJ,IAAI,KAAK,CAAC,qBAAqB,GAAG,YAAY,IAAI;AAClD,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACvJ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,uBAAuB,GAAG,KAAK,IAAI;AAC7C,MAAM,IAAI,MAAM;AAChB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE;AACjF,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,MAAM;AACnF,QAAQ,GAAG,GAAG;AACd,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG;AACpF,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACd,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3I,IAAI,KAAK,CAAC,uBAAuB,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChJ,IAAI,KAAK,CAAC,oCAAoC,GAAG,MAAM;AACvD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,OAAO;AACnB,QAAQ,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9F,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,qBAAqB,EAAE,GAAG,QAAQ,KAAK,QAAQ,GAAG,KAAK,CAAC,2BAA2B,EAAE,GAAG,QAAQ,KAAK,MAAM,GAAG,KAAK,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,0BAA0B,EAAE;AAC/M;;AAEA;;AAEA,MAAM,cAAc,GAAG;AACvB,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC/H,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM;AAC3C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;AAC7E,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,yBAAyB,EAAE;AAC9C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3I,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM;AAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE;AAChD,QAAQ,OAAO,IAAI,GAAG,EAAE;AACxB,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,6BAA6B,EAAE;AAClD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3I,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM;AAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE;AAChD,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,6BAA6B,EAAE;AAClD,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,eAAe,GAAG;AACxB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,cAAc,EAAE,MAAM;AAC5B,MAAM,wBAAwB,EAAE,MAAM,IAAI;AAC1C,QAAQ,IAAI,qBAAqB;AACjC,QAAQ,MAAM,KAAK,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE;AACtO,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;AACrE,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,kBAAkB,GAAG,MAAM;AACtC,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB;AACrG,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACpgB,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,OAAO,SAAS,CAAC,cAAc;AACrC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM;AACZ,QAAQ,cAAc,EAAE;AACxB,OAAO,GAAG,KAAK,CAAC,OAAO;AACvB,MAAM,OAAO,UAAU,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,cAAc,KAAK,MAAM,GAAG,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC;AACzT,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI;AACvC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAC/F,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC;AACvF,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,YAAY,GAAG;AACrB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC3D,MAAM,oBAAoB,EAAE;AAC5B,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,MAAM,GAAG,KAAK;AACtB,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,UAAU,GAAG,IAAI;AAC3B,QAAQ,CAAC,CAAC;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;AAC3L,QAAQ,IAAI,MAAM,EAAE;AACpB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,KAAK,CAAC,aAAa,EAAE;AAC/B,UAAU,MAAM,GAAG,KAAK;AACxB,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC5H,IAAI,KAAK,CAAC,qBAAqB,GAAG,QAAQ,IAAI;AAC9C,MAAM,IAAI,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE;AACvE,QAAQ,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7B,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,OAAO,KAAK,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;AACtF,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM;AAClD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,KAAK,CAAC,qBAAqB,EAAE;AACrC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;AAChD,MAAM,OAAO,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;;AAEhD;AACA,MAAM,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;AACzC,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAChC,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AACzC,QAAQ,OAAO,KAAK;AACpB,MAAM;;AAEN;AACA,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE;AAC1E,QAAQ,OAAO,KAAK;AACpB,MAAM;;AAEN;AACA,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,QAAQ,GAAG,CAAC;AACtB,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC5I,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;AAC3B,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;AACrD,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,QAAQ;AACrB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;AAClE,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC5E,QAAQ,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC7E,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACxE,QAAQ,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC7C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,oBAAoB,EAAE;AACzC,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,cAAc,GAAG,QAAQ,IAAI;AACrC,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;AAC/B,QAAQ,IAAI,SAAS;AACrB,QAAQ,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,QAAQ,IAAI,WAAW,GAAG,EAAE;AAC5B,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI;AACrE,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI;AACrC,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM;AACf,UAAU,WAAW,GAAG,GAAG;AAC3B,QAAQ;AACR,QAAQ,QAAQ,GAAG,CAAC,SAAS,GAAG,QAAQ,KAAK,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM;AACvE,QAAQ,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;AACjC,UAAU,OAAO;AACjB,YAAY,GAAG,WAAW;AAC1B,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG;AACtB,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;AACjC,UAAU,MAAM;AAChB,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY,GAAG;AACf,WAAW,GAAG,WAAW;AACzB,UAAU,OAAO,IAAI;AACrB,QAAQ;AACR,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,aAAa,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ;AAChD,MAAM,OAAO,CAAC,EAAE,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,QAAQ,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtO,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM;AAC7B,MAAM,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,YAAY;AACpE,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AAChU,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,uBAAuB,GAAG,MAAM;AACxC,MAAM,IAAI,eAAe,GAAG,IAAI;AAChC,MAAM,IAAI,UAAU,GAAG,GAAG;AAC1B,MAAM,OAAO,eAAe,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrD,QAAQ,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5D,QAAQ,eAAe,GAAG,UAAU,CAAC,aAAa,EAAE;AACpD,MAAM;AACN,MAAM,OAAO,eAAe;AAC5B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,wBAAwB,GAAG,MAAM;AACzC,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE;AAC1C,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,GAAG,CAAC,cAAc,EAAE;AAC5B,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,gBAAgB,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,yBAAyB,GAAG,OAAO;AACzC,EAAE,SAAS,EAAE,gBAAgB;AAC7B,EAAE,QAAQ,EAAE;AACZ,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,GAAG,KAAK;AACd,MAAM,UAAU,EAAE;AAClB,QAAQ,GAAG,yBAAyB,EAAE;AACtC,QAAQ,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU;AACrD;AACA,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,YAAY,EAAE,KAAK;AAC9D,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,MAAM,GAAG,KAAK;AACtB,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM;AACtC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,UAAU,GAAG,IAAI;AAC3B,QAAQ,CAAC,CAAC;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC7L,QAAQ,IAAI,MAAM,EAAE;AACpB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,KAAK,CAAC,cAAc,EAAE;AAChC,UAAU,MAAM,GAAG,KAAK;AACxB,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,OAAO,IAAI;AACrC,MAAM,MAAM,WAAW,GAAG,GAAG,IAAI;AACjC,QAAQ,IAAI,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC;AACrD,QAAQ,OAAO,QAAQ;AACvB,MAAM,CAAC;AACP,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC9G,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,IAAI;AAC5C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,yBAAyB,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,KAAK,IAAI,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AAC7L,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,OAAO,IAAI;AACpC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,IAAI,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;AAChE,QAAQ,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC;AACrK,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAClE,QAAQ,OAAO;AACf,UAAU,GAAG,GAAG;AAChB,UAAU;AACV,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,cAAc,GAAG,YAAY,IAAI;AAC3C,MAAM,IAAI,sBAAsB,EAAE,mBAAmB;AACrD,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,gBAAgB,GAAG,CAAC,sBAAsB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,SAAS,KAAK,IAAI,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;AACxS,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,aAAa,GAAG,YAAY,IAAI;AAC1C,MAAM,IAAI,sBAAsB,EAAE,oBAAoB;AACtD,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,eAAe,GAAG,CAAC,sBAAsB,GAAG,CAAC,oBAAoB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,QAAQ,KAAK,IAAI,GAAG,sBAAsB,GAAG,eAAe,CAAC;AACxS,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI;AACnC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7E,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS;AACxD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5D,QAAQ,OAAO;AACf,UAAU,GAAG,GAAG;AAChB,UAAU,SAAS;AACnB,UAAU;AACV,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,YAAY,GAAG,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AAC/D,MAAM,IAAI,qBAAqB;AAC/B,MAAM,IAAI,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AAC1I,MAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC;AACjD,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,GAAG,GAAG;AACd,QAAQ,SAAS,EAAE;AACnB,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,IAAI;AAC3E,MAAM,IAAI,WAAW,GAAG,EAAE;AAC1B,MAAM,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE;AACtC,QAAQ,WAAW,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC3E,MAAM;AACN,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC;AAC9E,IAAI,KAAK,CAAC,cAAc,GAAG,MAAM;AACjC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACrC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE;AAC5C,MAAM,IAAI,SAAS,KAAK,EAAE,EAAE;AAC5B,QAAQ,OAAO,IAAI;AACnB,MAAM;AACN,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;AAC3B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,CAAC;AACtC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAC/C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,MAAM;AAC3B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AACvC,QAAQ,OAAO,GAAG,GAAG,CAAC;AACtB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM;AAC5B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,MAAM;AAC3B,MAAM,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACzD,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE;AACtE,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAChF,QAAQ,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACjF,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;AAC3E,QAAQ,OAAO,KAAK,CAAC,wBAAwB,EAAE;AAC/C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,sBAAsB,EAAE;AAC3C,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM;AAC/B,MAAM,IAAI,sBAAsB;AAChC,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxK,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,MAAM;AAC5I,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,yBAAyB,GAAG,OAAO;AACzC,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,MAAM,EAAE;AACV,CAAC,CAAC;AACF,MAAM,UAAU,GAAG;AACnB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,yBAAyB,EAAE;AAC7C,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,YAAY,EAAE,KAAK;AAC9D,KAAK;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,iBAAiB,KAAK;AAChE,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI;AACzE,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,IAAI;AAChB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC,GAAG,EAAE;AACb,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI;AAChF,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC,GAAG,EAAE;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;AACtE,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;AACjC,QAAQ,IAAI,SAAS,EAAE,YAAY;AACnC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACnC,UAAU,IAAI,QAAQ,EAAE,WAAW;AACnC,UAAU,OAAO;AACjB,YAAY,GAAG,EAAE,CAAC,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,YAAY,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7K,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE;AAChC,UAAU,IAAI,SAAS,EAAE,YAAY;AACrC,UAAU,OAAO;AACjB,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpK,YAAY,MAAM,EAAE,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnJ,WAAW;AACX,QAAQ;AACR,QAAQ,OAAO;AACf,UAAU,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,SAAS,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,UAAU,MAAM,EAAE,CAAC,CAAC,YAAY,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjJ,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM;AAC1B,MAAM,IAAI,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,gBAAgB;AACxB,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,OAAO;AACvB,MAAM,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;AAClD,QAAQ,OAAO,gBAAgB,CAAC,GAAG,CAAC;AACpC,MAAM;AACN,MAAM,OAAO,CAAC,KAAK,GAAG,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,GAAG,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI;AACzG,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,WAAW,GAAG,MAAM;AAC5B,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,MAAM,MAAM;AACZ,QAAQ,GAAG;AACX,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACrC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrF,MAAM,OAAO,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK;AACxD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,cAAc,GAAG,MAAM;AAC/B,MAAM,IAAI,KAAK,EAAE,qBAAqB;AACtC,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE;AACxC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,GAAG,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI;AAClJ,QAAQ,IAAI;AACZ,UAAU;AACV,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,CAAC,qBAAqB,GAAG,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE;AACtJ,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,aAAa,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAClI,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,IAAI;AAC5C,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,OAAO,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,yBAAyB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,UAAU,KAAK,IAAI,GAAG,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;AACnQ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mBAAmB,GAAG,QAAQ,IAAI;AAC5C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;AACtD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,iBAAiB,EAAE,oBAAoB;AACnD,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,KAAK,IAAI,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,MAAM,CAAC,oBAAoB,GAAG,YAAY,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7M,MAAM;AACN,MAAM,OAAO,OAAO,CAAC,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACtH,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,KAAK;AACpE,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AACjH;AACA;AACA,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI;AAC9D,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7C,QAAQ,OAAO,GAAG,CAAC,uBAAuB,EAAE,GAAG,GAAG,GAAG,IAAI;AACzD,MAAM,CAAC,CAAC;AACR;AACA,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;AACxG,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AAC5C,QAAQ,GAAG,CAAC;AACZ,QAAQ;AACR,OAAO,CAAC,CAAC;AACT,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC7O,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AAC/P,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK;AAChK,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AACnE,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,YAAY,GAAG;AACrB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;AACnE,MAAM,kBAAkB,EAAE,IAAI;AAC9B,MAAM,uBAAuB,EAAE,IAAI;AACnC,MAAM,qBAAqB,EAAE;AAC7B;AACA;AACA;AACA,KAAK;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,eAAe,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxI,IAAI,KAAK,CAAC,iBAAiB,GAAG,YAAY,IAAI;AAC9C,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,KAAK,CAAC,eAAe,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACtJ,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,IAAI;AAC3C,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACnC,QAAQ,KAAK,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACpF,QAAQ,MAAM,YAAY,GAAG;AAC7B,UAAU,GAAG;AACb,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ;;AAEzE;AACA;AACA,QAAQ,IAAI,KAAK,EAAE;AACnB,UAAU,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI;AAC5C,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE;AACrC,cAAc;AACd,YAAY;AACZ,YAAY,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI;AACvC,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM;AACf,UAAU,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI;AAC5C,YAAY,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,UAAU,CAAC,CAAC;AACZ,QAAQ;AACR,QAAQ,OAAO,YAAY;AAC3B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AAC5E,MAAM,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACpG,MAAM,MAAM,YAAY,GAAG;AAC3B,QAAQ,GAAG;AACX,OAAO;AACP,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AAC9C,QAAQ,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;AAC7E,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,YAAY;AACzB,IAAI,CAAC,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE;AAChE,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AACjI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAC1E,IAAI,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC7I,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,6BAA6B,CAAC,CAAC;AAClF,IAAI,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC1I,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,EAAE;AAClB,UAAU,QAAQ,EAAE,EAAE;AACtB,UAAU,QAAQ,EAAE;AACpB,SAAS;AACT,MAAM;AACN,MAAM,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,4BAA4B,CAAC,CAAC;;AAEjF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM;AACvC,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ;AACrE,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,IAAI,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;AACpG,MAAM,IAAI,iBAAiB,EAAE;AAC7B,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;AACzF,UAAU,iBAAiB,GAAG,KAAK;AACnC,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,iBAAiB;AAC9B,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM;AAC3C,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;AACzG,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,IAAI,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM;AAC7D,MAAM,IAAI,qBAAqB,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1F,QAAQ,qBAAqB,GAAG,KAAK;AACrC,MAAM;AACN,MAAM,OAAO,qBAAqB;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM;AACxC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC,CAAC,MAAM;AAC5I,MAAM,OAAO,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,MAAM;AAC7F,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,yBAAyB,GAAG,MAAM;AAC5C,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ;AACvE,MAAM,OAAO,KAAK,CAAC,wBAAwB,EAAE,GAAG,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAClK,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM;AAClD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACrD,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,mCAAmC,GAAG,MAAM;AACtD,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACzD,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7B,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AAC1C,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE;AAC5C,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACnC,QAAQ,IAAI,oBAAoB;AAChC,QAAQ,KAAK,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,CAAC,UAAU;AAClE,QAAQ,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,UAAU,KAAK,KAAK,EAAE;AACxD,UAAU,OAAO,GAAG;AACpB,QAAQ;AACR,QAAQ,MAAM,cAAc,GAAG;AAC/B,UAAU,GAAG;AACb,SAAS;AACT,QAAQ,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,oBAAoB,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,oBAAoB,GAAG,IAAI,EAAE,KAAK,CAAC;AAC7K,QAAQ,OAAO,cAAc;AAC7B,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,aAAa,GAAG,MAAM;AAC9B,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,iBAAiB,GAAG,MAAM;AAClC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,MAAM;AAC3D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,uBAAuB,GAAG,MAAM;AACxC,MAAM,MAAM;AACZ,QAAQ;AACR,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,KAAK;AAC1D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,YAAY,GAAG,MAAM;AAC7B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,UAAU,EAAE;AAClE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACpD,MAAM;AACN,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AAC9G,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,mBAAmB,GAAG,MAAM;AACpC,MAAM,IAAI,sBAAsB;AAChC,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,UAAU,EAAE;AACrE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC;AACvD,MAAM;AACN,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI;AACnH,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,iBAAiB,GAAG,MAAM;AAClC,MAAM,IAAI,sBAAsB;AAChC,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,KAAK,UAAU,EAAE;AACvE,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACzD,MAAM;AACN,MAAM,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI;AACrH,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,wBAAwB,GAAG,MAAM;AACzC,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE;AAC1C,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,OAAO;AACnB,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AACnF,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE;AACF,CAAC;AACD,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,KAAK;AACnF,EAAE,IAAI,YAAY;AAClB,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;;AAEpC;;AAEA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE;AAClC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE;AAC5B,MAAM,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI;AAC/B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,cAAc,CAAC,EAAE,CAAC;AAC7B,EAAE;AACF;;AAEA,EAAE,IAAI,eAAe,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC,mBAAmB,EAAE,EAAE;AACnH,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AAC1G,EAAE;AACF,CAAC;AACD,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AACvC,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY;AACpD,EAAE,MAAM,mBAAmB,GAAG,EAAE;AAChC,EAAE,MAAM,mBAAmB,GAAG,EAAE;;AAEhC;AACA,EAAE,MAAM,WAAW,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC7C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC3B,MAAM,IAAI,aAAa;AACvB,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC;AACzD,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAQ,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACzC,MAAM;AACN,MAAM,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE;AACzE,QAAQ,GAAG,GAAG;AACd,UAAU,GAAG,GAAG;AAChB,UAAU,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO;AAC1C,SAAS;AACT,MAAM;AACN,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,GAAG;AAClB,MAAM;AACN,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACtB,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpC,IAAI,QAAQ,EAAE,mBAAmB;AACjC,IAAI,QAAQ,EAAE;AACd,GAAG;AACH;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE;AACvC,EAAE,IAAI,iBAAiB;AACvB,EAAE,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,iBAAiB,GAAG,KAAK;AACpF;AACA,SAAS,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;AACjD,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,EAAE,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpF,EAAE,IAAI,mBAAmB,GAAG,IAAI;AAChC,EAAE,IAAI,YAAY,GAAG,KAAK;AAC1B,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;AAChC;AACA,IAAI,IAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE;AAC9C,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI;AAC3B,MAAM,CAAC,MAAM;AACb,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM;AACN,IAAI;;AAEJ;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AACjD,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;AACxE,MAAM,IAAI,sBAAsB,KAAK,KAAK,EAAE;AAC5C,QAAQ,YAAY,GAAG,IAAI;AAC3B,MAAM,CAAC,MAAM,IAAI,sBAAsB,KAAK,MAAM,EAAE;AACpD,QAAQ,YAAY,GAAG,IAAI;AAC3B,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM,CAAC,MAAM;AACb,QAAQ,mBAAmB,GAAG,KAAK;AACnC,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,mBAAmB,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,KAAK;AACpE;;AAEA,MAAM,mBAAmB,GAAG,YAAY;AACxC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC/C,EAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9H,CAAC;AACD,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC5D,EAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClG,CAAC;;AAED;AACA;AACA,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACvC,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACvH,CAAC;;AAED;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACpD,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3F,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC3C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAEnC;AACA;AACA;AACA,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,CAAC;AACD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACxC,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;;AAED;;AAEA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC7B,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvD,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC7B,IAAI,OAAO,CAAC;AACZ,EAAE;AACF,EAAE,OAAO,EAAE;AACX;;AAEA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE;AACzC;AACA;AACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3D,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;AAE3D;AACA,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;;AAEjC;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AACnB,QAAQ,OAAO,CAAC;AAChB,MAAM;AACN,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AACnB,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM;AACN,IAAI;;AAEJ;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,MAAM,OAAO,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI;;AAEJ;AACA,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE;AACjB,MAAM,OAAO,CAAC;AACd,IAAI;AACJ,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE;AACjB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AAC5B;;AAEA;;AAEA,MAAM,UAAU,GAAG;AACnB,EAAE,YAAY;AACd,EAAE,yBAAyB;AAC3B,EAAE,IAAI;AACN,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE;AACF,CAAC;;AAED;;AAEA,MAAM,UAAU,GAAG;AACnB,EAAE,eAAe,EAAE,KAAK,IAAI;AAC5B,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,mBAAmB,EAAE,MAAM;AAC7B,IAAI,OAAO;AACX,MAAM,SAAS,EAAE,MAAM;AACvB,MAAM,aAAa,EAAE;AACrB,KAAK;AACL,EAAE,CAAC;AACH,EAAE,iBAAiB,EAAE,KAAK,IAAI;AAC9B,IAAI,OAAO;AACX,MAAM,eAAe,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC;AACzD,MAAM,gBAAgB,EAAE,CAAC,IAAI;AAC7B,QAAQ,OAAO,CAAC,CAAC,QAAQ;AACzB,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AACnC,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM;AACpC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,MAAM,IAAI,QAAQ,GAAG,KAAK;AAC1B,MAAM,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACnC,QAAQ,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACpE,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,EAAE;AACvE,UAAU,OAAO,UAAU,CAAC,QAAQ;AACpC,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,UAAU,QAAQ,GAAG,IAAI;AACzB,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,YAAY,OAAO,UAAU,CAAC,YAAY;AAC1C,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,OAAO,UAAU,CAAC,IAAI;AAC9B,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,KAAK;AAC7B,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM;AAClC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,EAAE;AACzB,MAAM;AACN,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AACnX,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC3D,MAAM,MAAM,cAAc,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,IAAI;AACzE,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI;AAC9B;AACA,QAAQ,MAAM,eAAe,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACxF,QAAQ,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAC3F,QAAQ,IAAI,UAAU,GAAG,EAAE;;AAE3B;AACA,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,QAAQ,GAAG,cAAc,GAAG,IAAI,GAAG,gBAAgB,KAAK,MAAM;;AAE1E;AACA,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK,EAAE;AAC5E,UAAU,IAAI,eAAe,EAAE;AAC/B,YAAY,UAAU,GAAG,QAAQ;AACjC,UAAU,CAAC,MAAM;AACjB,YAAY,UAAU,GAAG,KAAK;AAC9B,UAAU;AACV,QAAQ,CAAC,MAAM;AACf;AACA,UAAU,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,YAAY,UAAU,GAAG,SAAS;AAClC,UAAU,CAAC,MAAM,IAAI,eAAe,EAAE;AACtC,YAAY,UAAU,GAAG,QAAQ;AACjC,UAAU,CAAC,MAAM;AACjB,YAAY,UAAU,GAAG,SAAS;AAClC,UAAU;AACV,QAAQ;;AAER;AACA,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE;AACrC;AACA,UAAU,IAAI,CAAC,cAAc,EAAE;AAC/B;AACA,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,cAAc,UAAU,GAAG,QAAQ;AACnC,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE;AAClC,UAAU,IAAI,qBAAqB;AACnC,UAAU,UAAU,GAAG,CAAC,GAAG,GAAG,EAAE;AAChC,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE;AACzB,YAAY,IAAI,EAAE;AAClB,WAAW,CAAC;AACZ;AACA,UAAU,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5K,QAAQ,CAAC,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC5C;AACA,UAAU,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACpC,YAAY,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AACpC,cAAc,OAAO;AACrB,gBAAgB,GAAG,CAAC;AACpB,gBAAgB,IAAI,EAAE;AACtB,eAAe;AACf,YAAY;AACZ,YAAY,OAAO,CAAC;AACpB,UAAU,CAAC,CAAC;AACZ,QAAQ,CAAC,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC5C,UAAU,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAC1D,QAAQ,CAAC,MAAM;AACf,UAAU,UAAU,GAAG,CAAC;AACxB,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE;AACzB,YAAY,IAAI,EAAE;AAClB,WAAW,CAAC;AACZ,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,IAAI,EAAE,qBAAqB;AACrC,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,KAAK,MAAM;AAC/M,MAAM,OAAO,aAAa,GAAG,MAAM,GAAG,KAAK;AAC3C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,mBAAmB,GAAG,KAAK,IAAI;AAC1C,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,EAAE;AACzD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;AAC3C,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,OAAO,kBAAkB;AACjC,MAAM;AACN,MAAM,IAAI,QAAQ,KAAK,kBAAkB,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;AAClJ;AACA,MAAM,KAAK,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;AACxH,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,OAAO,QAAQ,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM;AACjD,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM;AAC9B,MAAM,IAAI,qBAAqB,EAAE,sBAAsB;AACvD,MAAM,OAAO,CAAC,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;AACzO,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,eAAe,GAAG,MAAM;AACnC,MAAM,IAAI,KAAK,EAAE,sBAAsB;AACvC,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,IAAI,GAAG,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU;AACzL,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM;AAC/B,MAAM,IAAI,qBAAqB;AAC/B,MAAM,MAAM,UAAU,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AAClJ,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK;AACnE,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC,MAAM,IAAI,sBAAsB,EAAE,sBAAsB;AACxD,MAAM,OAAO,CAAC,sBAAsB,GAAG,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,sBAAsB,GAAG,EAAE;AAC9M,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM;AAChC;AACA,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AACnG,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,uBAAuB,GAAG,MAAM;AAC3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE;AACzC,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACxC,QAAQ,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/L,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,WAAW,EAAE,KAAK,IAAI;AACxB,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AACzH,IAAI,KAAK,CAAC,YAAY,GAAG,YAAY,IAAI;AACzC,MAAM,IAAI,qBAAqB,EAAE,mBAAmB;AACpD,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACpM,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,oBAAoB,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;AACjE,IAAI,KAAK,CAAC,iBAAiB,GAAG,MAAM;AACpC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACxE,QAAQ,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACzE,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACpE,QAAQ,OAAO,KAAK,CAAC,oBAAoB,EAAE;AAC3C,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,kBAAkB,EAAE;AACvC,IAAI,CAAC;AACL,EAAE;AACF,CAAC;;AAED,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc;AAClI;AACA,eAAe;AACf;AACA,UAAU,EAAE,cAAc;AAC1B;AACA,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC;;AAEpE;;AAEA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,IAAI,kBAAkB,EAAE,qBAAqB;AAC/C,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACzF,IAAI,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAC9C,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACzH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AAClE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC5G,EAAE,CAAC,EAAE,EAAE,CAAC;AACR,EAAE,MAAM,YAAY,GAAG,OAAO,IAAI;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;AACpC,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC;AAChE,IAAI;AACJ,IAAI,OAAO;AACX,MAAM,GAAG,cAAc;AACvB,MAAM,GAAG;AACT,KAAK;AACL,EAAE,CAAC;AACH,EAAE,MAAM,gBAAgB,GAAG,EAAE;AAC7B,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,GAAG,gBAAgB;AACvB,IAAI,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,YAAY,KAAK,IAAI,GAAG,qBAAqB,GAAG,EAAE;AAC3F,GAAG;AACH,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI;AACrC,IAAI,IAAI,qBAAqB;AAC7B,IAAI,YAAY,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,YAAY;AAC5K,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,IAAI,aAAa,GAAG,KAAK;AAC3B,EAAE,MAAM,YAAY,GAAG;AACvB,IAAI,SAAS;AACb,IAAI,OAAO,EAAE;AACb,MAAM,GAAG,cAAc;AACvB,MAAM,GAAG;AACT,KAAK;AACL,IAAI,YAAY;AAChB,IAAI,MAAM,EAAE,EAAE,IAAI;AAClB,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ,aAAa,GAAG,IAAI;;AAE5B;AACA;AACA,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;AACrC,UAAU,OAAO,MAAM,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,KAAK,EAAE,EAAE;AAC5B,UAAU;AACV,UAAU,aAAa,GAAG,KAAK;AAC/B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM;AAC3C,UAAU,MAAM,KAAK;AACrB,QAAQ,CAAC,CAAC,CAAC;AACX,MAAM;AACN,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,MAAM;AACjB,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AACxC,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,OAAO,IAAI;AAC3B,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,MAAM,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;AAC9C,IAAI,CAAC;AACL,IAAI,QAAQ,EAAE,MAAM;AACpB,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AAChC,IAAI,CAAC;AACL,IAAI,QAAQ,EAAE,OAAO,IAAI;AACzB,MAAM,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACjF,IAAI,CAAC;AACL,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AACvC,MAAM,IAAI,qBAAqB;AAC/B,MAAM,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAChN,IAAI,CAAC;AACL,IAAI,eAAe,EAAE,MAAM;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACnC,QAAQ,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AACrE,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,gBAAgB,EAAE;AACrC,IAAI,CAAC;AACL;AACA;;AAEA,IAAI,WAAW,EAAE,MAAM;AACvB,MAAM,OAAO,KAAK,CAAC,qBAAqB,EAAE;AAC1C,IAAI,CAAC;AACL;AACA,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK;AAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;AACjG,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,GAAG,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AACrD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,UAAU;AACV,UAAU,MAAM,IAAI,KAAK,EAAE;AAC3B,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,GAAG;AAChB,IAAI,CAAC;AACL,IAAI,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,aAAa,IAAI;AACrF,MAAM,IAAI,cAAc;AACxB,MAAM,aAAa,GAAG,CAAC,cAAc,GAAG,aAAa,KAAK,IAAI,GAAG,cAAc,GAAG,EAAE;AACpF,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,KAAK,IAAI;AACzB,UAAU,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;AACjE,UAAU,IAAI,iBAAiB,CAAC,WAAW,EAAE;AAC7C,YAAY,OAAO,iBAAiB,CAAC,WAAW;AAChD,UAAU;AACV,UAAU,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAC5C,YAAY,OAAO,iBAAiB,CAAC,EAAE;AACvC,UAAU;AACV,UAAU,OAAO,IAAI;AACrB,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI,EAAE,KAAK,IAAI;AACvB,UAAU,IAAI,qBAAqB,EAAE,kBAAkB;AACvD,UAAU,OAAO,CAAC,qBAAqB,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,kBAAkB,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI;AACpN,QAAQ,CAAC;AACT,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AACpD,UAAU,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;AACjH,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,GAAG;AACX,OAAO;AACP,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC;AACvE,IAAI,cAAc,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO;AAC/C,IAAI,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,UAAU,IAAI;AACtE,MAAM,MAAM,cAAc,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;AAClE,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,UAAU,KAAK,GAAG,CAAC;AACnB,QAAQ;AACR,QAAQ,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI;AAC3C,UAAU,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;AACtE,UAAU,MAAM,iBAAiB,GAAG,SAAS;AAC7C,UAAU,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;AACxH,UAAU,OAAO,MAAM;AACvB,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC;AACP,MAAM,OAAO,cAAc,CAAC,UAAU,CAAC;AACvC,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AAChE,IAAI,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,UAAU,IAAI;AACzE,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI;AAC1C,QAAQ,OAAO,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AACpE,IAAI,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,IAAI;AACnF,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK;AACjD,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM;AAC/B,QAAQ,OAAO,GAAG;AAClB,MAAM,CAAC,EAAE,EAAE,CAAC;AACZ,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AACxE,IAAI,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK;AACrH,MAAM,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;AAC7E,MAAM,OAAO,YAAY,CAAC,WAAW,CAAC;AACtC,IAAI,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AACpE,IAAI,SAAS,EAAE,QAAQ,IAAI;AAC3B,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;AAC7D,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,MAAM,EAAE;AAC5D,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC7E,MAAM;AACN,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AACpC,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;AAChF,EAAE;AACF,EAAE,OAAO,KAAK;AACd;;AAEA,SAAS,eAAe,GAAG;AAC3B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI;AAC3D,IAAI,MAAM,QAAQ,GAAG;AACrB,MAAM,IAAI,EAAE,EAAE;AACd,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE;AAChB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,UAAU,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;AACjE,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;AAC5B,QAAQ,KAAK,GAAG,CAAC;AACjB,MAAM;AACN,MAAM,MAAM,IAAI,GAAG,EAAE;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;;AAErK;AACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;AACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACvC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEtB;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;AACtC,UAAU,IAAI,oBAAoB;AAClC,UAAU,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE5E;AACA,UAAU,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,eAAe,KAAK,IAAI,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACnG,YAAY,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACzE,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACpC,IAAI,OAAO,QAAQ;AACnB,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACnG;;AAEA,SAAS,mBAAmB,GAAG;AAC/B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,KAAK;AAC5K,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;AAC7G,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC/B;AACA,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC/B,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AACxE;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE;AAC9B,EAAE,MAAM,YAAY,GAAG,EAAE;AACzB,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI;AAC3B,IAAI,IAAI,YAAY;AACpB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,EAAE;AAC5F,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AACpC,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAClC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC/B,IAAI,QAAQ,EAAE,QAAQ,CAAC;AACvB,GAAG;AACH;;AAyYA,SAAS,qBAAqB,CAAC,IAAI,EAAE;AACrC,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,GAAG,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,KAAK;AACpM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,MAAM;AACN,KAAK,GAAG,UAAU;AAClB,IAAI,IAAI;AACR,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM;AACN,KAAK,GAAG,QAAQ;AAChB,IAAI,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS;AAC1C,IAAI,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ;AACxC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;AACzC,IAAI,IAAI,iBAAiB;AACzB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE;AAC7C,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ;AACR,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,iBAAiB,GAAG;AAC1B,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,IAAI,iBAAiB,CAAC,QAAQ,GAAG,EAAE;AACnC,IAAI,MAAM,SAAS,GAAG,GAAG,IAAI;AAC7B,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;AAC9B,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AACtC,MAAM;AACN,IAAI,CAAC;AACL,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,IAAI,OAAO,iBAAiB;AAC5B,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC;AAC1E;;AAEA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9G,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACvE,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO;AACjD,IAAI,MAAM,cAAc,GAAG,EAAE;;AAE7B;AACA,IAAI,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI;AACzD,MAAM,IAAI,gBAAgB;AAC1B,MAAM,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE;AAC3G,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,EAAE;AAC7B,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,IAAI;AAC1C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AAClD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACrC,QAAQ,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;AACrD,QAAQ,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;AACrD,QAAQ,SAAS,EAAE,MAAM,CAAC,YAAY;AACtC,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC7B;AACA;AACA,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1C,QAAQ,GAAG;AACX,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AACtC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,UAAU,IAAI,eAAe;AAC7B,UAAU,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC/C,UAAU,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;AACzD,UAAU,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa;AACxD,UAAU,MAAM,MAAM,GAAG,CAAC,eAAe,GAAG,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,eAAe,GAAG,KAAK;AAC1H,UAAU,IAAI,OAAO,GAAG,CAAC;;AAEzB;AACA,UAAU,IAAI,aAAa,EAAE;AAC7B,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,YAAY,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS;AACnD,YAAY,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS;AACnD,YAAY,IAAI,UAAU,IAAI,UAAU,EAAE;AAC1C,cAAc,IAAI,aAAa,KAAK,OAAO,EAAE,OAAO,UAAU,GAAG,EAAE,GAAG,CAAC;AACvE,cAAc,IAAI,aAAa,KAAK,MAAM,EAAE,OAAO,UAAU,GAAG,CAAC,GAAG,EAAE;AACtE,cAAc,OAAO,GAAG,UAAU,IAAI,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,aAAa,GAAG,CAAC,aAAa;AAClG,YAAY;AACZ,UAAU;AACV,UAAU,IAAI,OAAO,KAAK,CAAC,EAAE;AAC7B,YAAY,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;AACpE,UAAU;;AAEV;AACA,UAAU,IAAI,OAAO,KAAK,CAAC,EAAE;AAC7B,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,OAAO,IAAI,EAAE;AAC3B,YAAY;AACZ,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE;AAC1C,cAAc,OAAO,IAAI,EAAE;AAC3B,YAAY;AACZ,YAAY,OAAO,OAAO;AAC1B,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACtC,MAAM,CAAC,CAAC;;AAER;AACA,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;AAChC,QAAQ,IAAI,YAAY;AACxB,QAAQ,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE;AACzE,UAAU,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C,QAAQ;AACR,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,UAAU;AACvB,IAAI,CAAC;AACL,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,MAAM,QAAQ,EAAE,cAAc;AAC9B,MAAM,QAAQ,EAAE,QAAQ,CAAC;AACzB,KAAK;AACL,EAAE,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACzG;;ACl8GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;AAEA;AACA;AACA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;AACjC,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI;AACrG;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,iBAAiB,CAAC,SAAS,CAAC;AACvG;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,OAAO,SAAS,KAAK,UAAU,IAAI,CAAC,MAAM;AACnD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;AAClD,IAAI,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB;AAC9D,EAAE,CAAC,GAAG;AACN;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE;AACtC,EAAE,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AAChK;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,KAAK,EAAE,EAAE;AACb;AACA,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3B;AACA,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,GAAG;AACP,GAAG;;AAEH;AACA,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO;AAC3C,IAAI,OAAO,EAAE,WAAW,CAAC,eAAe;AACxC,GAAG,CAAC,CAAC;;AAEL;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;;AAE/E;AACA;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK;AACvC,IAAI,GAAG,IAAI;AACX,IAAI,GAAG,OAAO;AACd,IAAI,KAAK,EAAE;AACX,MAAM,GAAG,KAAK;AACd,MAAM,GAAG,OAAO,CAAC;AACjB,KAAK;AACL;AACA;AACA,IAAI,aAAa,EAAE,OAAO,IAAI;AAC9B,MAAM,QAAQ,CAAC,OAAO,CAAC;AACvB,MAAM,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACrE,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,QAAQ,CAAC,OAAO;AACzB;;ACMO,MAAM,sBAAsB,aAAA,CAAwC;AAAA,EACzE,gBAAgB,MAAM;AACxB,CAAC,CAAA;AACM,MAAM,sBAAA,GAAyB,cAEpC,MAAM;AAAC,CAAC,CAAA;;AC7EH,SAAS,yBAAA,GAA4B;AAC1C,EAAA,MAAM,QAAA,GAAW,WAAW,sBAAsB,CAAA;AAElD,EAAA,MAAM,mBAAA,GAAsB,YAAY,MAAM;AAC5C,IAAA,QAAA,CAAS;AAAA,MACP,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,YAAA,KAA+B;AAC9B,MAAA,QAAA,CAAS;AAAA,QACP,IAAA,EAAM,YAAA;AAAA,QACN,OAAA,EAAS,EAAE,YAAA;AAAa,OACzB,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAKA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,SAAA,KAAgD;AAC/C,MAAA,QAAA,CAAS;AAAA,QACP,IAAA,EAAM,YAAA;AAAA,QACN,OAAA,EAAS,EAAE,SAAA;AAAU,OACtB,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAKA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,SAAA,KAAgD;AAC/C,MAAA,QAAA,CAAS;AAAA,QACP,IAAA,EAAM,YAAA;AAAA,QACN,OAAA,EAAS,EAAE,SAAA;AAAU,OACtB,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,QAAA,CAAS;AAAA,MACP,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,iBAAA,GAAoB,YAAY,MAAM;AAC1C,IAAA,QAAA,CAAS,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,QAAA,CAAS,EAAE,IAAA,EAAM,oBAAA,EAAsB,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,OAAO;AAAA,IACL,mBAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;;;;AClBA,MAAM,kBAAkB,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,mBAAA,GAAsB,EAAA,CAAG,SAAA,EAAWD,QAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAS,mBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,mBAAA;AAAA,MAEV;AAAA;AAAA,GACH;AAEJ,CAAA;AASA,MAAM,gBAAgB,CAAC;AAAA,EACrB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,mBAAA,GAAsB,EAAA,CAAG,SAAA,EAAWA,QAAA,CAAO,iBAAiB,CAAC,CAAA;AACnE,EAAA,MAAM,EAAE,mBAAA,EAAqB,IAAA,EAAM,eAAA,KACjC,yBAAA,EAA0B;AAE5B,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA4C;AAC9D,IAAA,IAAI,CAAC,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,aAAqB,CAAA,EAAG;AAC9D,MAAA,IAAA,EAAK;AAAA,IACP;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA4C;AAC/D,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AAExC,MAAA,mBAAA,EAAoB;AACpB,MAAA;AAAA,IACF;AAKA,IAAA,MAAM,WAAW,KAAA,CAAM,MAAA;AACvB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAqB,iBAAiB,CAAA;AAC9D,IAAA,MAAM,WAAA,GAAc,MAAA,EAAQ,YAAA,CAAa,eAAe,CAAA;AACxD,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAI,YAAY,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACjE,MAAA,IAAI,CAAC,OAAO,KAAA,CAAM,QAAQ,KAAK,CAAC,MAAA,CAAO,KAAA,CAAM,WAAW,CAAA,EAAG;AACzD,QAAA,eAAA,CAAgB,EAAE,QAAA,EAAU,WAAA,EAAa,CAAA;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAS,iBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,mBAAA;AAAA,MACX,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,QAAA;AAAA,MACf,IAAA,EAAM,aAAa,UAAA,GAAa,MAAA;AAAA,MAChC,QAAA,EAAU,CAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MACT,MAAA,EAAQ,UAAA;AAAA,MAEP;AAAA;AAAA,GACH;AAEJ,CAAA;AAUO,MAAM,YAAY,CAAC,EAAE,IAAA,EAAM,GAAG,MAAK,KAAsB;AAC9D,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,IAAA,EAAM,CAAA;AAAA,EACpC;AAEA,EAAA,IAAI,UAAA,IAAc,IAAA,IAAQ,UAAA,IAAc,IAAA,EAAM;AAC5C,IAAA,uBACE,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,UAAU,IAAA,CAAK;AAAA;AAAA,KACjB;AAAA,EAEJ;AACF,CAAA;;;;;;AC9HO,SAAS,UAAU,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAmB;AACrE,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,YAAY,CAAA,EAAG,KAAK,SAAS,CAAA;AACvD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAE9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACtCO,MAAM,uBAAA,GAA0B,CACrC,MAAA,KACuB;AACvB,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAY;AACpC,EAAA,MAAM,sBAAA,GACJ,QAAA,KAAa,MAAA,IAAU,MAAA,CAAO,gBAAgB,MAAM,CAAA;AACtD,EAAA,MAAM,wBAAA,GACJ,QAAA,KAAa,OAAA,IAAW,MAAA,CAAO,iBAAiB,OAAO,CAAA;AAEzD,EAAA,IAAI,sBAAA,EAAwB;AAC1B,IAAA,OAAOA,SAAO,yBAAyB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,wBAAA,EAA0B;AAC5B,IAAA,OAAOA,SAAO,2BAA2B,CAAA;AAAA,EAC3C;AACF,CAAA;;;;;;;;ACZO,MAAM,gCAAgC,MAAM;AACjD,EAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAWA,QAAA,CAAO,0CAA0C,CAAA,EAChE,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAKE,OAAA;AAAA,MACL,IAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAM,QAAA;AAAA,MACN,YAAA,EAAW;AAAA;AAAA,GACb,EACF,CAAA;AAEJ,CAAA;;ACkBO,MAAM,aAAA,GAAgB,UAAA,CAG3B,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,YAAA,EAAc,YAAA,EAAc,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AAC7E,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGF,QAAA,CAAO,iBAAiB,GAAG,SAAA,EAAW;AAAA,IACvD,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,YAAA;AAAA,IACxC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG;AAAA,GACzC,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MAEC,GAAA;AAAA,MACA,UAAA,EAAS,iBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;;;;;;;;;;;;;;;;;;AC5DrB,SAAS,yBAAyB,YAAA,EAAoC;AAC3E,EAAA,OAAO,CAAA,EAAG,YAAA,CAAa,QAAQ,CAAA,CAAA,EAAI,aAAa,WAAW,CAAA,CAAA;AAC7D;AAKO,SAAS,qBAAA,CACd,MACA,IAAA,EACS;AACT,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAA,EAAM,OAAO,KAAA;AAC3B,EAAA,OACE,KAAK,QAAA,KAAa,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,gBAAgB,IAAA,CAAK,WAAA;AAEjE;;ACPO,SAAS,YAAe,IAAA,EAAiC;AAE9D,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,SAAA;AAG9C,EAAA,IAAI,WAAW,EAAA,EAAI;AACjB,IAAA,OAAO,SAAA,CAAU,EAAA;AAAA,EACnB;AAEA,EAAA,OAAO,KAAK,MAAA,CAAO,EAAA;AACrB;AAUO,SAAS,YAAA,CACd,MACA,SAAA,EACM;AACN,EAAA,MAAM,KAAA,GAAQ,KAAK,QAAA,EAAS;AAI5B,EAAA,OAAO,KAAA;AACT;AAUO,SAAS,eAAA,CACd,MACA,SAAA,EACoD;AACpD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA;AACnC,EAAA,MAAM,QAAA,GAAY,MAAM,UAAA,EACpB,QAAA;AAEJ,EAAA,OAAO,QAAA;AACT;AAWO,SAAS,iCAAA,CAAkC;AAAA,EAChD,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKS;AACP,EAAA,OAAA,CAAQ,IAAA;AAAA,IACN,uBAAuB,QAAQ,CAAA,iBAAA,EAAoB,QAAQ,CAAA,UAAA,EAAa,YAAY,cAAc,YAAY,CAAA,CAAA;AAAA,GAChH;AACF;;AC5EO,MAAM,sBAAA,GAAyB,CAAI,MAAA,KAAqC;AAC7E,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAY;AAEpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,aAAa,MAAA,GAAS,CAAA,EAAG,OAAO,QAAA,CAAS,MAAM,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAC7D,KAAA,EAAO,aAAa,OAAA,GAAU,CAAA,EAAG,OAAO,QAAA,CAAS,OAAO,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IAChE,QAAA,EAAU,WAAW,QAAA,GAAW,UAAA;AAAA,IAChC,MAAA,EAAQ,WAAW,CAAA,GAAI;AAAA,GACzB;AACF,CAAA;AAEA,MAAM,oBAAA,GAAsC,OAAO,MAAA,CAAO;AAAA,EACxD,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAC,CAAA;AAEM,MAAM,sBAAA,GAAyB,CAAI,MAAA,KAAqC;AAC7E,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAY;AACpC,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAErC,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,UAAU,OAAO,oBAAA;AACtB,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA,KAAa,MAAA,GAAS,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,MAC1C,KAAA,EAAO,QAAA,KAAa,OAAA,GAAU,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,MAC7C,QAAA,EAAU,QAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAC,CAAA;AAC5B,CAAA;;AClCO,MAAM,qCAAA,GACX,sCAAA;AAQK,MAAM,uCAAA,GACX,wCAAA;;AC+BK,SAAS,2BACd,KAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAElD,EAAA,MAAM,OAAA,GAAU,OAA6B,IAAI,CAAA;AAEjD,EAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,YAAA,EAAa;AAC3C,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,aAAA,EAAc;AAC7C,EAAA,MAAM,iBAAA,GAAoB,KAAK,GAAA,CAAI,cAAA;AAGnC,EAAA,MAAM,WAAW,MAAA,CAAO,EAAA;AACxB,EAAA,MAAM,wBACJ,QAAA,KAAa,qCAAA;AACf,EAAA,MAAM,0BACJ,QAAA,KAAa,uCAAA;AACf,EAAA,MAAM,cAAc,CAAC,CAAC,KAAK,GAAA,CAAI,YAAA,IAAgB,YAAA,EAAa;AAE5D,EAAA,MAAM,eAAe,qBAAA,IAAyB,YAAA;AAC9C,EAAA,MAAM,YAAA,GACH,yBAAyB,WAAA,IAAe,IAAA,CAAK,IAAI,YAAA,EAAa,IAC9D,2BAA2B,CAAC,WAAA;AAE/B,EAAA,MAAM,IAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,QAAA,CAAyB,IAAA;AAChD,EAAA,MAAM,SAAA,GAAY,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,EAAa,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc,IAAA,EAAM,QAAA,GAAW,MAAA,CAAO,EAAa,CAAA;AAEzD,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,sBAAsB,CAAA,EAAG,KAAK,SAAA,EAAW;AAAA,IACjE,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC,SAAA;AAAA,IAC1C,CAACA,SAAO,8BAA8B,CAAC,GAAG,CAAC,SAAA,IAAa,CAAC,CAAC,WAAA;AAAA,IAC1D,CAACG,QAAA,CAAoB,4BAA4B,CAAC,GAAG,YAAA;AAAA,IACrD,CAACA,QAAA,CAAoB,4BAA4B,CAAC,GAAG;AAAA,GACtD,CAAA;AACD,EAAA,MAAM,mBAAA,GAAsB,uBAA0B,MAAM,CAAA;AAE5D,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAU,GAAI,yBAAA,EAA0B;AAE3D,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAAqD;AACpD,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,IAAI,CAAA;AACd,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,gBAAgB,aAAA,EAAe;AACjC,YAAA,iBAAA,EAAkB;AAClB,YAAA;AAAA,UACF;AACA,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,YAAA,IAAgB,CAAC,aAAA,EAAe;AAClC,YAAA,iBAAA,EAAkB;AAClB,YAAA;AAAA,UACF;AACA,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,iBAAA,EAAkB;AAAA,YACpB;AACA,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,IAAA,CAAK,IAAI,cAAA,EAAe;AAAA,YAC1B;AACA,YAAA;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAEE;AACJ,IACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,GAAA,EAAK,OAAA;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,KAAA,EAAO,mBAAA;AAAA,MACP,SAAA,EAAW,aAAA;AAAA,MACX,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MAEnD;AAAA;AAAA,GACH;AAEJ;;AC3HA,SAAS,8BAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAc,GAAI,SAAA;AACrC,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,OAA6B,IAAI,CAAA;AACjD,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AACvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAGhD,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,CAAC,YAAA,EAAc,gBAAgB,CAAA,GAAI,QAAQ,MAAM;AACrD,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,EAAM;AACjD,MAAA,OAAO,CAAC,IAAI,IAAI,CAAA;AAAA,IAClB;AAEA,IAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,MAAA,OAAO,CAAC,WAAW,IAAI,CAAA;AAAA,IACzB;AAEA,IAAA,iCAAA,CAAkC;AAAA,MAChC,QAAA,EAAU,OAAO,QAAQ,CAAA;AAAA,MACzB,QAAA,EAAU,MAAA;AAAA,MACV,YAAA,EAAc,QAAA;AAAA,MACd,cAAc,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,UAAU,OAAO;AAAA,KAC3D,CAAA;AACD,IAAA,OAAO,CAAC,IAAI,KAAK,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,YAAY,CAAA;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,yBAAA,EAA0B;AAEtD,EAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,MAAA,EAAQ,YAAA;AAAA,IACR,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf;AAAA,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,gBAAA,GAAmB,OAAO,KAAK,CAAA;AAErC,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,IAAc,CAAA;AAE/C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,eAAe,YAAA,EAAc;AAE/B,MAAA,QAAA,GAAW,YAAkC,KAAK,CAAA;AAAA,IACpD;AACA,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,GAAG,CAAC,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,YAAY,CAAC,CAAA;AAE9C,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,IAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,IAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,KAAA,KAAiD;AAChD,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,IAAA,EAAM;AAC/C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,QAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,QAAA,WAAA,EAAY;AACZ,QAAA;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AACjC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,UAAA,EAAW;AACX,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa,UAAU;AAAA,GAC1B;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,MAAA,gBAAA,CAAiB,OAAA,GAAU,KAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,OAAA,GAAU,EAAA;AAAA,IACdH,SAAO,+BAA+B,CAAA;AAAA,IACtC,SAAA,CAAU,SAAA;AAAA,IACV;AAAA,MACE,CAACI,QAAA,CAAoB,8BAA8B,CAAC,GAAG;AAAA;AACzD,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,KAAA,KAAqD;AACpD,MAAA,IAAI,SAAA,EAAW;AACb,QAAA;AAAA,MACF;AACA,MAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,eAAe,SAAS;AAAA,GAC3B;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,KAAA,KAAkD;AACjD,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,CAAQ,OAAA,EAAS;AAEpC,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,CAAA,KAAqC;AACpC,MAAA,IAAI,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AAEtD,QAAA;AAAA,MACF;AACA,MAAA,WAAA,CAAY,EAAE,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,aAAa,OAAO;AAAA,GACvB;AAEA,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,CAAA,KAA8C;AAC7C,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,YAAA,EAAa;AACb,MAAA,eAAA,CAAgB,YAAY,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,YAAA,EAAc,eAAe;AAAA,GAC9C;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,CAAC,gBAAA,EAAkB;AAErB,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,OAAO,SAAA,CAAU,KAAA;AAAA,MACjB,WAAA,EAAa,mBAAA;AAAA,MACb,SAAA,EAAW,iBAAA;AAAA,MACX,QAAA;AAAA,MACA,OAAA,EAAS,eAAA;AAAA,MACT,MAAA,EAAQ,cAAA;AAAA,MACR,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MAEnD,QAAA,EAAA;AAAA,QAAA,SAAA,mBACC,GAAA,CAAA,QAAA,EAAA,EACE,QAAA,kBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,MAAM,CAAA,EAAG,IAAA,CAAK,OAAO,EAAE,CAAA,KAAA,EAAQ,aAAa,QAAQ,CAAA,CAAA;AAAA,YACpD,KAAA,EAAO,UAAA;AAAA,YACP,SAAA,EAAWJ,SAAO,4BAA4B,CAAA;AAAA,YAC9C,QAAA,EAAU,iBAAA;AAAA,YACV,MAAA,EAAQ,eAAA;AAAA,YACR,SAAA,EAAW;AAAA;AAAA,SACb,EACF,oBAEA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,CAAC,SAAA,oBAAa,GAAA,CAAC,6BAAA,EAAA,EAA8B;AAAA,SAAA,EAChD,CAAA;AAAA,wBAEF,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,SAAA,GACG,uCAAA,GACA,+DAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,MAAM,4BAA4B,MAAA,CAAO,MAAA;AAAA,EAC9C,WAAW,8BAA8B,CAAA;AAAA,EAKzC,EAAE,aAAa,2BAAA;AACjB,CAAA;;AC1MA,SAAS,gCAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAc,GAAI,SAAA;AACrC,EAAA,MAAM,OAAA,GAAU,OAA6B,IAAI,CAAA;AACjD,EAAA,MAAM,aAAA,GAAgB,OAAyB,IAAI,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AACvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAGhD,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,CAAC,YAAA,EAAc,gBAAgB,CAAA,GAAI,QAAQ,MAAM;AACrD,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI,OAAA,GAAU,IAAA;AAEd,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,EAAM;AACjD,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,OAAA,GAAU,IAAA;AACV,MAAA,OAAO,CAAC,OAAO,OAAO,CAAA;AAAA,IACxB;AAEA,IAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,MAAA,KAAA,GAAQ,SAAA;AAAA,IACV,CAAA,MAAO;AACL,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAEA,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,iCAAA,CAAkC;AAAA,QAChC,QAAA,EAAU,OAAO,QAAQ,CAAA;AAAA,QACzB,QAAA,EAAU,QAAA;AAAA,QACV,YAAA,EAAc,QAAA;AAAA,QACd,cAAc,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,UAAU,OAAO;AAAA,OAC3D,CAAA;AAAA,IACH;AACA,IAAA,OAAO,CAAC,OAAO,OAAO,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,UAAA;AAC/C,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AACtC,IAAA,IAAI,UAAA,IAAc,UAAA,CAAW,IAAA,KAAS,QAAA,EAAU;AAC9C,MAAA,MAAM,EAAE,IAAA,EAAM,CAAA,EAAG,UAAU,EAAA,EAAI,GAAG,SAAQ,GAAI,UAAA;AAC9C,MAAA,OAAO,OAAA;AAAA,IACT;AACA,IAAA,OAAO,EAAC;AAAA,EACV,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,YAAY,CAAA;AAExE,EAAA,MAAM,EAAE,QAAA,EAAU,mBAAA,EAAqB,UAAA,KAAe,cAAA,CAAe;AAAA,IACnE,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,aAAA;AAAA,IACV,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,gBAAA,GAAmB,YAAA,CAAa,CAAC,aAAA,EAAe,mBAAmB,CAAC,CAAA;AAE1E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,yBAAA,EAA0B;AAEtD,EAAA,MAAM,iBAAiB,KAAA,EAAM;AAC7B,EAAA,MAAM,WAAA,GACJ,KAAK,MAAA,CAAO,SAAA,CAAU,MAAM,SAAA,EAAW,WAAA,IAAe,OAAO,QAAQ,CAAA;AACvE,EAAA,MAAM,iBAAiB,CAAA,EAAG,WAAW,CAAA,MAAA,EAAS,YAAA,CAAa,WAAW,CAAC,CAAA,CAAA;AAEvE,EAAA,MAAM,gBAAA,GAAmB,OAAO,KAAK,CAAA;AAErC,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,IAAc,CAAA;AAE/C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,eAAe,YAAA,EAAc;AAE/B,MAAA,QAAA,GAAW,YAAkC,KAAK,CAAA;AAAA,IACpD;AACA,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,GAAG,CAAC,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,YAAY,CAAC,CAAA;AAE9C,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,IAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,IAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,MAAA,EAAQ,YAAA;AAAA,IACR,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf;AAAA,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,KAAA,KAAiD;AAChD,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,IAAA,EAAM;AAC/C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,QAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,QAAA,WAAA,EAAY;AACZ,QAAA;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AACjC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,UAAA,EAAW;AACX,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa,UAAU;AAAA,GAC1B;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,MAAA,gBAAA,CAAiB,OAAA,GAAU,KAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,OAAA,GAAU,EAAA;AAAA,IACdA,SAAO,+BAA+B,CAAA;AAAA,IACtC,SAAA,CAAU,SAAA;AAAA,IACV;AAAA,MACE,CAACI,QAAA,CAAoB,8BAA8B,CAAC,GAAG;AAAA;AACzD,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,KAAA,KAAqD;AACpD,MAAA,IAAI,SAAA,EAAW;AACb,QAAA;AAAA,MACF;AACA,MAAA,aAAA,GAAgB,KAAK,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,eAAe,SAAS;AAAA,GAC3B;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,KAAA,KAAkD;AACjD,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,CAAQ,OAAA,EAAS;AACpC,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,CAAA,KAAqC;AACpC,MAAA,IAAI,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AACtD,QAAA;AAAA,MACF;AACA,MAAA,WAAA,CAAY,EAAE,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,aAAa,OAAO;AAAA,GACvB;AAEA,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,CAAA,KAA8C;AAC7C,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,YAAA,EAAa;AACb,MAAA,eAAA,CAAgB,YAAY,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,YAAA,EAAc,eAAe;AAAA,GAC9C;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,aAAA,CAAc,SAAS,KAAA,EAAM;AAAA,IAC/B;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,OAAO,SAAA,CAAU,KAAA;AAAA,MACjB,WAAA,EAAa,mBAAA;AAAA,MACb,SAAA,EAAW,iBAAA;AAAA,MACX,QAAA;AAAA,MACA,OAAA,EAAS,eAAA;AAAA,MACT,MAAA,EAAQ,cAAA;AAAA,MACR,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MAEnD,QAAA,EAAA;AAAA,QAAA,SAAA,mBACC,GAAA,CAAA,QAAA,EAAA,EACE,QAAA,kBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,gBAAA;AAAA,YACJ,GAAG,UAAA;AAAA,YACJ,MAAM,CAAA,EAAG,IAAA,CAAK,OAAO,EAAE,CAAA,KAAA,EAAQ,aAAa,QAAQ,CAAA,CAAA;AAAA,YACpD,YAAA,EAAY,cAAA;AAAA,YACZ,kBAAA,EAAkB,cAAA;AAAA,YAClB,SAAA,EAAWJ,SAAO,4BAA4B,CAAA;AAAA,YAC9C,MAAA,EAAQ,eAAA;AAAA,YACR,SAAA,EAAW;AAAA;AAAA,SACb,EACF,oBAEA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,CAAC,SAAA,oBAAa,GAAA,CAAC,6BAAA,EAAA,EAA8B;AAAA,SAAA,EAChD,CAAA;AAAA,4BAED,MAAA,EAAA,EAAO,EAAA,EAAI,cAAA,EACT,QAAA,EAAA,SAAA,GACG,0CACA,+DAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,MAAM,8BAA8B,MAAA,CAAO,MAAA;AAAA,EAChD,WAAW,gCAAgC,CAAA;AAAA,EAK3C,EAAE,aAAa,6BAAA;AACjB,CAAA;;ACzQO,SAAS,mBAAA,CAAoB;AAAA,EAClC,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,yBAAA,EAA0B;AACtD,EAAA,MAAM,OAAA,GAAU,OAA6B,IAAI,CAAA;AACjD,EAAA,MAAM,eAAA,GAAkB,OAA4B,IAAI,CAAA;AAExD,EAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,QAAQ,MAAM;AACZ,MAAA,eAAA,CAAgB,OAAA,IAAU;AAAA,IAC5B,CAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf;AAAA,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CACE,KAAA,EACA,WAAA,EAGA,MAAA,KACG;AACH,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,WAAA,GAAc,KAA+C,CAAA;AAC7D,QAAA;AAAA,MACF;AACA,MAAA,aAAA,GAAgB,KAA4C,CAAA;AAAA,IAC9D,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAGA,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,CAAA,KAA2B;AAChE,IAAA,IAAI,CAAA,CAAE,QAAQ,IAAA,EAAM;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,eAAA,CAAgB,OAAA,IAAU;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,mBAAA,GAAsB,YAAY,MAAM;AAC5C,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,mBAA+B,MAAM;AACpC,MAAA,eAAA,CAAgB,YAAY,CAAA;AAC5B,MAAA,cAAA,EAAe;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,cAAc,eAAe;AAAA,GAChC;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,CAAC,CAAA,KAAqC;AACvE,IAAA,MAAM,SAAA,GAAa,EAAE,aAAA,CAA8B,YAAA;AAAA,MACjD;AAAA,KACF;AACA,IAAA,MAAM,SAAA,GAAY,SAAA,GAAY,QAAA,CAAS,cAAA,CAAe,SAAS,CAAA,GAAI,IAAA;AACnE,IAAA,IAAI,SAAA,EAAW,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AAChD,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,KAAA,KAAkD;AACjD,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,CAAQ,OAAA,EAAS;AACpC,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;;AC/EA,SAAS,gCAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAA,EAAW,GAAG,eAAc,GAAI,SAAA;AAElE,EAAiB,YAAY,IAAI;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA;AACnC,EAAA,MAAM,aAAa,IAAA,EAAM,UAAA;AACzB,EAAA,MAAM,gBAAA,GACJ,UAAA,EAAY,IAAA,KAAS,QAAA,GAAW,UAAA,GAAa,MAAA;AAE/C,EAAA,MAAM,OAAA,GAA8B,OAAA;AAAA,IAClC,MAAM,gBAAA,EAAkB,OAAA,IAAW,EAAC;AAAA,IACpC,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,WAAW,gBAAA,EAAkB,QAAA;AAEnC,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,QAAA;AAAA,IACT,QAAA,EAAU,SAAA;AAAA,IACV,GAAG;AAAA,GACL,GAAI,oBAAoB,EAAC;AAEzB,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG,OAAO,KAAA;AACrC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AAEvB,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,mBAAA,CAAoB,EAAE,YAAA,EAAc,aAAA,EAAe,KAAK,CAAA;AAG5D,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,EAAM,OAAO,IAAA;AAC1D,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA,KAAM,MAAA,CAAO,SAAS,CAAC,CAAA,IAAK,IAAA;AAAA,EACpE,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAC,gBAAA;AAE5B,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,iBAAA,EAAmB;AAC3C,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAS,CAAC;AAAA,QACR,GAAA,EAAK,UAAA;AAAA,QACL,OAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,YAAA,EAAc;AAAA,OAChB,KAAM;AACJ,QAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAK,SAAA,CAAU;AAAA,cACb,UAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,YACD,QAAA;AAAA,YACA,IAAA,EAAK,YAAA;AAAA,YACJ,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,+BAA+B,GAAG,SAAS,CAAA;AAAA,YAChE,WAAA,EAAa,oBAAoB,OAAO,CAAA;AAAA,YACxC,MAAA,EAAQ,cAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,YACpD,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,YAAA,EAAY,SAAA;AAAA,YACZ,WAAW,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,EAAG,aAAa,MAAM,CAAA;AAAA,YAEzD,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,cACA,CAAC,MAAA,oBAAU,GAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA;AAAA,8BAC3C,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,GACG,4EAAA,GACA,uCAAA,EACN;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,QACL,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,WAAW,WAAA,IAAe;AAAA,OACxD;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO,cAAA;AAAA,MACP,sBAAA,EAAwB,CAAC,MAAA,KAAW;AAClC,QAAA,QAAA,GAAW,QAAQ,KAAK,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,eAAA,EAAiB,mBAAA;AAAA,MAChB,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,MAAM,8BAA8B,MAAA,CAAO,MAAA;AAAA,EAChD,WAAW,gCAAgC,CAAA;AAAA,EAK3C,EAAE,aAAa,6BAAA;AACjB,CAAA;;ACjHA,SAAS,qCAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAA,EAAW,GAAG,eAAc,GAAI,SAAA;AAElE,EAAiB,YAAY,IAAI;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,UAAA;AAC/C,EAAA,MAAM,eAAA,GACJ,UAAA,EAAY,IAAA,KAAS,cAAA,GAAiB,UAAA,GAAa,MAAA;AAErD,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG,OAAO,KAAA;AACrC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AACvB,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,CAAI,QAAA;AAErB,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAO,EAAE,GAAA,EAAK,OAAM,CAAA,EAAI,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,EAAa,UAAA;AAAA,IACb,QAAA;AAAA,IACA,KAAA,EAAO,SAAA;AAAA,IACP,GAAG;AAAA,GACL,GAAI,mBAAmB,EAAC;AAGxB,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,gBAAwB,IAAA,KAAoB;AAC3C,MAAA,IAAI,CAAC,UAAA,EAAY,OAAO,EAAC;AACzB,MAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,QAAA,MAAM,CAAC,UAAA,EAAY,QAAQ,CAAA,GAAI,IAAA;AAC/B,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,SAAS,QAAA,EAAU;AACrB,QAAA,MAAM,CAAC,MAAA,EAAQ,KAAK,CAAA,GAAI,IAAA;AACxB,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,MAAM,CAAC,gBAAgB,CAAA,GAAI,IAAA;AAC3B,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAQ,UAAA;AAAA,QACN,WAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,OAAA,EAAS,IAAI;AAAA,GAC5B;AAGA,EAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,EAAE,OAAA,EAAS,KAAA,EAAM;AAE5C,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,mBAAA,CAAoB,EAAE,YAAA,EAAc,aAAA,EAAe,KAAK,CAAA;AAG5D,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,EAAM,OAAO,IAAA;AAC1D,IAAA,IAAI,OAAO,SAAA,KAAc,QAAA,EAAU,OAAO,IAAA;AAC1C,IAAA,OAAO,EAAE,EAAA,EAAI,SAAA,EAA8B,KAAA,EAAO,MAAA,CAAO,SAAS,CAAA,EAAE;AAAA,EACtE,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,eAAA,EAAiB;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MAIC,IAAA;AAAA,MAEA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,gBAAA;AAAA,MACJ,SAAS,CAAC;AAAA,QACR,GAAA,EAAK,UAAA;AAAA,QACL,OAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,YAAA,EAAc;AAAA,OAChB,KAAM;AACJ,QAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAK,SAAA,CAAU;AAAA,cACb,UAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,YACD,QAAA;AAAA,YACA,IAAA,EAAK,YAAA;AAAA,YACJ,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,+BAA+B,GAAG,SAAS,CAAA;AAAA,YAChE,WAAA,EAAa,oBAAoB,OAAO,CAAA;AAAA,YACxC,MAAA,EAAQ,cAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,YACpD,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,YAAA,EAAY,SAAA;AAAA,YACZ,WAAW,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,EAAG,aAAa,MAAM,CAAA;AAAA,YAEzD,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,cACA,CAAC,MAAA,oBAAU,GAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA;AAAA,8BAC3C,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,GACG,4EAAA,GACA,uCAAA,EACN;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,QACL,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,WAAW,WAAA,IAAe;AAAA,OACxD;AAAA,MACA,KAAA,EAAO,cAAA;AAAA,MACP,sBAAA,EAAwB,CAAC,MAAA,KAAW;AAClC,QAAA,QAAA,GAAW,QAAQ,KAAK,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,eAAA,EAAiB;AAAA;AAAA,GACnB;AAEJ;AAEO,MAAM,mCAAmC,MAAA,CAAO,MAAA;AAAA,EACrD,WAAW,qCAAqC,CAAA;AAAA,EAKhD,EAAE,aAAa,kCAAA;AACjB,CAAA;;ACnLO,SAAS,qCAAA,CACd,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAA,EAAW,GAAG,eAAc,GAAI,SAAA;AAElE,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,SAAA,KAAc,MAAA,EAAW,OAAO,IAAA;AAC1D,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG,OAAO,IAAA;AACrC,IAAA,iCAAA,CAAkC;AAAA,MAChC,QAAA,EAAU,OAAO,QAAQ,CAAA;AAAA,MACzB,QAAA,EAAU,aAAA;AAAA,MACV,YAAA,EAAc,2BAAA;AAAA,MACd,cAAc,OAAO;AAAA,KACtB,CAAA;AACD,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA;AACnC,EAAA,MAAM,aAAa,IAAA,EAAM,UAAA;AACzB,EAAA,MAAM,qBAAA,GACJ,UAAA,EAAY,IAAA,KAAS,aAAA,GAAgB,UAAA,GAAa,MAAA;AAEpD,EAAA,MAAM,OAAA,GAAmC,OAAA;AAAA,IACvC,MAAM,qBAAA,EAAuB,OAAA,IAAW,EAAC;AAAA,IACzC,CAAC,qBAAqB;AAAA,GACxB;AAEA,EAAA,MAAM,WAAW,qBAAA,EAAuB,QAAA;AAExC,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,QAAA;AAAA,IACT,QAAA,EAAU,SAAA;AAAA,IACV,GAAG;AAAA,GACL,GAAI,yBAAyB,EAAC;AAE9B,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AAEvB,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,mBAAA,CAAoB,EAAE,YAAA,EAAc,aAAA,EAAe,KAAK,CAAA;AAG5D,EAAA,MAAM,eAAA,GAAkB,QAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,SAAU,EAAC;AACvC,IAAA,MAAM,eAAe,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AACnD,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,YAAA,CAAa,SAAS,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAC,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAC,qBAAA;AAE5B,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,iBAAA,EAAmB;AAC3C,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,SAAS,CAAC;AAAA,QACR,GAAA,EAAK,UAAA;AAAA,QACL,OAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,YAAA,EAAc;AAAA,OAChB,KAAM;AACJ,QAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAK,SAAA,CAAU;AAAA,cACb,UAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,YACD,QAAA;AAAA,YACA,IAAA,EAAK,YAAA;AAAA,YACJ,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,+BAA+B,GAAG,SAAS,CAAA;AAAA,YAChE,WAAA,EAAa,oBAAoB,OAAO,CAAA;AAAA,YACxC,MAAA,EAAQ,cAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,YACpD,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,YAAA,EAAY,SAAA;AAAA,YACZ,WAAW,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,EAAG,aAAa,MAAM,CAAA;AAAA,YAEzD,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,cACA,CAAC,MAAA,oBAAU,GAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA;AAAA,8BAC3C,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,GACG,0EAAA,GACA,uCAAA,EACN;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,QACL,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,WAAW,WAAA,IAAe;AAAA,OACxD;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO,eAAA;AAAA,MACP,uBAAA,EAAyB,CAAC,QAAA,KAAa;AACrC,QAAA,QAAA,GAAW,UAAU,KAAK,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,eAAA,EAAiB,mBAAA;AAAA,MAChB,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,MAAM,mCAAmC,MAAA,CAAO,MAAA;AAAA,EACrD,WAAW,qCAAqC,CAAA;AAAA,EAKhD,EAAE,aAAa,kCAAA;AACjB,CAAA;;ACvHO,SAAS,0CAAA,CACd,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAA,EAAW,GAAG,eAAc,GAAI,SAAA;AAElE,EAAiB,YAAY,IAAI;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,UAAA;AAC/C,EAAA,MAAM,eAAA,GACJ,UAAA,EAAY,IAAA,KAAS,mBAAA,GAAsB,UAAA,GAAa,MAAA;AAE1D,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,SAAA,KAAc,MAAA,EAAW,OAAO,IAAA;AAC1D,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG,OAAO,IAAA;AACrC,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AACvB,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,CAAI,QAAA;AAErB,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAO,EAAE,GAAA,EAAK,OAAM,CAAA,EAAI,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,EAAa,UAAA;AAAA,IACb,QAAA;AAAA,IACA,KAAA,EAAO,SAAA;AAAA,IACP,GAAG;AAAA,GACL,GAAI,mBAAmB,EAAC;AAGxB,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,gBAAwB,IAAA,KAAoB;AAC3C,MAAA,IAAI,CAAC,UAAA,EAAY,OAAO,EAAC;AACzB,MAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,QAAA,MAAM,CAAC,UAAA,EAAY,QAAQ,CAAA,GAAI,IAAA;AAC/B,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,SAAS,QAAA,EAAU;AACrB,QAAA,MAAM,CAAC,MAAA,EAAQ,KAAK,CAAA,GAAI,IAAA;AACxB,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,MAAM,CAAC,gBAAgB,CAAA,GAAI,IAAA;AAC3B,QAAA,OAAQ,UAAA;AAAA,UACN,WAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAQ,UAAA;AAAA,QACN,WAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,OAAA,EAAS,IAAI;AAAA,GAC5B;AAGA,EAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,EAAE,OAAA,EAAS,KAAA,EAAM;AAE5C,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,mBAAA,CAAoB,EAAE,YAAA,EAAc,aAAA,EAAe,KAAK,CAAA;AAG5D,EAAA,MAAM,eAAA,GAAkB,QAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,SAAU,EAAC;AACvC,IAAA,OAAO,SAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,eAAA,EAAiB;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MAIC,IAAA;AAAA,MAEA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,gBAAA;AAAA,MACJ,SAAS,CAAC;AAAA,QACR,GAAA,EAAK,UAAA;AAAA,QACL,OAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,YAAA,EAAc;AAAA,OAChB,KAAM;AACJ,QAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAK,SAAA,CAAU;AAAA,cACb,UAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,YACD,QAAA;AAAA,YACA,IAAA,EAAK,YAAA;AAAA,YACJ,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,+BAA+B,GAAG,SAAS,CAAA;AAAA,YAChE,WAAA,EAAa,oBAAoB,OAAO,CAAA;AAAA,YACxC,MAAA,EAAQ,cAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,YACpD,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,YAAA,EAAY,SAAA;AAAA,YACZ,WAAW,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,EAAG,aAAa,MAAM,CAAA;AAAA,YAEzD,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,cACA,CAAC,MAAA,oBAAU,GAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA;AAAA,8BAC3C,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,GACG,0EAAA,GACA,uCAAA,EACN;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,QACL,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,WAAW,WAAA,IAAe;AAAA,OACxD;AAAA,MACA,KAAA,EAAO,eAAA;AAAA,MACP,uBAAA,EAAyB,CAAC,QAAA,KAAa;AACrC,QAAA,QAAA,GAAW,UAAU,KAAK,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,eAAA,EAAiB;AAAA;AAAA,GACnB;AAEJ;AAEO,MAAM,wCAAwC,MAAA,CAAO,MAAA;AAAA,EAC1D,WAAW,0CAA0C,CAAA;AAAA,EAKrD,EAAE,aAAa,uCAAA;AACjB,CAAA;;AC1LA,SAAS,iCAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,UAAS,GAAI,KAAA;AACpD,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAA,EAAW,GAAG,eAAc,GAAI,SAAA;AAElE,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAc,CAAA;AAE7C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA;AACnC,EAAA,MAAM,aAAa,IAAA,EAAM,UAAA;AACzB,EAAA,MAAM,iBAAA,GACJ,UAAA,EAAY,IAAA,KAAS,SAAA,GAAY,UAAA,GAAa,MAAA;AAEhD,EAAA,MAAM,GAAG,gBAAgB,CAAA,GAAI,QAAQ,MAAM;AACzC,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI,OAAA,GAAU,IAAA;AAEd,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,EAAM;AACjD,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,OAAA,GAAU,IAAA;AACV,MAAA,OAAO,CAAC,OAAO,OAAO,CAAA;AAAA,IACxB;AAEA,IAAA,IAAI,OAAO,cAAc,SAAA,EAAW;AAClC,MAAA,KAAA,GAAQ,SAAA;AAAA,IACV,CAAA,MAAO;AACL,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAEA,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,iCAAA,CAAkC;AAAA,QAChC,QAAA,EAAU,OAAO,QAAQ,CAAA;AAAA,QACzB,QAAA,EAAU,SAAA;AAAA,QACV,YAAA,EAAc,SAAA;AAAA,QACd,cAAc,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,UAAU,OAAO;AAAA,OAC3D,CAAA;AAAA,IACH;AACA,IAAA,OAAO,CAAC,OAAO,OAAO,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,OAAA,GAA8B,QAAQ,MAAM;AAChD,IAAA,MAAM,MAAA,GACJ,iBAAA,EAAmB,IAAA,KAAS,SAAA,GACxB,iBAAA,GACA;AAAA,MACE,SAAA,EAAW,MAAA;AAAA,MACX,UAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAGN,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,MAAM,SAAA,EAAW,IAAA;AAC1D,IAAA,MAAM,WAAA,GACJ,OAAO,UAAA,KAAe,QAAA,IAAY,WAAW,IAAA,KAAS,SAAA,GACjD,WAAW,OAAA,GACZ,MAAA;AAEN,IAAA,MAAM,KAAA,GAA4B;AAAA,MAChC;AAAA,QACE,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAO,MAAA,CAAO,SAAA,IAAa,WAAA,EAAa,SAAA,IAAa;AAAA,OACvD;AAAA,MACA;AAAA,QACE,EAAA,EAAI,OAAA;AAAA,QACJ,KAAA,EAAO,MAAA,CAAO,UAAA,IAAc,WAAA,EAAa,UAAA,IAAc;AAAA;AACzD,KACF;AACA,IAAA,IAAI,OAAO,SAAA,EAAW;AACpB,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,MAAA,EAAQ,OAAO,MAAA,CAAO,SAAA,IAAa,SAAS,CAAA;AAAA,IAC/D;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,iBAAA,EAAmB,IAAA,CAAK,OAAO,SAAA,CAAU,IAAA,EAAM,SAAA,EAAW,IAAI,CAAC,CAAA;AAEnE,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA;AACvB,EAAA,MAAM,WAAW,iBAAA,EAAmB,QAAA;AACpC,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAC,iBAAA;AAE5B,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,mBAAA,CAAoB,EAAE,YAAA,EAAc,aAAA,EAAe,KAAK,CAAA;AAG5D,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,IAAI,SAAA,KAAc,QAAW,OAAO,IAAA;AACpC,IAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,EAAE,EAAA,KAAO,MAAA,CAAO,SAAS,CAAC,CAAA,IAAK,IAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,iBAAA,EAAmB;AAC3C,IAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAY,GAAG,oBAAmB,GAAI,KAAA;AACzD,IAAA,uBAAO,GAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,kBAAA,EAAoB,CAAA;AAAA,EAC7D;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAS,CAAC;AAAA,QACR,GAAA,EAAK,UAAA;AAAA,QACL,OAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAiB,YAAA;AAAA,QACjB,YAAA,EAAc;AAAA,OAChB,KAAM;AACJ,QAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,YAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAK,SAAA,CAAU;AAAA,cACb,UAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,YACD,QAAA;AAAA,YACA,IAAA,EAAK,YAAA;AAAA,YACJ,GAAG,aAAA;AAAA,YACJ,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,+BAA+B,GAAG,SAAS,CAAA;AAAA,YAChE,WAAA,EAAa,oBAAoB,OAAO,CAAA;AAAA,YACxC,MAAA,EAAQ,cAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,YACpD,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,eAAA,EAAe,YAAA;AAAA,YACf,YAAA,EAAY,SAAA;AAAA,YACZ,WAAW,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,EAAG,aAAa,MAAM,CAAA;AAAA,YAEzD,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,cACA,CAAC,MAAA,oBAAU,GAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA;AAAA,8BAC3C,GAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,MAAA,GACG,4EAAA,GACA,uCAAA,EACN;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,QACL,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,WAAW,WAAA,IAAe;AAAA,OACxD;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO,cAAA;AAAA,MACP,sBAAA,EAAwB,CAAC,MAAA,KAAW;AAClC,QAAA,IAAI,CAAC,MAAA,EAAQ;AACb,QAAA,MAAM,EAAA,GAAK,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAC3B,QAAA,MAAM,QAAQ,EAAA,KAAO,MAAA,GAAS,IAAA,GAAO,EAAA,KAAO,UAAU,KAAA,GAAQ,IAAA;AAC9D,QAAA,QAAA,GAAW,OAA6B,KAAK,CAAA;AAAA,MAC/C,CAAA;AAAA,MACA,aAAA,EAAa,IAAA;AAAA,MACb,aAAA,EAAe,iBAAA;AAAA,MACf,eAAA,EAAiB,mBAAA;AAAA,MACjB,YAAA,EAAa;AAAA;AAAA,GACf;AAEJ;AAEO,MAAM,+BAA+B,MAAA,CAAO,MAAA;AAAA,EACjD,WAAW,iCAAiC,CAAA;AAAA,EAK5C,EAAE,aAAa,8BAAA;AACjB,CAAA;;ACrKO,SAAS,yBACd,KAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAClD,EAAA,MAAM,eAAA,GAAkB,OAAqC,IAAI,CAAA;AAEjE,EAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,YAAA,EAAa;AAC3C,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,aAAA,EAAc;AAC7C,EAAA,MAAM,iBAAA,GAAoB,KAAK,GAAA,CAAI,cAAA;AAEnC,EAAA,MAAM,IAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,QAAA,CAAyB,IAAA;AAChD,EAAA,MAAM,SAAA,GAAY,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,EAAa,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc,IAAA,EAAM,QAAA,GAAW,MAAA,CAAO,EAAa,CAAA;AAEzD,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,sBAAsB,CAAA,EAAG,KAAK,SAAA,EAAW;AAAA,IACjE,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC,SAAA;AAAA,IAC1C,CAACA,SAAO,8BAA8B,CAAC,GAAG,CAAC,SAAA,IAAa,CAAC,CAAC;AAAA,GAC3D,CAAA;AACD,EAAA,MAAM,mBAAA,GAAsB,uBAA0B,MAAM,CAAA;AAE5D,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAU,GAAI,yBAAA,EAA0B;AAE3D,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,QAAA;AAExC,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAAqD;AACpD,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,IAAI,CAAA;AACd,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,gBAAgB,aAAA,EAAe;AACjC,YAAA,iBAAA,EAAkB;AAClB,YAAA;AAAA,UACF;AACA,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,YAAA;AACH,UAAA,IAAI,YAAA,IAAgB,CAAC,aAAA,EAAe;AAClC,YAAA,iBAAA,EAAkB;AAClB,YAAA;AAAA,UACF;AACA,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,eAAA,CAAgB,SAAS,MAAA,EAAO;AAChC,UAAA;AAAA,QACF;AAEE;AACJ,IACF,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,SAAA,EAAW,YAAA,EAAc,eAAe,iBAAiB;AAAA,GACvE;AAEA,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AACtC,IAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,MAAA,OAAO,yBAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,QAAA,EAAU;AACzB,MAAA,OAAO,2BAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,QAAA,EAAU;AACzB,MAAA,OAAO,2BAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,cAAA,EAAgB;AAC/B,MAAA,OAAO,gCAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,aAAA,EAAe;AAC9B,MAAA,OAAO,gCAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,mBAAA,EAAqB;AACpC,MAAA,OAAO,qCAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,MAAA,OAAO,4BAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,eAAA;AAAA,MACL,YAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACT,GAAG,IAAA;AAAA,QACH,SAAA,EAAW,OAAA;AAAA,QACX,SAAA,EAAW,aAAA;AAAA,QACX,KAAA,EAAO;AAAA,OACT;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;AC7IO,SAAS,kBAAqB,KAAA,EAAkC;AACrE,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAElD,EAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,QAAA;AAExC,EAAA,MAAM,SAAA,GAAY,WACd,wBAAA,GACA,0BAAA;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MAEnD;AAAA;AAAA,GACH;AAEJ;;;;;;;;;;;;ACTA,SAAS,qBAAA,CAAyB;AAAA,EAChC,WAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AAEzC,EAAA,MAAM,KAAK,GAAA,CAAI,EAAA;AACf,EAAA,MAAM,WAAW,GAAA,CAAI,QAAA;AAErB,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAI,yBAAA,EAA0B;AAE1E,EAAA,4BACGK,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,iBAAe,QAAA,GAAW,CAAA;AAAA,QAC1B,eAAA,EAAe,eAAA,IAAmB,SAAA,GAAY,UAAA,GAAa,MAAA;AAAA,QAC3D,YAAA,EACE,eAAA,KAAoB,SAAA,IAAa,kBAAA,CAAA,GAC7B,QAAQ,CAAA,GACR,MAAA;AAAA,QAEN,SAAA,EAAWL,SAAO,qBAAqB,CAAA;AAAA,QAEtC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,KAAS;AAC1B,UAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,MAAA,CAAO,MAAA,GACpC,KAAK,MAAA,CAAO,MAAA,CAAO,cAAA,EAAe,CAAE,MAAM,EAAE,CAAA,CAAE,CAAC,CAAA,KAAM,KAAK,MAAA,GAC1D,KAAA;AAEJ,UAAA,MAAM,WAAA,GAAc,EAAA,CAAG,uBAAA,CAAwB,IAAA,CAAK,MAAM,CAAA,EAAG;AAAA,YAC3D,CAACA,QAAA,CAAO,4BAA4B,CAAC,GACnC,SAAA,IAAa,IAAA,CAAK,MAAA,CAAO,SAAA,IACxB,IAAA,CAAK,MAAA,CAAO,MAAA,IAAU;AAAA,WAC1B,CAAA;AACD,UAAA,MAAM,cAAc,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AAC9D,UAAA,uBACE,GAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cAEC,IAAA;AAAA,cACA,YAAA,EAAc,EAAE,QAAA,EAAU,WAAA,EAAY;AAAA,cACtC,iBAAe,WAAA,GAAc,CAAA;AAAA,cAC7B,SAAA,EAAW,WAAA;AAAA,cACX,oBAAA,EAAoB,KAAK,MAAA,CAAO,EAAA;AAAA,cAE/B,qBAAW,IAAA,CAAK,MAAA,CAAO,UAAU,IAAA,EAAM,IAAA,CAAK,YAAY;AAAA,aAAA;AAAA,YAPpD,IAAA,CAAK;AAAA,WAQZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,IACC,UAAA,IAAc,kBAAmB,QAAA,oBAChC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,GAAG,EAAE,CAAA,cAAA,CAAA;AAAA,QACT,eAAa,CAAC,UAAA;AAAA,QACd,SAAA,EAAWA,SAAO,mCAAmC,CAAA;AAAA,QACrD,SAAS,MAAM;AACb,UAAA,iBAAA,EAAkB;AAAA,QACpB,CAAA;AAAA,QACA,QAAQ,MAAM;AACZ,UAAA,gBAAA,EAAiB;AAAA,QACnB,CAAA;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWA,QAAA,CAAO,yCAAyC,CAAA,EAC9D,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAWA,QAAA,CAAO,uCAAuC,CAAA,EAC3D,QAAA,EAAA,QAAA,CAAyB,cAC7B,CAAA,EACF;AAAA;AAAA;AACF,GAAA,EAAA,EAtDW,IAAI,EAwDnB,CAAA;AAEJ;AAoBA,SAAS,gBAAA,CACP,MACA,IAAA,EACS;AACT,EAAA,MAAM,gBAAgB,IAAA,CAAK,aAAA;AAC3B,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OACE,IAAA,CAAK,IAAI,EAAA,KAAO,IAAA,CAAK,IAAI,EAAA,IACzB,aAAA,CAAc,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,KAAM,cAAc,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,IACpE,IAAA,CAAK,QAAA,KAAa,KAAK,QAAA,IACvB,IAAA,CAAK,UAAA,KAAe,IAAA,CAAK,UAAA,IACzB,IAAA,CAAK,cAAc,IAAA,CAAK,SAAA,IACxB,KAAK,KAAA,KAAU,IAAA,CAAK,SACpB,IAAA,CAAK,kBAAA,KAAuB,IAAA,CAAK,kBAAA,IACjC,IAAA,CAAK,eAAA,KAAoB,KAAK,eAAA,IAC9B,IAAA,CAAK,WAAA,KAAgB,IAAA,CAAK,WAAA,IAC1B,IAAA,CAAK,eAAe,IAAA,CAAK,UAAA,IACzB,IAAA,CAAK,cAAA,KAAmB,IAAA,CAAK,cAAA;AAEjC;AAEO,MAAM,gBAAA,GAAmBM,MAAA;AAAA,EAC9B,qBAAA;AAAA,EACA;AACF,CAAA;;ACxJO,MAAM,cAAA,GAAiB,CAAI,EAAE,KAAA,EAAM,KAAmC;AAC3E,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,MAAA,KAAsB;AAC1D,IAAA,IAAI,MAAA,CAAO,OAAA,EAAS,MAAA,GAAS,CAAA,EAAG;AAC9B,MAAA,OAAO,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,CAAA;AAAA,IAC/C;AACA,IAAA,OAAO,CAAC,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,MAAM,OAAiB,EAAC;AACxB,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,KAAA,CAAM,aAAA,EAAc,CAAE,OAAA,CAAQ,CAAC,MAAA,KAAW;AACxC,MAAA,IAAI,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,EAAQ;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACvC,CAAA,MAAA,IAAW,MAAA,CAAO,WAAA,EAAY,KAAM,OAAA,EAAS;AAC3C,QAAA,KAAA,CAAM,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAA,CAAK,GAAG,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACzC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,KAAA,EAAO,gBAAgB,CAAC,CAAA;AAE5B,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF,CAAA;;ACMA,SAAS,qBAAA,CAAyB;AAAA,EAChC,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,CAAe,EAAE,OAAO,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAC5C,EAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACG,gBAAM,WAAA,EAAY,CAAE,KAAK,GAAA,CAAI,CAAC,KAAK,QAAA,qBAClC,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,WAAA;AAAA,MAEA,GAAA;AAAA,MACA,UAAU,QAAA,GAAW,WAAA;AAAA,MACrB,eAAA,EAAiB,UAAA;AAAA,MACjB,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,SAAA,EAAW,IAAI,YAAA,EAAa;AAAA,MAC5B,OAAO,GAAA,CAAI,KAAA;AAAA,MACX,kBAAA,EAAoB,GAAA,CAAI,YAAA,EAAa,EAAG,cAAa,IAAK,KAAA;AAAA,MAC1D,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,MAC9B,cAAA,EAAgB,IAAI,iBAAA,EAAkB;AAAA,MACtC;AAAA,KAAA;AAAA,IAVK,GAAA,CAAI;AAAA,GAYZ,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,kBAAA,CAAsB;AAAA,EAC7B,KAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,CAAe,EAAE,OAAO,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA;AACjC,EAAA,MAAM,YAAA,GAAe,YAAY,eAAA,EAAgB;AACjD,EAAA,MAAM,SAAA,GAAY,YAAY,YAAA,EAAa;AAE3C,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MAAM,CAAC,EAAA,KAA8B;AACnC,MAAA,IAAI,EAAA,EAAI,WAAA,CAAY,cAAA,CAAe,EAAE,CAAA;AAAA,IACvC,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWN,SAAO,6BAA6B,CAAA;AAAA,MAI/C,uBAAA,EAAsB,MAAA;AAAA,MACtB,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,EAAK;AAAA,MAEjC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,UAAA,KAAe;AAChC,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AACjC,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EAAK,UAAA;AAAA,YACL,cAAY,UAAA,CAAW,KAAA;AAAA,YACvB,SAAA,EAAWA,SAAO,iCAAiC,CAAA;AAAA,YACnD,OAAO,EAAE,SAAA,EAAW,CAAA,WAAA,EAAc,UAAA,CAAW,KAAK,CAAA,GAAA,CAAA,EAAM;AAAA,YAExD,QAAA,kBAAA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,WAAA;AAAA,gBACA,GAAA;AAAA,gBACA,QAAA,EAAU,WAAW,KAAA,GAAQ,WAAA;AAAA,gBAC7B,eAAA,EAAiB,UAAA;AAAA,gBACjB,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,gBAC9B,SAAA,EAAW,IAAI,YAAA,EAAa;AAAA,gBAC5B,OAAO,GAAA,CAAI,KAAA;AAAA,gBACX,kBAAA,EAAoB,GAAA,CAAI,YAAA,EAAa,EAAG,cAAa,IAAK,KAAA;AAAA,gBAC1D,UAAA,EAAY,IAAI,aAAA,EAAc;AAAA,gBAC9B,cAAA,EAAgB,IAAI,iBAAA,EAAkB;AAAA,gBACtC;AAAA;AAAA;AACF,WAAA;AAAA,UAlBK,GAAA,CAAI;AAAA,SAmBX;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,cAAiB,KAAA,EAA8B;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,aAAa,aAAA,EAAe,GAAG,MAAK,GAAI,KAAA;AACnE,EAAA,2BACG,SAAA,EAAA,EAAU,IAAA,EAAK,YAAA,EAAc,GAAG,MAC9B,QAAA,EAAA,WAAA,mBACC,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AAAA,GACF,EAEJ,CAAA;AAEJ;;;;;AC9HO,SAAS,YAAY,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAqB;AACzE,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,cAAc,CAAA,EAAG,KAAK,SAAS,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAE9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACNO,MAAM,eAAA,GAAkB,UAAA,CAG7B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE/C,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,GAAG,SAAS,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MAEC,GAAA;AAAA,MACA,UAAA,EAAS,mBAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;;ACnCvB,SAAS,oBAAoB,KAAA,EAAiC;AACnE,EAAA,MAAM,EAAE,YAAA,EAAc,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEvD,EAAA,MAAM,aAAA,GAAgB,OAAuB,IAAI,CAAA;AAIjD,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAU,GAAI,yBAAA,EAA0B;AAE3D,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAAqD;AACpD,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,IAAI,CAAA;AACd,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF;AAEE;AACJ,IACF,CAAA;AAAA,IACA,CAAC,WAAW,SAAS;AAAA,GACvB;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,aAAA;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,wBAAwB,GAAG,SAAS,CAAA;AAAA,MACzD,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MAEnD;AAAA;AAAA,GACH;AAEJ;;;;;;;AC9BA,SAAS,sBAAA,CAAmD;AAAA,EAC1D,KAAA;AAAA,EACA;AACF,CAAA,EAAmC;AAEjC,EAAA,MAAM,cAAA,GAAiB,CACrB,IAAA,EACA,EAAA,KAC6B;AAC7B,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,GAAA,CAAI,OAAO,EAAA,EAAI;AACjB,QAAA,OAAO,GAAA;AAAA,MACT;AACA,MAAA,IAAI,IAAI,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,EAAG;AAC7C,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,EAAE,CAAA;AAC5C,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAAiC;AACzD,IAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,EAAG;AACvC,MAAA,UAAA,GAAa,OAAO,aAAA,CAAc,MAAA;AAAA,IACpC,CAAA,MAAA,IAAW,OAAO,aAAA,EAAe;AAC/B,MAAA,UAAA,GAAa,CAAA;AAAA,IACf;AAGA,IAAA,IAAI,OAAO,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,QACrB,GAAG,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,SAAA,KAAc,gBAAA,CAAiB,SAAS,CAAC,CAAA;AAAA,QAChE;AAAA,OACF;AACA,MAAA,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,SAAS,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA;AAAA,IACzB,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,IACnD;AAAA,GACF;AAEA,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,CAAe,EAAE,OAAO,CAAA;AAEhD,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,eAAc,EAAG,CAAC,GAAG,WAAA,KAAgB;AAC/D,IAAA,MAAM,QAAA,GACJ,cACA,KAAA,CAAM,eAAA,GAAkB,MAAA,GACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAC3B,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,KAAA;AAAA,QACL,UAAA,EAAS,kBAAA;AAAA,QACT,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,QACzC,iBAAe,QAAA,GAAW,CAAA;AAAA,QAEzB,QAAA,EAAA,KAAA,CACE,cAAA,EAAe,CACf,MAAA,CAAO,CAAC,MAAA,KAAW;AAClB,UAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,EAAS,MAAA,CAAO,OAAO,EAAE,CAAA;AAEvD,UAAA,OAAO,CAAC,MAAA,EAAQ,OAAA,IAAW,MAAA,CAAO,QAAQ,MAAA,KAAW,CAAA;AAAA,QACvD,CAAC,CAAA,CACA,GAAA,CAAI,CAAC,MAAA,KAAW;AACf,UAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,EAAS,MAAA,CAAO,OAAO,EAAE,CAAA;AAEvD,UAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,aAAa,CAAA,EAAG;AACxC,YAAA,aAAA,GAAgB,MAAA,CAAO,aAAA,CAAc,WAAW,CAAA,IAAK,IAAA;AAAA,UACvD,CAAA,MAAA,IAAW,MAAA,EAAQ,aAAA,IAAiB,WAAA,KAAgB,CAAA,EAAG;AACrD,YAAA,aAAA,GAAgB,MAAA,CAAO,aAAA;AAAA,UACzB;AAEA,UAAA,MAAM,cAAc,WAAA,CAAY,OAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAEhE,UAAA,uBACE,GAAA;AAAA,YAAC,mBAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,uBAAA,CAAwB,MAAA,CAAO,MAAM,CAAA;AAAA,cAChD,KAAA,EAAO,sBAAA,CAAuB,MAAA,CAAO,MAAM,CAAA;AAAA,cAC3C,YAAA,EAAc,EAAE,QAAA,EAAU,WAAA,EAAY;AAAA,cAErC,QAAA,EAAA;AAAA,aAAA;AAAA,YALI,MAAA,CAAO;AAAA,WAMd;AAAA,QAEJ,CAAC;AAAA,OAAA;AAAA,MAnCE,cAAc,QAAQ,CAAA;AAAA,KAoC7B;AAAA,EAEJ,CAAC,CAAA;AACH;AAEA,SAAS,qBAAA,CAAkD;AAAA,EACzD,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,OAAO,YAAA,EAAc,GAAA,CAAI,CAAC,SAAA,EAAW,WAAA,KAAgB;AACnD,IAAA,MAAM,QAAA,GACJ,cACA,KAAA,CAAM,eAAA,GAAkB,MAAA,GACxB,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAC3B,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,KAAA;AAAA,QACL,UAAA,EAAS,kBAAA;AAAA,QACT,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,QACzC,iBAAe,QAAA,GAAW,CAAA;AAAA,QAExB,QAAA,EAAA,CAAA,MAAM;AACN,UAAA,IAAI,WAAA,GAAc,CAAA;AAClB,UAAA,OAAO,MAAM,IAAA,CAAK;AAAA,YAChB,MAAA;AAAA;AAAA,cAEE,WAAA;AAAA,cAEA,SAAA,CAAU,OAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,cAErD,SAAA,CAAU;AAAA;AAAA,WACb,CAAA,CAAE,GAAA,CAAI,CAAC,GAAG,KAAA,KAAU;AACnB,YAAA,MAAM,MAAA,GAAS,UAAU,KAAK,CAAA,IAAK,EAAE,OAAA,EAAS,EAAA,EAAI,SAAS,CAAA,EAAE;AAE7D,YAAA,MAAM,aACJ,MAAA,CAAO,OAAA,GAAU,IAAI,CAAA,KAAA,EAAQ,MAAA,CAAO,OAAO,CAAA,CAAA,GAAK,MAAA;AAElD,YAAA,MAAM,IAAA,mBACJ,GAAA;AAAA,cAAC,mBAAA;AAAA,cAAA;AAAA,gBAEC,SAAS,MAAA,CAAO,OAAA;AAAA,gBAChB,KAAA,EAAO;AAAA,kBACL;AAAA,iBACF;AAAA,gBACA,YAAA,EAAc,EAAE,QAAA,EAAU,WAAA,EAAY;AAAA,gBAErC,QAAA,EAAA,MAAA,CAAO;AAAA,eAAA;AAAA,cAPH;AAAA,aAQP;AAIF,YAAA,WAAA,IAAe,MAAA,CAAO,OAAA;AACtB,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AAAA,QACH,CAAA;AAAG,OAAA;AAAA,MAvCE;AAAA,KAwCP;AAAA,EAEJ,CAAC,CAAA;AACH;AASO,SAAS,eAAA,CAA4C;AAAA,EAC1D,KAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,cAAA,EAAe,CAAE,MAAA;AAC3C,EAAA,MAAM,UAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,CAAA,EAAG,KAAK,SAAS,CAAA;AAE9D,EAAA,uBACE,GAAA,CAAC,eAAY,IAAA,EAAK,YAAA,EAAc,GAAG,IAAA,EAAM,SAAA,EAAW,SACjD,QAAA,EAAA,YAAA,mBACC,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEA,GAAA,CAAC,sBAAA,EAAA,EAAuB,KAAA,EAAc,SAAkB,CAAA,EAE5D,CAAA;AAEJ;;ACvOO,SAAS,qBACd,UAAA,EACS;AACT,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,UAAA,CAAW,OAAA;AACtB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,IAAA,GAAO,EAAA,CAAG,OAAA,CAAqB,8BAA8B,CAAA;AACnE,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,MAAM,SAAA,GAAY,MAAM,YAAA,CAAa,IAAI,CAAA;AACzC,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAkB;AACpC,MAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,EAAE,aAAqB,CAAA,eAAgB,KAAK,CAAA;AAAA,IACjE,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC1C,IAAA,IAAA,CAAK,gBAAA,CAAiB,YAAY,UAAU,CAAA;AAC5C,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAC7C,MAAA,IAAA,CAAK,mBAAA,CAAoB,YAAY,UAAU,CAAA;AAAA,IACjD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,OAAO,SAAA;AACT;;ACnBA,MAAM,aAAA,GAAgB;AAAA,EACpB,KAAA,EAAO;AAAA,IACL,IAAA,EAAMO,QAAA;AAAA,IACN,SAAA,EAAW,iBAAA;AAAA,IACX,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAMC,UAAA;AAAA,IACN,SAAA,EAAW,mBAAA;AAAA,IACX,KAAA,EAAO;AAAA;AAEX,CAAA;AAOO,SAAS,UAAA,CAAW,EAAE,MAAA,EAAQ,OAAA,EAAQ,EAAoB;AAC/D,EAAA,MAAM,OAAA,GAAU,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,MAAA;AACtD,EAAA,MAAM,GAAA,GAAM,OAAwB,IAAI,CAAA;AACxC,EAAA,MAAM,aAAA,GAAgB,qBAAqB,GAAG,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,cAAc,OAAO,CAAA;AAEpC,EAAA,MAAM,IAAA,mBACJ,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAK,MAAA,CAAO,IAAA;AAAA,MACZ,SAAA,EAAWR,QAAA,CAAO,MAAA,CAAO,SAAS,CAAA;AAAA,MAClC,YAAA,EAAY,OAAA,GAAU,CAAA,EAAG,MAAA,CAAO,KAAK,KAAK,OAAO,CAAA,CAAA,GAAK,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA;AAAA,GACvE;AAGF,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,uBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAW,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EAC/B;AAGA,EAAA,MAAM,gBAAgB,aAAA,IAAiB,SAAA;AAEvC,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,aAAA,EAEb,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA,CAAQ,OAAA;AAAA,MAAR;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAc,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,QACrC,YAAA,EAAc,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,QAErC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACA,GAAA,CAAC,OAAA,CAAQ,OAAA,EAAR,EAAiB,QAAA,EAAA,OAAA,EAAQ;AAAA,GAAA,EAC5B,CAAA;AAEJ;;AC1CA,MAAM,qBAAqB,kBAAA,EAAwB;AAsDnD,SAAS,kBAAA,CACP,KAAA,EACA,OAAA,GAAU,KAAA,EACG;AACb,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA,IAAS,OAAA;AAClB;AAEA,SAAS,wBAAwB,KAAA,EAA0C;AACzE,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,KAAA,EAAO;AACnB,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAA;AACT;AAEA,SAAS,sBACP,SAAA,EACwB;AACxB,EAAA,OAAO;AAAA,IACL,KAAA,EACE,UAAU,MAAA,EAAQ,KAAA,IAAS,UAAU,WAAA,IAAe,MAAA,CAAO,UAAU,EAAE,CAAA;AAAA,IACzE,QAAA,EAAU,UAAU,MAAA,EAAQ,QAAA;AAAA,IAC5B,QAAA,EAAU,UAAU,MAAA,EAAQ;AAAA,GAC9B;AACF;AAEA,SAAS,mBACP,MAAA,EACA;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAIA;AACA,EAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,KAAA,EAAO,OAAO,CAAA;AAEvD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,kCAAA,EAAiC,MAAA;AAAA,MACjC,gCAAA,EAAgC,aAAA;AAAA,MAChC,+BAAA,EAA+B,UAAU,OAAA,GAAU,MAAA;AAAA,MACnD,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,wBAAwB,aAAa,CAAA;AAAA,QACrD,QAAA,EAAU,MAAA;AAAA,QACV,KAAA,EAAO;AAAA,OACT;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,kCAAA,EAAiC,MAAA;AAAA,UACjC,KAAA,EAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,OAAO,aAAA,EAAc;AAAA,UAEhD,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAG,KAAA;AAAA,cACH,UAAU,MAAA,CAAO,QAAA;AAAA,cACjB,UAAU,MAAA,CAAO,QAAA;AAAA,cACjB,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,MAAA;AAAA,gBACV,SAAA,EAAW,aAAA;AAAA,gBACX,KAAA,EAAO;AAAA,eACT;AAAA,cAEC,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA;AACF;AAAA,GACF;AAEJ;AACA,SAAS,mBAA2B,KAAA,EAA0B;AAC5D,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IACE,OAAO,UAAU,QAAA,IACjB,OAAO,UAAU,QAAA,IACjB,OAAO,UAAU,QAAA,EACjB;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,MAAM,QAAA,EAAS;AAAA,EACxB;AAEA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,cAAA,CAAe,KAAK,CAAA,EAAG;AACtD,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACtB,GAAA,CAACK,UAAA,EAAA,EAAsB,QAAA,EAAA,kBAAA,CAAmB,IAAI,CAAA,EAAA,EAA/B,KAAiC,CACjD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAWO,SAAS,oBAAA,CAAuC;AAAA,EACrD,SAAA;AAAA,EACA;AACF,CAAA,EAAoD;AAClD,EAAA,MAAM,gBAAA,GAAmB,sBAAsB,SAAS,CAAA;AAGxD,EAAA,IAAI,SAAA,CAAU,OAAA,IAAW,SAAA,CAAU,OAAA,CAAQ,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,mBAAmB,KAAA,CAAM;AAAA,MAC9B,IAAI,SAAA,CAAU,EAAA;AAAA,MACd,MAAA,EAAQ,MACN,kBAAA,CAAmB,gBAAA,EAAkB;AAAA,QACnC,OAAO,SAAA,CAAU,KAAA;AAAA,QACjB,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,MACH,OAAA,EAAS,UAAU,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,WAC9B,oBAAA,CAAqB;AAAA,UACnB,SAAA,EAAW,MAAA;AAAA,UACX;AAAA,SACD;AAAA,OACH;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,SAAA;AAAA,QACA,WAAA,EAAa,kBAAA,CAAmB,SAAA,CAAU,KAAA,EAAO,IAAI,CAAA;AAAA,QACrD,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,MAAA,EAAQ,SAAA,CAAU,aAAA,GACd,MAAM,UAAU,aAAA,GAChB,MAAA;AAAA,MACJ,gBAAgB,SAAA,CAAU;AAAA,KAC3B,CAAA;AAAA,EACH;AAGA,EAAA,IAAI,gBAAgB,SAAA,CAAU,KAAA;AAC9B,EAAA,IAAI,qBAAqB,SAAA,CAAU,UAAA;AAEnC,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,uBAAA;AAAA,MAChC,SAAA,CAAU;AAAA,KACZ;AACA,IAAA,MAAM,YAAA,GAAe,sBAAsB,UAAU,CAAA;AAGrD,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,aAAA,GAAgB,YAAA,CAAa,KAAA;AAAA,IAC/B;AACA,IAAA,IAAI,uBAAuB,MAAA,EAAW;AACpC,MAAA,kBAAA,GAAqB,YAAA,CAAa,gBAAA;AAAA,QAChC;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,oBAAA,GAAuB,SAAA,CAAU,gBAAA,IACrC,gBAAA,wBAAqB,qBAAA,EAAA,EAAsB,CAAA;AAE7C,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,SAAA;AAAA,IACH,aAAa,gBAAA,CAAiB;AAAA,GAChC;AAKA,EAAA,OAAO,mBAAmB,QAAA,CAAS,CAAC,QAAW,GAAA,CAAI,SAAA,CAAU,EAAE,CAAA,EAAG;AAAA,IAChE,IAAI,SAAA,CAAU,EAAA;AAAA,IACd,IAAA,EAAM,CAAC,IAAA,KAAS;AACd,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,UAAU,EAAE,CAAA;AACnD,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,WAAA,GAAc,mBAAmB,YAAA,EAAc;AAAA,UAC7C,GAAA,EAAK,KAAK,GAAA,CAAI,QAAA;AAAA,UACd,KAAA,EAAO,KAAK,GAAA,CAAI;AAAA,SACjB,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,WAAA,GAAc,mBAAmB,YAAY,CAAA;AAAA,MAC/C;AACA,MAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,QAAA,WAAA,GAAc,oBAAA;AAAA,MAChB;AAEA,MAAA,MAAM,IAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,QAAA,CAAyB,IAAA;AAChD,MAAA,MAAM,SAAA,GAAY,IAAA,EAAM,MAAA,GAAS,SAAA,CAAU,EAAa,CAAA;AACxD,MAAA,MAAM,WAAA,GAAc,IAAA,EAAM,QAAA,GAAW,SAAA,CAAU,EAAa,CAAA;AAE5D,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWI,SAAkB,yBAAyB,CAAA;AAAA,UACtD,cAAY,aAAA,IAAiB,OAAA;AAAA,UAE5B,QAAA,EAAA;AAAA,YAAA,SAAA,mBACC,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,SAAQ,OAAA,EAAQ,CAAA,GAC7C,WAAA,mBACF,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,WAAA,EAAa,OAAA,EAAQ,WAAU,CAAA,GACjD,IAAA;AAAA,YACH,WAAA,IAAe;AAAA;AAAA;AAAA,OAClB;AAAA,IAEJ,CAAA;AAAA,IACA,MAAA,EAAQ,MACN,kBAAA,CAAmB,gBAAA,EAAkB;AAAA,MACnC,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACH,MAAA,EAAQ,SAAA,CAAU,aAAA,GAAgB,MAAM,UAAU,aAAA,GAAgB,MAAA;AAAA,IAClE,SAAS,SAAA,CAAU,QAAA;AAAA,IACnB,SAAS,SAAA,CAAU,QAAA;AAAA;AAAA;AAAA;AAAA,IAInB,IAAA,EAAM,SAAA,CAAU,YAAA,IAAgB,SAAA,CAAU,QAAA;AAAA,IAC1C,gBAAgB,SAAA,CAAU,SAAA;AAAA,IAC1B,aAAA,EAAe,CAAC,CAAC,SAAA,CAAU,QAAA;AAAA,IAC3B,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU,UAAU,UAAA,EAAY,IAAA;AAAA,MAChC,YAAY,SAAA,CAAU,UAAA;AAAA,MACtB,SAAA,EAAW,aAAA;AAAA;AAAA,MACX,WAAA,EAAa,mBAAmB,aAAa,CAAA;AAAA,MAC7C,aAAA,EAAe;AAAA,KACjB;AAAA;AAAA,IAGA,GAAI,SAAA,CAAU,QAAA,IAAY,OAAO,SAAA,CAAU,aAAa,UAAA,GACpD;AAAA,MACE,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,KAAA,KAAU;AAChC,QAAA,IAAI,OAAO,SAAA,CAAU,QAAA,KAAa,UAAA,EAAY;AAC5C,UAAA,OAAO,SAAA,CAAU,QAAA;AAAA,YACf,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,YACnB,IAAA,CAAK,SAAS,KAAK;AAAA,WACrB;AAAA,QACF;AACA,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,KACF,GACA;AAAA,GACL,CAAA;AACH;;AClVO,SAAS,mBAAA,CAAoB,GAAiB,CAAA,EAA0B;AAC7E,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAClC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjC,IAAA,IAAI,EAAE,CAAC,CAAA,CAAE,EAAA,KAAO,CAAA,CAAE,CAAC,CAAA,CAAE,EAAA,IAAM,CAAA,CAAE,CAAC,EAAE,IAAA,KAAS,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,OAAO,KAAA;AAAA,EAC7D;AACA,EAAA,OAAO,IAAA;AACT;;ACPA,MAAM,cAAc,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,4KAA4K,EAAE,CAAC,CAAC;;ACApZ,MAAM,gBAAgB,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iLAAiL,EAAE,CAAC,CAAC;;;;;;AC8BpZ,SAAS,YAAY,EAAE,IAAA,EAAM,QAAA,EAAU,GAAG,MAAK,EAAqB;AACzE,EAAA,MAAM,UAAU,EAAA,CAAGT,QAAA,CAAO,cAAc,CAAA,EAAG,KAAK,SAAS,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,KAAA;AAC9C,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,MAErC;AAAA;AAAA,GACH;AAEJ;;ACYO,MAAM,eAAA,GAAkB,UAAA;AAAA,EAI7B,CACE;AAAA,IACE,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,uBAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,mBAAmB,GAAG,SAAA,EAAW;AAAA,MACzD,CAACA,QAAA,CAAO,yBAAyB,CAAC,GAAG,OAAA;AAAA,MACrC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,UAAA;AAAA,MACxC,CAACA,QAAA,CAAO,+BAA+B,CAAC,GAAG,uBAAA;AAAA,MAC3C,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG,YAAA;AAAA,MACxC,CAACA,QAAA,CAAO,4BAA4B,CAAC,GAAG;AAAA,KACzC,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,KAAA;AAE/C,IAAA,uBACE,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QAEC,GAAA;AAAA,QACA,UAAA,EAAS,mBAAA;AAAA,QACR,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAM,IAAA,KAAS,QAAA,GAAW,MAAA,GAAY,cAAA;AAAA,QAErC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;;AClF9B,MAAM,+BAAA,GAAkC;AAAA,EACtC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,CAAE,KAAK,IAAI,CAAA;AAEX,SAAS,uBAAA,CACP,QACA,aAAA,EACA;AACA,EAAA,IAAI,EAAE,kBAAkB,OAAA,CAAA,EAAU;AAChC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,OAAA,CAAQ,+BAA+B,CAAA;AAEzE,EAAA,OAAO,CAAC,CAAC,kBAAA,IAAsB,aAAA,CAAc,SAAS,kBAAkB,CAAA;AAC1E;AAoBA,SAAS,wBAAA,CACP,OACA,YAAA,EACA;AACA,EAAA,MAAM,EAAE,YAAA,EAAc,QAAA,EAAU,QAAQ,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE/D,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAG/C,EAAA,MAAM,OAAA,GAAU,WAAA;AAAA,IACd,CAAC,OAAA,KAAmC;AAElC,MAAC,YAA8D,OAAA,GAC7D,OAAA;AAEF,MAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA,MACtB,WAAW,YAAA,EAAc;AACvB,QACE,aACA,OAAA,GAAU,OAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAU,GAAI,yBAAA,EAA0B;AAM3D,EAAA,MAAM,QAAA,GAAW,OAAO,MAAA,CAAO,EAAA;AAC/B,EAAA,MAAM,eAAe,QAAA,KAAa,qCAAA;AAClC,EAAA,MAAM,eAAe,QAAA,KAAa,uCAAA;AAClC,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,UAAA,EAAW;AAE/C,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA+C;AAC9C,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,SAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,IAAI,CAAA;AACd,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,YAAA;AACH,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,MAAM,CAAA;AAChB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,OAAO,CAAA;AACjB,UAAA;AAAA,QACF;AAAA,QACA,KAAK,GAAA;AAAA,QACL,KAAK,OAAA,EAAS;AACZ,UAAA,IAAI,uBAAA,CAAwB,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,aAAa,CAAA,EAAG;AAC9D,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,mBAAA;AACjD,UAAA,IAAI,YAAA,IAAgB,CAAC,UAAA,EAAY;AAC/B,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,MAAM,yBAAA,EAA0B;AACvC,YAAA;AAAA,UACF;AACA,UAAA,IAAI,YAAA,IAAgB,CAAC,UAAA,EAAY;AAC/B,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,MAAM,qBAAA,EAAsB;AACnC,YAAA;AAAA,UACF;AACA,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,OAAO,aAAA,EAAc;AAC5B,YAAA;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAEE;AACJ,IACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA,CAAO,MAAA;AAAA,MACP,MAAA,CAAO,KAAA;AAAA,MACP,YAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,KAAA,KAA4C;AAC3C,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,IAAI,EAAE,KAAA,CAAM,MAAA,YAAkB,OAAA,CAAA,EAAU;AACtC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,YAAA,GAAe,MAAM,MAAA,CAAO,OAAA;AAAA,UAChC;AAAA,SACF;AAEA,QAAA,IACE,gBACA,uBAAA,CAAwB,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,aAAa,CAAA,EACzD;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAA,CAAO,MAAA,CAAO,uBAAA,EAAwB,GAAI,KAAK,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,CAAO,MAAA,EAAQ,aAAa;AAAA,GAC/B;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,OAAA;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAGA,QAAA,CAAO,wBAAwB,GAAG,SAAS,CAAA;AAAA,MACzD,eAAA,EAAe,yBAAyB,YAAY,CAAA;AAAA,MACpD,WAAA,EACE,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,KAAA,GAC5B,WAAA,GACA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,GAC9B,YAAA,GACA,MAAA;AAAA,MAGP,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,aAAA,yBACE,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,KAAM,KAAA,GAC7B,mBAAA,GACA,OAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,GAC9B,oBAAA,GACA,aAAA;AAAA,UAAe,GAAA;AAAA,UAAI;AAAA,SAAA,EAE3B;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAKO,MAAM,mBAAA,GAAsB,WAAW,wBAAwB,CAAA;;;;;;;;ACzM/D,SAAS,YAAA,CAAgB;AAAA,EAC9B,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,QAAA,CAAO,eAAe,CAAA,EAAG;AAAA,IAC1C,CAACA,QAAA,CAAO,UAAU,CAAC,GAAG,MAAA,CAAO,OAAO,aAAA;AAAc,GACnD,CAAA;AAED,EAAA,MAAM,iBAAA,GAAoB,CACxB,CAAA,KACG;AACH,IAAA,aAAA,IAAgB;AAChB,IAAA,MAAA,CAAO,gBAAA,GAAmB,CAAC,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MAEL,QAAA,EAAU,EAAA;AAAA,MACV,aAAA,EAAe,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,EAAU;AAAA,MAC7C,WAAA,EAAa,iBAAA;AAAA,MACb,YAAA,EAAc,iBAAA;AAAA,MACd,SAAA,EAAW,WAAA;AAAA,MACX,UAAA,EAAY,WAAA;AAAA,MACZ,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAW,eAAA;AAAA,MACX,cAAA,EAAc,MAAA,CAAO,MAAA,CAAO,aAAA,EAAc;AAAA,MAC1C,sBAAA,EAAqB;AAAA;AAAA,GACvB;AAEJ;;;;;;AC1BA,SAAS,sBACP,KAAA,EACoB;AACpB,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,KAAA,EAAO;AACnB,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAA;AACT;AAkBO,SAAS,eAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,MACE,SAAS,OAAA,EAAS,aAAA;AAAA,MAChB;AAAA,KACF,IAAK,IAAA;AAAA,IACP,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,QAAA,KAAqB;AACpB,MAAA,MAAM,OAAO,YAAA,EAAa;AAC1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,IAAA,CAAK,YAAA,CAAa,sBAAsB,QAAQ,CAAA;AAChD,MAAA,IAAA,CACG,gBAAA,CAAiB,CAAA,qBAAA,EAAwB,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA,EAAA,CAAI,CAAA,CACjE,OAAA,CAAQ,CAAC,EAAA,KAAO,EAAA,CAAG,YAAA,CAAa,yBAAA,EAA2B,MAAM,CAAC,CAAA;AAAA,IACvE,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,sBAAA,GAAyB,WAAA;AAAA,IAC7B,CAAC,QAAA,KAAqB;AACpB,MAAA,MAAM,OAAO,YAAA,EAAa;AAC1B,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,IAAI,IAAA,CAAK,YAAA,CAAa,oBAAoB,CAAA,KAAM,QAAA,EAAU;AAC1D,MAAA,IAAA,CAAK,gBAAgB,oBAAoB,CAAA;AACzC,MAAA,IAAA,CACG,gBAAA;AAAA,QACC,CAAA,qBAAA,EAAwB,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA,kCAAA;AAAA,QAE7C,OAAA,CAAQ,CAAC,OAAO,EAAA,CAAG,eAAA,CAAgB,yBAAyB,CAAC,CAAA;AAAA,IAClE,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAGA,EAAA,MAAM,QAAA,GAAW,MAAA,iBAAoC,IAAI,GAAA,EAAK,CAAA;AAI9D,EAAA,MAAM,wBAAA,GAA2B,WAAA;AAAA,IAC/B,CAAC,aAAqB,MAAM;AAC1B,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AACjD,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,MAAM,WAAA,GAAc,WAAA,CAAY,qBAAA,EAAsB,CAAE,KAAA;AACxD,QAAA,SAAA,CAAU,MAAM;AACd,UAAA,KAAA,CAAM,eAAA,CAAgB,CAAC,IAAA,MAAU;AAAA,YAC/B,GAAG,IAAA;AAAA,YACH,CAAC,QAAQ,GAAG;AAAA,WACd,CAAE,CAAA;AAAA,QACJ,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,CAAe,EAAE,OAAO,CAAA;AAEhD,EAAA,uBACE,GAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,YAAA,EACf,QAAA,EAAA,KAAA,CAAM,iBAAgB,CAAE,GAAA,CAAI,CAAC,WAAA,EAAa,KAAA,qBACzC,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAWA,SAAO,uBAAuB,CAAA;AAAA,MACzC,IAAA,EAAK,KAAA;AAAA,MACL,iBAAe,KAAA,GAAQ,CAAA;AAAA,MAEtB,QAAA,EAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACnC,QAAA,MAAM,mBAAA,GAAsB,MAAA,CAAO,MAAA,CAAO,MAAA,GACtC,OAAO,MAAA,CAAO,MAAA,CAAO,cAAA,EAAe,CAAE,MAAM,EAAE,CAAA,CAAE,CAAC,CAAA,KACjD,OAAO,MAAA,GACP,KAAA;AAEJ,QAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,uCAAA;AACvB,QAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,qCAAA;AAGvB,QAAA,MAAM,aACJ,MAAA,CAAO,OAAA,GAAU,IAAI,CAAA,KAAA,EAAQ,MAAA,CAAO,OAAO,CAAA,CAAA,GAAK,MAAA;AAElD,QAAA,MAAM,kBAAA,GAAqB,qBAAA;AAAA,UACzB,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM;AAAA,SAChC;AACA,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,MAAA,GAAS,CAAA;AACjD,QAAA,MAAM,kBACJ,aAAA,IACA,OAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,UAAU,mBAAmB,CAAA;AACrD,QAAA,MAAM,sBAAA,GACJ,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAM,mBAAA,KAAwB,IAAA;AACxD,QAAA,MAAM,qBAAA,GACJ,CAAC,aAAA,KACA,MAAA,CAAO,OAAO,UAAA,EAAW,IAAA,CACtB,sBAAA,IAA0B,sBAAA,KAC1B,CAAC,sBAAA,CAAA;AAEP,QAAA,uBACE,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,OAAO,UAAA,EAAW;AAAA,YAE1B,GAAA,EAAK,CAAC,EAAA,KAA8B;AAClC,cAAA,IAAI,EAAA,EAAI;AACN,gBAAA,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA,cAC3C,CAAA,MAAO;AACL,gBAAA,QAAA,CAAS,OAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAAA,cAC1C;AAAA,YACF,CAAA;AAAA,YACA,SAAA,EAAW,uBAAA,CAAwB,MAAA,CAAO,MAAM,CAAA;AAAA,YAChD,oBAAA,EAAoB,OAAO,MAAA,CAAO,EAAA;AAAA,YAClC,KAAA,EAAO;AAAA,cACL,UAAA;AAAA,cACA,GAAG,sBAAA,CAAuB,MAAA,CAAO,MAAM;AAAA,aACzC;AAAA,YACA,gBAAc,MAAA,CAAO,OAAA;AAAA,YACrB,OAAA,EAAS,eAAA;AAAA,YACT,UAAA,EAAY,MAAA,CAAO,MAAA,CAAO,UAAA,EAAW;AAAA,YACrC,uBAAA,EAAyB,qBAAA;AAAA,YACzB,YAAA,EAAc,sBAAA;AAAA,YACd,YAAA,EAAc,sBAAA;AAAA,YACd,cACE,qBAAA,GACI,MAAM,kBAAkB,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA,GACxC,MAAA;AAAA,YAEN,cACE,qBAAA,GACI,MAAM,uBAAuB,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA,GAC7C,MAAA;AAAA,YAEN,YAAA,EAAc;AAAA,cACZ,QAAA,EAAU,KAAA;AAAA,cACV,aAAa,WAAA,CAAY,OAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,UAAU;AAAA,aAC3D;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO,gBAAgB,IAAA,mBACtB,IAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,KAAA;AAAA,gBACV,UAAA,EAAW,QAAA;AAAA,gBACX,GAAA,EAAK,CAAA;AAAA,gBACL,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO;AAAA,iBACT;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,IAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,KAAA;AAAA,sBACV,UAAA,EAAW,QAAA;AAAA,sBACX,cAAA,EAAgB,kBAAA;AAAA,sBAChB,GAAA,EAAK,CAAA;AAAA,sBACL,IAAA,EAAM,CAAA;AAAA,sBACN,KAAA,EAAO;AAAA,wBACL,QAAA,EAAU,CAAA;AAAA,wBACV,KAAA,EAAO;AAAA,uBACT;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,UAAA;AAAA,0BACC,MAAA,CAAO,OAAO,SAAA,CAAU,MAAA;AAAA,0BACxB,OAAO,UAAA;AAAW,yBACpB;AAAA,wBACC,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,mBACzB,GAAA;AAAA,0BAAC,MAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,UAAA,EAAY,QAAA;AAAA,8BACZ,OAAA,EAAS,MAAA;AAAA,8BACT,UAAA,EAAY;AAAA,6BACd;AAAA,4BAEC,QAAA,EAAA;AAAA,8BACC,qBAAK,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKU,cAAA,EAAiB,MAAK,OAAA,EAAQ,CAAA;AAAA,8BAC9C,sBAAM,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKC,gBAAA,EAAmB,MAAK,OAAA,EAAQ;AAAA,6BACnD,CAAE,MAAA,CAAO,MAAA,CAAO,WAAA,EAAuB,CAAA,IAAK;AAAA;AAAA,yBAC9C,GACE;AAAA;AAAA;AAAA,mBACN;AAAA,kBACC,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,cAAA,oBACvB,GAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBACC,MAAA;AAAA,sBACA,aAAA,EAAe,wBAAA;AAAA,wBACb,OAAO,MAAA,CAAO;AAAA;AAChB;AAAA;AACF;AAAA;AAAA;AAEJ,WAAA;AAAA,UAlFG,MAAA,CAAO;AAAA,SAoFd;AAAA,MAEJ,CAAC;AAAA,KAAA;AAAA,IA5HI,WAAA,CAAY;AAAA,GA8HpB,CAAA,EACH,CAAA;AAEJ;;;;;;;ACrOO,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,GAAG,MAAK,GAAI,cAAA;AAEhD,IAAA,MAAM,wBAAA,GAA2B,EAAA,CAAG,SAAA,EAAWX,QAAA,CAAO,iBAAiB,CAAC,CAAA;AACxE,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,aAAA;AAAA,QACP,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,wBAAA;AAAA,QACX,UAAA,EAAS,iBAAA;AAAA,QAET,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWA,SAAO,wBAAwB,CAAA;AAAA,YAC1C,UAAA,EAAS,wBAAA;AAAA,YAER;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;;;;ACvCtB,MAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA,GAAY,IAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAgC;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWA,SAAO,YAAY,CAAA;AAAA,MAC7B,GAAG,KAAA;AAAA,MACJ;AAAA;AAAA,GACF;AAEJ,CAAA;;;;;;;;;;;ACxBO,MAAM,YAAA,GAAe,CAAK,aAAA,KAAkC;AACjE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAmB,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,KAAK,CAAA;AACxC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,IAAI,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAe,WAAA,GAAc;AAC3B,MAAA,IAAI,yBAAyB,OAAA,EAAS;AACpC,QAAA,YAAA,CAAa,IAAI,CAAA;AACjB,QAAA,IAAI;AACF,UAAA,MAAM,OAAO,MAAM,aAAA;AACnB,UAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACpB,SAAS,MAAA,EAAQ;AACf,UAAA,QAAA,CAAS,IAAI,CAAA;AACb,UAAA,YAAA,CAAa,KAAK,CAAA;AAClB,UAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,aAAa,CAAA;AAC7B,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,IAAI,EAAE,yBAAyB,OAAA,CAAA,EAAU;AACvC,IAAA,OAAO,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,WAAW,KAAA,EAAM;AAAA,EAC/D;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAU;AAChD,CAAA;;AC7BA,MAAM,sBAAA,GAAyB,EAAA;AAcxB,SAAS,iBAAoB,MAAA,EAkBlC;AACA,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,WAAA,EAAY,GAAI,MAAA;AAE7C,EAAA,MAAM,YAAA,GAAe,aAAa,OAAA,KAAY,KAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,aAAa,OAAA,IAAW,sBAAA;AAE7C,EAAA,MAAM,YAAA,GAAe,MAAA,iBAAO,IAAI,GAAA,EAA4B,CAAA;AAC5D,EAAA,MAAM,eAAA,GAAkB,OAAO,YAAY,CAAA;AAC3C,EAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAI1B,EAAA,MAAM,aAAA,GAAgB,OAAO,CAAC,CAAA;AAK9B,EAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAClD,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAO,MAAA,CAAO,cAAc,CAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA;AAE5C,EAAA,IACE,iBAAA,CAAkB,YAAY,MAAA,CAAO,UAAA,IACrC,sBAAsB,OAAA,KAAY,MAAA,CAAO,cAAA,IACzC,kBAAA,CAAmB,OAAA,KAAY,MAAA,CAAO,eACtC,cAAA,CAAe,OAAA,EAAS,EAAA,KAAO,MAAA,CAAO,OAAA,EAAS,EAAA,IAC/C,eAAe,OAAA,EAAS,IAAA,KAAS,MAAA,CAAO,OAAA,EAAS,IAAA,EACjD;AACA,IAAA,YAAA,CAAa,OAAA,uBAAc,GAAA,EAAI;AAC/B,IAAA,aAAA,CAAc,OAAA,IAAW,CAAA;AACzB,IAAA,iBAAA,CAAkB,UAAU,MAAA,CAAO,UAAA;AACnC,IAAA,qBAAA,CAAsB,UAAU,MAAA,CAAO,cAAA;AACvC,IAAA,kBAAA,CAAmB,UAAU,MAAA,CAAO,WAAA;AACpC,IAAA,cAAA,CAAe,UAAU,MAAA,CAAO,OAAA;AAAA,EAClC;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CACE,SAAA,EACA,QAAA,EACA,OAAA,KAC2C;AAC3C,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA;AACjD,QAAA,IAAI,QAAQ,OAAO,MAAA;AAAA,MACrB;AAEA,MAAA,MAAM,SAAS,eAAA,CAAgB,OAAA;AAC/B,MAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,EAAC;AAErB,MAAA,MAAM,SAAS,MAAA,CAAO,EAAE,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA;AAEtD,MAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAI1B,MAAA,MAAM,oBAAoB,aAAA,CAAc,OAAA;AAExC,MAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,QAAA,OAAO,MAAA,CAAO,IAAA,CAAK,CAAC,IAAA,KAAS;AAC3B,UAAA,IAAI,aAAA,CAAc,OAAA,KAAY,iBAAA,EAAmB,OAAO,IAAA;AACxD,UAAA,MAAMY,SAAQ,YAAA,CAAa,OAAA;AAC3B,UAAA,IAAIA,MAAAA,CAAM,QAAQ,YAAA,EAAc;AAC9B,YAAA,MAAM,MAAA,GAASA,MAAAA,CAAM,IAAA,EAAK,CAAE,MAAK,CAAE,KAAA;AACnC,YAAA,IAAI,MAAA,IAAU,IAAA,EAAMA,MAAAA,CAAM,OAAO,MAAM,CAAA;AAAA,UACzC;AACA,UAAAA,MAAAA,CAAM,GAAA,CAAI,SAAA,EAAW,IAAI,CAAA;AACzB,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,QAAQ,YAAA,CAAa,OAAA;AAC3B,MAAA,IAAI,KAAA,CAAM,QAAQ,YAAA,EAAc;AAC9B,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,EAAK,CAAE,MAAK,CAAE,KAAA;AACnC,QAAA,IAAI,MAAA,IAAU,IAAA,EAAM,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA;AAAA,MACzC;AACA,MAAA,KAAA,CAAM,GAAA,CAAI,WAAW,MAAM,CAAA;AAC3B,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,GAC7B;AAEA,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,YAAA,CAAa,OAAA,uBAAc,GAAA,EAAI;AAC/B,IAAA,aAAA,CAAc,OAAA,IAAW,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,WAAW,UAAA,EAAW;AACjC;;ACpHO,SAAS,kBAAA,CACd,SACA,gBAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,YAAA,CAAa,UAAU,CAAA,KAAM,iBAAA;AAExD,EAAA,MAAM,kBAAkB,OAAA,CAAQ,OAAA;AAAA,IAC9B;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,eAAA,EAAiB;AAEtB,EAAA,MAAM,aAAA,GACJ,eAAA,CAAgB,gBAAA,CAAiB,mBAAmB,EAAE,CAAC,CAAA;AACzD,EAAA,MAAM,gBAAgB,eAAA,CACnB,aAAA,CAAc,+BAA+B,CAAA,EAC5C,QAAQ,mBAAmB,CAAA;AAE/B,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,YAAA,EAAc,aAAA,EAAe,qBAAA,EAAsB,CAAE,MAAA,IAAU,CAAA;AAAA,IAC/D,YAAA,EAAc,aAAA,EAAe,qBAAA,EAAsB,CAAE,MAAA,IAAU,CAAA;AAAA,IAC/D,WAAW,gBAAA,CAAiB,SAAA;AAAA,IAC5B,YAAY,gBAAA,CAAiB;AAAA,GAC/B;AAEA,EAAA,MAAM,WAAA,GAAc,QAAQ,qBAAA,EAAsB;AAClD,EAAA,MAAM,mBAAA,GAAsB,gBAAgB,qBAAA,EAAsB;AAKlE,EAAA,MAAM,eAAe,eAAA,CAAgB,WAAA;AACrC,EAAA,MAAM,gBAAgB,eAAA,CAAgB,YAAA;AAGtC,EAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,CAAA,GAAI,UAAA,CAAW,SAAA;AACvD,EAAA,MAAM,YAAA,GACJ,mBAAA,CAAoB,CAAA,GAAI,YAAA,GAAe,UAAA,CAAW,UAAA;AACpD,EAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,CAAA,GAAI,UAAA,CAAW,YAAA;AACtD,EAAA,MAAM,aAAA,GACJ,mBAAA,CAAoB,CAAA,GAAI,aAAA,GAAgB,UAAA,CAAW,YAAA;AAGrD,EAAA,MAAM,iBACJ,WAAA,CAAY,CAAA,IAAK,WAAA,IACjB,WAAA,CAAY,IAAI,WAAA,CAAY,KAAA,IAAS,YAAA,KACpC,UAAA,GACG,YAAY,CAAA,IAAK,UAAA,IACjB,YAAY,CAAA,GAAI,WAAA,CAAY,UAAU,aAAA,GACtC,IAAA,CAAA;AAEN,EAAA,IAAI,cAAA,EAAgB;AAGpB,EAAA,MAAM,kBAAkB,MAAc;AAEpC,IAAA,IAAI,WAAA,CAAY,IAAI,WAAA,EAAa;AAC/B,MAAA,OAAO,YAAY,CAAA,GAAI,WAAA;AAAA,IACzB;AAEA,IAAA,IAAI,WAAA,CAAY,CAAA,GAAI,WAAA,CAAY,KAAA,GAAQ,YAAA,EAAc;AACpD,MAAA,OAAO,WAAA,CAAY,CAAA,GAAI,WAAA,CAAY,KAAA,GAAQ,YAAA;AAAA,IAC7C;AACA,IAAA,OAAO,CAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAc;AACnC,IAAA,IAAI,CAAC,YAAY,OAAO,CAAA;AAExB,IAAA,IAAI,WAAA,CAAY,IAAI,UAAA,EAAY;AAC9B,MAAA,OAAO,YAAY,CAAA,GAAI,UAAA;AAAA,IACzB;AAEA,IAAA,IAAI,WAAA,CAAY,CAAA,GAAI,WAAA,CAAY,MAAA,GAAS,aAAA,EAAe;AACtD,MAAA,OAAO,WAAA,CAAY,CAAA,GAAI,WAAA,CAAY,MAAA,GAAS,aAAA;AAAA,IAC9C;AACA,IAAA,OAAO,CAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,aAAa,eAAA,EAAgB;AACnC,EAAA,MAAM,YAAY,cAAA,EAAe;AAEjC,EAAA,IAAI,UAAA,KAAe,CAAA,IAAK,SAAA,KAAc,CAAA,EAAG;AACvC,IAAA,eAAA,CAAgB,QAAA,CAAS;AAAA,MACvB,IAAA,EAAM,UAAA;AAAA,MACN,GAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACF;;ACnFA,MAAM,YAAA,GAA6B;AAAA,EACjC,WAAA,EAAa,IAAA;AAAA,EACb,iBAAA,EAAmB,EAAE,QAAA,EAAU,CAAA,EAAG,aAAa,CAAA,EAAE;AAAA,EACjD,qBAAA,EAAuB;AACzB,CAAA;AAEA,SAAS,OAAA,CACP,KAAA,EACA,MAAA,EACA,QAAA,EACA,WAAA,EACc;AACd,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAK,qBAAA,EAAuB;AAC1B,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa,OAAO,OAAA,CAAQ,YAAA;AAAA,QAC5B,qBAAA,EAAuB;AAAA,OACzB;AAAA,IACF;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa,OAAO,OAAA,CAAQ,YAAA;AAAA,QAC5B,iBAAA,EAAmB,OAAO,OAAA,CAAQ,YAAA;AAAA,QAClC,qBAAA,EAAuB;AAAA,OACzB;AAAA,IACF;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA;AAAA,QAEH,aAAa,KAAA,CAAM;AAAA,OACrB;AAAA,IACF;AAAA;AAAA,IAEA,KAAK,YAAA,EAAc;AACjB,MAAA,IAAI,cAAA;AAEJ,MAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,WAAA,EAAa,WAAA,IAAe,CAAA;AAC7D,MAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,WAAA,EAAa,QAAA,IAAY,CAAA;AAEvD,MAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,MAAA,EAAQ;AACvC,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,qBAAqB,CAAC;AAAA,SACjD;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,OAAA,EAAS;AAC/C,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,aAAa,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,CAAA,EAAG,qBAAqB,CAAC;AAAA,SAC/D;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,IAAA,EAAM;AAC5C,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,UACzC,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,MAAA,EAAQ;AAC9C,QAAA,cAAA,GAAiB;AAAA,UACf,UAAU,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,UACpD,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA,MAAO;AACL,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACf;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AAAA;AAAA,IAEA,KAAK,YAAA,EAAc;AACjB,MAAA,IAAI,cAAA;AACJ,MAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,WAAA,EAAa,WAAA,IAAe,CAAA;AAC7D,MAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,WAAA,EAAa,QAAA,IAAY,CAAA;AACvD,MAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,MAAA,EAAQ;AACvC,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,OAAA,EAAS;AAC/C,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,aAAa,WAAA,GAAc;AAAA,SAC7B;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,IAAA,EAAM;AAC5C,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,CAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA,MAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAA,KAAc,MAAA,EAAQ;AAC9C,QAAA,cAAA,GAAiB;AAAA,UACf,UAAU,QAAA,GAAW,CAAA;AAAA,UACrB,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA,MAAO;AACL,QAAA,cAAA,GAAiB;AAAA,UACf,QAAA,EAAU,eAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACf;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa;AAAA,OACf;AAAA,IACF;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa,IAAA;AAAA,QACb,mBAAmB,KAAA,CAAM,WAAA,IAAe,EAAE,WAAA,EAAa,CAAA,EAAG,UAAU,CAAA,EAAE;AAAA,QACtE,qBAAA,EAAuB;AAAA,OACzB;AAAA,IACF;AAAA,IACA,KAAK,qBAAA,EAAuB;AAC1B,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,qBAAA,EAAuB;AAAA,OACzB;AAAA,IACF;AAAA,IACA,KAAK,oBAAA,EAAsB;AAEzB,MAAA,OAAO;AAAA,QACL,GAAG;AAAA,OACL;AAAA,IACF;AAAA,IACA,SAAS;AACP,MAAA,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAAA,IAClC;AAAA;AAEJ;AAaO,SAAS,eAAA,CAAgB;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,QAAA,GAAW,OAAqB,YAAY,CAAA;AAElD,EAAA,MAAM,kBAAA,GAAqB,OAA4B,IAAI,CAAA;AAE3D,EAAA,MAAM,kBAAA,GAAqB,YAAY,MAAM;AAC3C,IAAA,MAAM,YAAA,GAAe,SAAS,OAAA,CAAQ,iBAAA;AACtC,IAAA,MAAM,OAAO,kBAAA,CAAmB,OAAA;AAChC,IAAA,MAAM,MAAA,GAAS,SAAS,OAAA,EAAS,aAAA;AAAA,MAC/B,CAAA,gBAAA,EAAmB,wBAAA,CAAyB,YAAY,CAAC,CAAA,EAAA;AAAA,KAC3D;AAMA,IAAA,MAAM,qBAAA,GACJ,QACA,IAAA,CAAK,QAAA,KAAa,aAAa,QAAA,IAC/B,IAAA,CAAK,gBAAgB,YAAA,CAAa,WAAA;AACpC,IAAA,IAAI,qBAAA,IAAyB,MAAA,EAAQ,QAAA,KAAa,CAAA,EAAG;AACnD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GACJ,IAAA,IAAQ,CAAC,qBAAA,GACJ,SAAS,OAAA,EAAS,aAAA;AAAA,MACjB,CAAA,gBAAA,EAAmB,wBAAA,CAAyB,IAAI,CAAC,CAAA,EAAA;AAAA,KACnD,GACA,IAAA;AACN,IAAA,IAAI,MAAA,SAAe,QAAA,GAAW,EAAA;AAC9B,IAAA,IAAI,MAAA,SAAe,QAAA,GAAW,CAAA;AAC9B,IAAA,kBAAA,CAAmB,OAAA,GAAU,YAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAKb,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,kBAAA,EAAmB;AAAA,EACrB,CAAA,EAAG,CAAC,kBAAA,EAAoB,QAAA,EAAU,WAAW,CAAC,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,MAAA,KAA0B;AACzB,MAAA,MAAM,WAAW,OAAA,CAAQ,QAAA,CAAS,OAAA,EAAS,MAAA,EAAQ,UAAU,WAAW,CAAA;AACxE,MAAA,IAAI,qBAAA,GAAwB,KAAA;AAE5B,MAAA,IACE,qBAAA;AAAA,QACE,QAAA,CAAS,WAAA;AAAA,QACT,SAAS,OAAA,CAAQ;AAAA,OACnB,EACA;AACA,QAAA,qBAAA,GAAwB,IAAA;AACxB,QAAA,IAAI,MAAA,CAAO,IAAA,KAAS,aAAA,IAAiB,QAAA,CAAS,qBAAA,EAAuB;AACnE,UAAA,qBAAA,GAAwB,KAAA;AAAA,QAC1B;AAAA,MACF;AACA,MAAA,QAAA,CAAS,OAAA,GAAU,QAAA;AACnB,MAAA,kBAAA,EAAmB;AAGnB,MAAA,IAAI,CAAC,QAAA,CAAS,WAAA,IAAe,qBAAA,EAAuB;AAClD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,kBAAkB,MAAM;AAC5B,QAAA,IAAI,CAAC,SAAS,WAAA,EAAa;AAK3B,QAAA,IACE,CAAC,qBAAA;AAAA,UACC,QAAA,CAAS,WAAA;AAAA,UACT,SAAS,OAAA,CAAQ;AAAA,SACnB,EACA;AACA,UAAA;AAAA,QACF;AACA,QAAA,MAAM,OAAA,GAAU,SAAS,OAAA,EAAS,aAAA;AAAA,UAChC,CAAA,gBAAA,EAAmB,wBAAA,CAAyB,QAAA,CAAS,WAAW,CAAC,CAAA,EAAA;AAAA,SACnE;AAEA,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,OAAA,CAAQ,KAAA,EAAM;AACd,UAAA,kBAAA,CAAmB,OAAA,EAAS;AAAA,YAC1B,SAAA,EAAW,eAAA;AAAA,YACX,UAAA,EAAY;AAAA,WACb,CAAA;AAAA,QACH,CAAA,MAAO;AAEL,UAAA,QAAA,CAAS;AAAA,YACP,IAAA,EAAM,qBAAA;AAAA,YACN,OAAA,EAAS,EAAE,YAAA,EAAc,EAAE,UAAU,CAAA,EAAG,WAAA,EAAa,GAAE;AAAE,WAC1D,CAAA;AAAA,QACH;AAAA,MACF,CAAA;AAEA,MAAA,IAAI,WAAA,IAAe,SAAS,WAAA,EAAa;AAOvC,QAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,WAAA,CAAY,QAAA,GAAW,cAAA;AACxD,QAAA,MAAM,YAAA,GAAe,YAAY,OAAA,CAAQ,KAAA;AACzC,QAAA,IAAI,eAAA,IAAmB,CAAA,IAAK,eAAA,GAAkB,YAAA,EAAc;AAC1D,UAAA,WAAA,CAAY,aAAA,CAAc,eAAA,EAAiB,EAAE,KAAA,EAAO,QAAQ,CAAA;AAG5D,UAAA,qBAAA,CAAsB,eAAe,CAAA;AACrC,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,eAAA,EAAgB;AAAA,IAClB,CAAA;AAAA,IACA;AAAA,MACE,QAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,cAAA,EAAgB,MAAM,QAAA,CAAS,QAAQ,WAAA,EAAY,CAAA;AAAA,IAC5D;AAAC,GACH;AAEA,EAAA,uBACE,GAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,KAAA,EACnC,QAAA,kBAAA,GAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,QAAA,EACrC,UACH,CAAA,EACF,CAAA;AAEJ;;AC9SO,MAAM,wBAAA,GAA2B,GAAA;AAOxC,MAAM,4BAAA,GAA+B,EAAA;AAgB9B,SAAS,uBAAA,CAAwB;AAAA,EACtC,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAIqC;AACnC,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,IAAY,QAAA,IAAY,wBAAA;AAElD,EAAA,MAAM,cAAc,cAAA,CAA+C;AAAA,IACjE,KAAA,EAAO,mBAAmB,QAAA,GAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrC,kBAAkB,MAAM;AACtB,MAAA,MAAM,QAAQ,SAAA,CAAU,OAAA;AACxB,MAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,MAAA,OACE,KAAA,CAAM,aAAA;AAAA,QACJ;AAAA,OACF,IAAK,KAAA;AAAA,IAET,CAAA;AAAA,IACA,cAAc,MAAM,4BAAA;AAAA,IACpB,QAAA,EAAU,CAAA;AAAA,IACV,gBACE,OAAO,MAAA,KAAW,eAClB,OAAO,SAAA,KAAc,eACrB,SAAA,CAAU,SAAA,CAAU,QAAQ,OAAO,CAAA,KAAM,KACrC,CAAC,EAAA,KACC,IAAI,qBAAA,EAAsB,CAAE,UAAU,4BAAA,GACxC;AAAA,GACP,CAAA;AAED,EAAA,OAAO,OAAA;AAAA,IACL,MAAO,mBAAmB,WAAA,GAAc,MAAA;AAAA,IACxC,CAAC,kBAAkB,WAAW;AAAA,GAChC;AACF;;ACFA,MAAM,aAAsB,EAAC;AA+H7B,SAAS,cAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,WAAA;AAAA,IACT,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,gBAAA;AAAA,IACA,qBAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AACJ,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,QAAA,GAAW,OAAuB,IAAI,CAAA;AAE5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAClC,4BAAA,CAAgD;AAAA,IAC9C,eAAA,EACE,YAAA,IAAgB,cAAA,GACZ,MAAA,CAAO,YAAY,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAA,GACzD,MAAA;AAAA,IACN,cAAc,YAAA,GACV,qBAAA,GACE,MAAA,CAAO,WAAA,CAAY,sBAAsB,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAChE,KACF,EAAC;AAAA,IACL,QAAA,EAAU,CAAC,eAAA,KAAoB;AAC7B,MAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,eAAe,CAAwB,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,4BAAA,CAA2C;AAAA,IACvE,eAAA,EAAiB,YAAA,GAAe,CAAC,YAAY,CAAA,GAAI,MAAA;AAAA,IACjD,YAAA,EAAc,mBAAA,GAAsB,CAAC,mBAAmB,CAAA,GAAI,MAAA;AAAA,IAC5D,QAAA,EAAU,CAAC,UAAA,KAAe;AACxB,MAAA,MAAA,GAAS,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,IACxB;AAAA,GACD,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,UAAA;AACtB,EAAA,MAAM,gBAAA,GACJ,OAAO,UAAA,KAAe,QAAA,GAAW,UAAA,GAAa,MAAA;AAChD,EAAA,MAAM,WAAA,GAAc,kBAAkB,WAAA,IAAe,EAAA;AACrD,EAAA,MAAM,aAAa,gBAAA,EAAkB,UAAA;AAErC,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1C,4BAAA,CAAqC;AAAA,IACnC,iBAAiB,gBAAA,EAAkB,gBAAA;AAAA,IACnC,YAAA,EAAc,kBAAkB,gBAAA,IAAoB,CAAA;AAAA,IACpD,QAAA,EAAU,CAAC,YAAA,KAAiB;AAC1B,MAAA,gBAAA,EAAkB,eAAe,YAAY,CAAA;AAAA,IAC/C;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,CAAC,CAAA;AAEtD,EAAA,MAAM,aAAa,gBAAA,EAAkB,YAAA;AACrC,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAC,UAAA,IAAc,OAAO,UAAA,KAAe,UAAA;AAE/D,EAAA,MAAM,EAAE,SAAA,EAAW,UAAA,EAAW,GAAI,gBAAA,CAAoB;AAAA,IACpD,YAAA,EAAc,UAAA;AAAA,IACd,OAAO,gBAAA,EAAkB,KAAA;AAAA,IACzB,UAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,EAAS,UAAU,CAAC;AAAA,GACrB,CAAA;AAED,EAAA,mBAAA;AAAA,IACE,GAAA;AAAA,IACA,OAAO;AAAA,MACL,SAAS,MAAM;AACb,QAAA,iBAAA,CAAkB,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAC9B,QAAA,mBAAA,CAAoB,CAAC,CAAA;AAAA,MACvB,CAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,qBAAqB,UAAU;AAAA,GAClC;AAEA,EAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,mBAAA,CAAoB,CAAC,CAAA;AAAA,IACvB;AAAA,EAEF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAM;AAC/B,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,OAAO,UAAU,gBAAA,IAAoB,CAAA,EAAG,WAAA,EAAa,OAAA,GAAU,CAAC,CAAC,CAAA;AAAA,EAEnE,CAAA,EAAG;AAAA,IACD,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM;AAAA,IACJ,IAAA,EAAM,YAAA;AAAA;AAAA,IAEN,KAAA,EAAO,MAAA;AAAA,IACP;AAAA,GACF,GAAI,aAAa,UAAU,CAAA;AAC3B,EAAA,MAAM,cAAA,GACJ,gBAAA,EAAkB,aAAA,IAAiB,YAAA,EAAc,MAAA,IAAU,CAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,OAAA;AAAA,IACjB,MAAM,CAAC,CAAC,YAAA,EAAc,IAAA,CAAK,CAAC,GAAA,KAAA,CAAS,GAAA,EAAK,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK,CAAC,CAAA;AAAA,IACnE,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,eAAA,GAAkB,OAAA;AAAA,IACtB,MAAM,CAAC,CAAC,YAAA,EAAc,KAAK,CAAC,GAAA,KAAQ,GAAA,EAAK,YAAA,IAAgB,IAAI,CAAA;AAAA,IAC7D,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,eAAe,UAAA,IAAc,eAAA;AAEnC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,4BAAA,CAA4C;AAAA,IAC1E,iBACE,YAAA,IAAgB,cAAA,GACZ,cAAA,KAAmB,KAAA,GACjB,OACA,MAAA,CAAO,WAAA,CAAY,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAC3D,MAAA;AAAA,IACN,YAAA,EAAc,eACV,qBAAA,GACE,qBAAA,KAA0B,QACxB,IAAA,GACA,MAAA,CAAO,YAAY,qBAAA,CAAsB,GAAA,CAAI,CAAC,EAAA,KAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA,GAClE,KACF,EAAC;AAAA,IACL,QAAA,EAAU,CAAC,WAAA,KAAgB;AACzB,MAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,WAAW,CAAwB,CAAA;AAAA,MAC/D;AAAA,IACF;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,SAAA,GAAY,YAAY,UAAA,GAAa,YAAA;AAG3C,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,SAAA,EAAW,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC9B,MAAA,MAAM,OAAQ,GAAA,CAAoB,IAAA;AAClC,MAAA,OAAO,IAAA,EAAM,YAAY,IAAA,EAAM,UAAA;AAAA,IACjC,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAA0B;AACtD,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI;AAAA,MACtB,IAAA,EAAM,WAAA,CACH,MAAA,CAAO,CAAC,WAAW,MAAA,CAAO,MAAA,KAAW,MAAM,CAAA,CAC3C,IAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,MAC1B,KAAA,EAAO,WAAA,CACJ,MAAA,CAAO,CAAC,WAAW,MAAA,CAAO,MAAA,KAAW,OAAO,CAAA,CAC5C,IAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC;AAAA,KAC5B;AAGA,IAAA,MAAM,kBAAA,GAAqB,gBAAgB,YAAA,IAAgB,YAAA;AAC3D,IAAA,MAAM,wBAAwB,EAAC;AAC/B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,qBAAA,CAAsB,KAAK,uCAAuC,CAAA;AAAA,IACpE;AACA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,qBAAA,CAAsB,KAAK,qCAAqC,CAAA;AAAA,IAClE;AACA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,qBAAA,CAAsB,KAAK,8BAA8B,CAAA;AAAA,IAC3D;AAEA,IAAA,OAAO;AAAA,MACL,IAAA,EACE,kBAAA,IAAsB,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,GACxC,CAAC,GAAG,qBAAA,EAAuB,GAAG,IAAI,CAAA,GACjC,QAAQ,EAAC;AAAA,MAChB,KAAA,EAAO,SAAS;AAAC,KACnB;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,YAAA,EAAc,YAAA,EAAc,YAAY,CAAC,CAAA;AAG1D,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,MAAM,eAA2C,WAAA,CAAY,GAAA;AAAA,MAAI,CAAC,WAChE,oBAAA,CAAqB;AAAA,QACnB,SAAA,EAAW,MAAA;AAAA,QACX;AAAA,OACD;AAAA,KACH;AAIA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,OAAA,CAAQ;AAAA,QACnB,EAAA,EAAI,8BAAA;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,EAAA;AAAA,QACT,QAAQ,MAAM,IAAA;AAAA,QACd,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAAM;AACjB,UAAA,MAAM,IAAA,GAAQ,IAAI,QAAA,CAAyB,IAAA;AAC3C,UAAA,MAAM,WAAW,IAAA,EAAM,QAAA;AACvB,UAAA,MAAM,aAAa,IAAA,EAAM,UAAA;AACzB,UAAA,IAAI,UAAU,uBAAO,GAAA,CAAC,cAAW,MAAA,EAAQ,QAAA,EAAU,SAAQ,OAAA,EAAQ,CAAA;AACnE,UAAA,IAAI,UAAA;AACF,YAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,UAAA,EAAY,SAAQ,SAAA,EAAU,CAAA;AAC3D,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,OACD,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,OAAA,CAAQ;AAAA,QACnB,EAAA,EAAI,qCAAA;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM,EAAE,mBAAA,EAAqB,gBAAA,EAAiB;AAAA,QAC9C,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAAC,QAAM,KAAM;AACrB,UAAA,IAAI,kBAAkB,OAAO,IAAA;AAC7B,UAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,gBAAe,QAAA,EAC5B,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,EAAA;AAAA,cACV,OAAA,EAASA,OAAM,+BAAA,EAAgC;AAAA,cAC/C,UAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,eAAe,CAAA,EAAG;AAAA,gBACrC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAGA,OAAM,oBAAA;AAAqB,eAClD,CAAA;AAAA,cACD,IAAA,EAAK,OAAA;AAAA,cACL,IAAA,EAAMC,eAAA;AAAA,cACN,YAAA,EACED,MAAAA,CAAM,oBAAA,EAAqB,GACvB,mBAAA,GACA,iBAAA;AAAA,cAEN,kBAAA,EAAiB;AAAA;AAAA,WACnB,EACF,CAAA;AAAA,QAEJ,CAAA;AAAA,QACA,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAAM;AACjB,UAAA,IAAI,GAAA,CAAI,cAAa,EAAG;AACtB,YAAA,uBACE,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,EAAA;AAAA,gBACV,OAAA,EAAS,IAAI,wBAAA,EAAyB;AAAA,gBACtC,UAAA,EAAW,OAAA;AAAA,gBACX,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAMC,eAAA;AAAA,gBACN,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,eAAe,CAAA,EAAG;AAAA,kBACrC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,IAAI,aAAA;AAAc,iBACzC,CAAA;AAAA,gBACD,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,gBACnD,iBACE,eAAA,IAAmB,GAAA,CAAI,cAAa,GAChC,GAAA,CAAI,eAAc,GAClB,MAAA;AAAA,gBAEN,eAAA,EACE,mBAAmB,GAAA,CAAI,YAAA,KACnB,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,cAAA,CAAA,GACT,MAAA;AAAA,gBAEN,kBAAA,EAAiB;AAAA;AAAA,aACnB;AAAA,UAGJ,WAAW,GAAA,CAAI,YAAA,EAAa,EAAG,YAAA,MAAkB,YAAA,EAAc;AAC7D,YAAA,uBACE,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,EAAA;AAAA,gBACV,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,gBACnD,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,gBAC3B,QAAA,EAAU,CAAC,GAAA,CAAI,YAAA,EAAa;AAAA,gBAC5B,aAAA,EAAe,IAAI,iBAAA,EAAkB;AAAA,gBACrC,QAAA,EAAU,IAAI,wBAAA,EAAyB;AAAA,gBACvC,kBAAA,EAAiB;AAAA;AAAA,aACnB;AAAA,UAEJ;AAAA,QACF;AAAA,OACD,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,OAAA,CAAQ;AAAA,QACnB,EAAA,EAAI,uCAAA;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM,EAAE,mBAAA,EAAqB,gBAAA,EAAiB;AAAA,QAC9C,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAAD,QAAM,KAAM;AACrB,UAAA,IAAI,kBAAkB,OAAO,IAAA;AAC7B,UAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,gBAAe,QAAA,EAC5B,QAAA,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,EAAA;AAAA,cACV,YAAA,EACEA,MAAAA,CAAM,wBAAA,EAAyB,GAC3B,mBAAA,GACA,iBAAA;AAAA,cAEN,OAAA,EAASA,OAAM,wBAAA,EAAyB;AAAA,cACxC,aAAA,EAAeA,OAAM,yBAAA,EAA0B;AAAA,cAC/C,QAAA,EAAUA,OAAM,mCAAA,EAAoC;AAAA,cACpD,kBAAA,EAAiB;AAAA;AAAA,WACnB,EACF,CAAA;AAAA,QAEJ,CAAA;AAAA,QACA,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAAM;AACjB,UAAA,IAAI,GAAA,CAAI,YAAA,EAAa,EAAG,YAAA,MAAkB,YAAA,EAAc;AACtD,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,uBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,EAAA;AAAA,cACV,YAAA,EAAY,GAAA,CAAI,aAAA,EAAc,GAAI,cAAA,GAAiB,YAAA;AAAA,cACnD,OAAA,EAAS,IAAI,aAAA,EAAc;AAAA,cAC3B,QAAA,EAAU,CAAC,GAAA,CAAI,YAAA,EAAa;AAAA,cAC5B,aAAA,EAAe,IAAI,iBAAA,EAAkB;AAAA,cACrC,QAAA,EAAU,IAAI,wBAAA,EAAyB;AAAA,cACvC,kBAAA,EAAiB;AAAA;AAAA,WACnB;AAAA,QAEJ;AAAA,OACD,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,YAAA;AAAA,EACT,CAAA,EAAG;AAAA,IACD,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,IAC1B,IAAA,EAAM,aAAa,EAAC;AAAA,IACpB,OAAA;AAAA,IACA,iBAAiB,eAAA,EAAgB;AAAA,IACjC,mBAAmB,iBAAA,EAAkB;AAAA,IACrC,GAAI,WAAA,IAAe,EAAE,qBAAA,EAAuB,uBAAsB,EAAE;AAAA,IACpE,GAAI,YAAA,IAAgB,EAAE,mBAAA,EAAqB,qBAAoB,EAAE;AAAA;AAAA,IAEjE,QAAA,EAAU,CAAC,GAAA,KAAS,GAAA,CAAoB,GAAG,QAAA,EAAS;AAAA,IACpD,UAAA,EAAY,CAAC,GAAA,KAAS,GAAA,CAAoB,OAAA,IAAW,MAAA;AAAA,IACrD,eAAA,EAAiB,CAAC,GAAA,KAAQ;AACxB,MAAA,MAAM,cAAc,GAAA,CAAI,QAAA;AACxB,MAAA,OAAA,CACG,aAAa,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK,CAAA,IACtC,aAAa,YAAA,IAAgB,IAAA;AAAA,IAEjC,CAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAI,WAAA,IAAe;AAAA,QACjB,UAAA,EAAY;AAAA,UACV,WAAW,gBAAA,IAAoB,CAAA;AAAA,UAC/B,QAAA,EAAU;AAAA;AACZ;AACF,KACF;AAAA,IACA,gBAAA,EAAkB,CAAC,WAAA,IAAe,gBAAA;AAAA;AAAA,IAElC,aAAA,EAAe,gBAAA;AAAA,IACf,kBAAA,EAAoB,KAAA;AAAA,IACpB,gBAAA,EAAkB,UAAA;AAAA,IAClB,kBAAA,EACE,OAAO,YAAA,KAAiB,UAAA,GACpB,CAAC,GAAA,KAAQ,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,GAClC,YAAA;AAAA,IACN,oBAAA,EAAsB,CAAC,eAAA,KAAoB;AACzC,MAAA,eAAA,CAAgB,eAAoC,CAAA;AAAA,IACtD,CAAA;AAAA,IACA,gBAAA,EAAkB,CAAC,WAAA,KAAgB;AACjC,MAAA,WAAA,CAAY,WAA4B,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,cAAA,KAAmB;AACnC,MAAA,MAAM,aACJ,OAAO,cAAA,KAAmB,UAAA,GACtB,cAAA,CAAe,OAAO,CAAA,GACtB,cAAA;AAEN,MAAA,IAAI,mBAAA,CAAoB,UAAA,EAAY,OAAA,IAAW,EAAE,CAAA,EAAG;AAClD,QAAA;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,UAAU,CAAA;AACrB,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,mBAAA,CAAoB,CAAC,CAAA;AAAA,MACvB;AAAA,IACF;AAAA,GACD,CAAA;AAED,EAAA,MAAM,iBAAiB,uBAAA,CAAwB;AAAA,IAC7C,QAAA,EAAU,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAAA,IACnC,SAAA,EAAW,QAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,MAAM,cAAA,EAAe;AACrC,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,eAAA,EAAgB,CAAE,MAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAAK,MAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,QAAA,EAAS,CAAE,YAAA;AAEtC,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,MAAA,KAAiC;AACrE,IAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,EAAG;AACvC,MAAA,UAAA,GAAa,OAAO,aAAA,CAAc,MAAA;AAAA,IACpC,CAAA,MAAA,IAAW,OAAO,aAAA,EAAe;AAC/B,MAAA,UAAA,GAAa,CAAA;AAAA,IACf;AAGA,IAAA,IAAI,OAAO,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,EAAG;AACnD,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,QACrB,GAAG,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,SAAA,KAAc,gBAAA,CAAiB,SAAS,CAAC,CAAA;AAAA,QAChE;AAAA,OACF;AACA,MAAA,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,SAAS,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,GAAG,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,KAAW,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,MACvD;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAElC,EAAA,MAAM,aACJ,YAAA,GAAe,CAAA,IAAM,YAAA,KAAiB,MAAA,IAAa,aAAa,MAAA,GAAS,CAAA;AAE3E,EAAA,MAAM,QAAA,GAAW,OAAA;AAAA,IACf,MAAM,eAAe,cAAA,GAAiB,YAAA;AAAA,IACtC,CAAC,YAAA,EAAc,cAAA,EAAgB,YAAY;AAAA,GAC7C;AAEA,EAAA,MAAM,UAAU,CAAC,SAAA,KAAc,CAAC,SAAA,IAAa,UAAU,MAAA,KAAW,CAAA,CAAA;AAElE,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,WAAW,oBAAoB,CAAA;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAI,qBAAA,EAAsB;AAChD,EAAA,MAAM,kBAAkB,SAAA,IAAa,OAAA;AAErC,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,MAAM,UAAA,EAAY,GAAA;AACxB,IAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,IAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,OAAO,GAAA;AACtC,IAAA,OAAO,eAAA,KAAoB,SACtB,GAAA,CAAI,IAAA,IAAQ,IAAI,KAAA,GAChB,GAAA,CAAI,SAAS,GAAA,CAAI,IAAA;AAAA,EACxB,CAAA,GAAG;AAKH,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,MAAM,OAA2C,EAAC;AAGlD,IAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAAA,MAC1B,CAAC,MAAA,KAAW,MAAA,CAAO,UAAA,EAAY,MAAA,KAAW;AAAA,KAC5C;AAGA,IAAA,MAAM,kBAAkB,WAAA,CAAY,KAAA;AAAA,MAClC,CAAC,MAAA,KAAW,MAAA,CAAO,MAAA,CAAO,UAAU,OAAA,IAAW;AAAA,KACjD;AAIA,IAAA,MAAM,WAAA,GAAc,WAAA,CACjB,GAAA,CAAI,CAAC,MAAA,KAAW;AACf,MAAA,MAAM,QAAA,GAAW,OAAO,MAAA,CAAO,EAAA;AAC/B,MAAA,MAAM,iBAAiB,QAAA,IAAY,YAAA;AACnC,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,OAAA,EAAQ;AAG1C,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,OAAO,GAAG,WAAW,CAAA,EAAA,CAAA;AAAA,MACvB;AASA,MAAA,IAAI,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY,EAAG;AAC/B,QAAA,OAAO,GAAG,WAAW,CAAA,EAAA,CAAA;AAAA,MACvB;AAOA,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,OAAA;AACxC,MAAA,OAAO,UAAU,WAAW,CAAA,IAAA,EAAO,UAAU,CAAA,EAAG,OAAO,OAAO,KAAK,CAAA,CAAA,CAAA;AAAA,IACrE,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACX,IAAA,IAAA,CAAK,4BAA4B,CAAA,GAAI,WAAA;AAGrC,IAAA,IAAA,CAAK,kBAAkB,CAAA,GAAI,eAAA,GAAkB,aAAA,GAAgB,MAAA;AAE7D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAA,EAAS,YAAY,CAAC,CAAA;AAE1B,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAEhC,IAAA,OAAO,OAAA,CAAQ,OAAO,CAAC,MAAA,KAAW,OAAO,UAAA,EAAY,MAAA,KAAW,CAAC,CAAA,CAAE,MAAA;AAAA,EACrE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA,EAAiB,MAAM,gBAAA,EAAiB;AAAA,MACxC,gBAAA,EAAkB,MAAM,iBAAA,EAAkB;AAAA,MAC1C,WAAA,EAAa,cAAA;AAAA,MACb,cAAA;AAAA,MAEA,QAAA,kBAAA,IAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACE,GAAG,IAAA;AAAA,UACJ,GAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAO;AAAA,YACL,GAAG,aAAA;AAAA,YACH,KAAA,EAAO,QAAQ,kBAAkB;AAAA,WACnC;AAAA,UACA,SAAA,EAAW,GAAG,SAAA,EAAW;AAAA,YACvB,CAAC,MAAA,CAAO,2BAA2B,CAAC,GAAG;AAAA,WACxC,CAAA;AAAA,UAED,QAAA,EAAA;AAAA,4BAAA,IAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,YAAA;AAAA,gBACL,KAAA,EAAO,OAAA;AAAA,gBACP,QAAA;AAAA,gBACA,QAAA,EAAU,WAAA;AAAA,gBACV,UAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,OAAc,QAAA,EAAoB,CAAA;AAAA,kCACnD,GAAA;AAAA,oBAAC,aAAA;AAAA,oBAAA;AAAA,sBACC,KAAA;AAAA,sBACA,UAAA;AAAA,sBACA,WAAA,EAAa,cAAA;AAAA,sBACb;AAAA;AAAA,mBACF;AAAA,kBACC,OAAA,IAAW,8BACV,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,UAAO,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,oCAC3B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,uBAAuB,CAAA,EAC5C,QAAA,kBAAA,IAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,cAAA,EAAe,QAAA;AAAA,wBACf,UAAA,EAAW,QAAA;AAAA,wBACX,SAAA,EAAU,QAAA;AAAA,wBACV,GAAA,EAAK,CAAA;AAAA,wBAEJ,QAAA,EAAA;AAAA,0BAAA,aAAA,oBAAiB,GAAA,CAAC,aAAA,EAAA,EAAc,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,0BACnD,UAAA,CAAW;AAAA;AAAA;AAAA,qBACd,EACF;AAAA,mBAAA,EACF,CAAA;AAAA,kBAED,6BACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,UAAO,QAAA,EAAA,4BAAA,EAA0B,CAAA;AAAA,oCAElC,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,MAAA,EAAQ,WAAA,GAAc,CAAA,EAAG,WAAA,GAAc,EAAE,CAAA,EAAA,CAAA,GAAO;AAAA,yBAClD;AAAA,wBACA,IAAA,EAAK,cAAA;AAAA,wBACL,aAAA,EAAY,MAAA;AAAA,wBAEZ,QAAA,kBAAA,GAAA;AAAA,0BAAC,IAAA;AAAA,0BAAA;AAAA,4BACC,cAAA,EAAe,QAAA;AAAA,4BACf,UAAA,EAAW,QAAA;AAAA,4BACX,KAAA,EAAO;AAAA,8BACL,QAAA,EAAU,UAAA;AAAA,8BACV,GAAA,EAAK,CAAA;AAAA,8BACL,MAAA,EAAQ,CAAA;AAAA,8BACR,IAAA,EAAM,CAAA;AAAA,8BACN,KAAA,EAAO,CAAA;AAAA,8BACP,MAAA,EAAQ,MAAA;AAAA,8BACR,MAAA,EAAQ;AAAA,6BACV;AAAA,4BAEA,8BAAC,OAAA,EAAA,EAAQ;AAAA;AAAA;AACX;AAAA;AACF,mBAAA,EACF,CAAA;AAAA,kBAED,UAAA,oBACC,GAAA;AAAA,oBAAC,eAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EACE,UAAA,GAAa,MAAA,CAAO,wBAAwB,CAAA,GAAI,MAAA;AAAA,sBAElD,KAAA;AAAA,sBACA,OAAA,EAAS,WAAA;AAAA,sBACT;AAAA;AAAA;AACF;AAAA;AAAA,aAEJ;AAAA,YACC,UAAA,oBACC,GAAA;AAAA,cAAC,mBAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAc,WAAA;AAAA,gBACd,SAAA,EAAW,kBAAkB,SAAA,IAAa,IAAA;AAAA,gBAC1C,IAAA,EAAA,CAAO,oBAAoB,CAAA,IAAK,CAAA;AAAA,gBAChC,cAAA;AAAA,gBACA,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,kBAAA,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,gBAC9B,CAAA;AAAA,gBACA,oBAAA,EAAsB,CAAC,YAAA,KAAiB;AACtC,kBAAA,gBAAA,EAAkB,sBAAsB,YAAY,CAAA;AAAA,gBACtD,CAAA;AAAA,gBACA,qBAAqB,gBAAA,EAAkB;AAAA;AAAA;AACzC;AAAA;AAAA;AAEJ;AAAA,GACF;AAEJ;AAuDO,MAAM,SAAA,GAAY,WAAW,cAAc;;;;","x_google_ignoreList":[17,18]}