@backbay/glia 0.2.0-alpha.7 → 0.2.0-alpha.8

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 (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +15 -9
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/primitives/index.ts","../src/primitives/atoms/PixelCanvas/PixelCanvas.tsx","../src/primitives/atoms/GlowInput/GlowInput.tsx","../src/primitives/atoms/GlassProgressBar/GlassProgressBar.tsx","../src/primitives/atoms/StatBadge/StatBadge.tsx","../src/primitives/atoms/IconPulse/IconPulse.tsx","../src/primitives/atoms/VoiceCaptions/VoiceCaptions.tsx","../../../node_modules/@radix-ui/react-checkbox/src/checkbox.tsx","../src/primitives/atoms/GlassCheckbox/GlassCheckbox.tsx","../../../node_modules/@radix-ui/react-radio-group/src/radio.tsx","../../../node_modules/@radix-ui/react-radio-group/src/radio-group.tsx","../src/primitives/atoms/GlassRadioGroup/GlassRadioGroup.tsx","../../../node_modules/@radix-ui/react-slider/src/slider.tsx","../src/primitives/atoms/GlassSlider/GlassSlider.tsx","../../../node_modules/@radix-ui/react-collapsible/src/collapsible.tsx","../../../node_modules/@radix-ui/react-accordion/src/accordion.tsx","../src/primitives/atoms/GlassAccordion/GlassAccordion.tsx","../src/primitives/atoms/StreamingText/StreamingText.tsx","../src/primitives/atoms/CodeBlock/CodeBlock.tsx","../src/primitives/atoms/HUDLoader/HUDLoader.tsx","../src/primitives/atoms/GlassAvatar/GlassAvatar.tsx","../src/primitives/atoms/GlassBadge/GlassBadge.tsx","../src/primitives/atoms/GlassTextarea/GlassTextarea.tsx","../src/primitives/molecules/FormField/FormField.tsx","../src/primitives/molecules/GlassDataCard/GlassDataCard.tsx","../src/primitives/molecules/GlassSteps/GlassSteps.tsx","../src/primitives/molecules/ToolCallCard/ToolCallCard.tsx","../src/primitives/molecules/ToolCallCard/ToolCallList.tsx","../src/primitives/molecules/GlassEmptyState/GlassEmptyState.tsx","../src/primitives/molecules/GlassSelect/GlassSelect.tsx","../src/primitives/molecules/GlassDatePicker/GlassDatePicker.tsx","../src/primitives/molecules/GlassFileUpload/GlassFileUpload.tsx","../src/primitives/organisms/GlassNavigation/GlassNavigation.tsx","../src/primitives/organisms/GlassResizable/GlassResizable.tsx","../src/primitives/organisms/GlassSidebar/GlassSidebar.tsx","../src/primitives/organisms/GlassTable/GlassTable.tsx","../src/primitives/organisms/GlassTimeline/GlassTimeline.tsx","../src/primitives/organisms/ChatThread/ChatBubble.tsx","../src/primitives/organisms/ChatThread/MessageThread.tsx","../src/primitives/organisms/ChatThread/ChatInput.tsx","../src/primitives/organisms/GlassModal/GlassModal.tsx","../src/primitives/organisms/GlassDashboard/GlassDashboard.tsx","../src/primitives/organisms/GlassCodeEditor/GlassCodeEditor.tsx","../src/primitives/ui/checkbox.tsx","../src/primitives/ui/radio-group.tsx","../src/primitives/ui/slider.tsx","../src/primitives/ui/accordion.tsx","../src/primitives/three/index.ts","../src/primitives/ambient/NebulaStarsLayer.tsx","../src/primitives/ambient/ThemedAmbientLayer.tsx","../src/primitives/environment/index.ts"],"names":["Accordion","AccordionContent","AccordionItem","AccordionTrigger","Checkbox","RadioGroup","RadioGroupItem","Slider","React","animate","useId","jsx","isIndeterminate","useMemo","motion","jsxs","cva","useEffect","useRef","useCallback","React4","Fragment","React5","GlassCheckbox","AnimatePresence","AlertCircle","React6","getState","INDICATOR_NAME","BUBBLE_INPUT_NAME","createContextScope","React22","Primitive","useComposedRefs","composeEventHandlers","Root","Item","React7","GlassRadioGroup","Root2","GlassRadioGroupItem","Item2","ARROW_KEYS","value","React10","TRIGGER_NAME","Trigger","Content","Collection","useCollection","createCollectionScope","ITEM_NAME","open","CONTENT_NAME","Trigger2","Content2","React13","StreamingText","React14","CodeBlock","sizeMap","React15","GlassAvatar","React17","GlassTextarea","createContext","useContext","StatusDot","React21","statusColors","React23","ChevronDown","Portal","Separator","Label","Check","React24","React25","GlassFileUpload","React26","GlassResizableGroup","GlassResizablePanel","React27","React28","ChevronLeft","React29","Avatar","React30","ChatBubble","React31","MessageThread","ArrowUpIcon","React32","ChatInput","React33","Zap","React35","React36","StarParticle","useReducedMotion"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,kBAAA,GAAA;AAAA,QAAA,CAAA,kBAAA,EAAA;AAAA,EAAA,SAAA,EAAA,MAAAA,UAAAA;AAAA,EAAA,gBAAA,EAAA,MAAAC,iBAAAA;AAAA,EAAA,aAAA,EAAA,MAAAC,cAAAA;AAAA,EAAA,gBAAA,EAAA,MAAAC,iBAAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,QAAA,EAAA,MAAAC,SAAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,UAAA,EAAA,MAAAC,WAAAA;AAAA,EAAA,cAAA,EAAA,MAAAC,eAAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,MAAA,EAAA,MAAAC,OAAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,eAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACKA,IAAM,aAAA,GAA0C;AAAA,EAC9C,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAAA,EACxC,OAAA,EAAS,CAAC,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAAA,EACzC,KAAA,EAAO,CAAC,SAAA,EAAW,SAAA,EAAW,SAAS;AACzC,CAAA;AAGA,IAAM,aAAA,GAAwC;AAAA,EAC5C,QAAA,EAAU,EAAA;AAAA,EACV,MAAA,EAAQ,EAAA;AAAA,EACR,OAAA,EAAS,EAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAMA,SAAS,iBAAiB,GAAA,EAAuB;AAE/C,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAGrC,EAAA,MAAM,IAAI,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC/C,EAAA,MAAM,IAAI,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC/C,EAAA,MAAM,IAAI,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAG/C,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AAE3E,EAAA,MAAM,IAAA,GAAO,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAC/C,EAAA,MAAM,MAAA,GAAS,CAAA,CAAA,EAAI,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA;AACnE,EAAA,MAAM,OAAA,GAAU,CAAA,CAAA,EAAI,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA;AAEpE,EAAA,OAAO,CAAC,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAC/B;AAGA,IAAM,QAAN,MAAY;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EAEA,YACE,MAAA,EACA,OAAA,EACA,GACA,CAAA,EACA,KAAA,EACA,OACA,KAAA,EACA;AACA,IAAA,IAAA,CAAK,QAAQ,MAAA,CAAO,KAAA;AACpB,IAAA,IAAA,CAAK,SAAS,MAAA,CAAO,MAAA;AACrB,IAAA,IAAA,CAAK,GAAA,GAAM,OAAA;AACX,IAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,IAAA,IAAA,CAAK,CAAA,GAAI,CAAA;AACT,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,cAAA,CAAe,GAAA,EAAK,GAAG,CAAA,GAAI,KAAA;AAC7C,IAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,MAAA,EAAO,GAAI,GAAA;AAChC,IAAA,IAAA,CAAK,OAAA,GAAU,GAAA;AACf,IAAA,IAAA,CAAK,cAAA,GAAiB,CAAA;AACtB,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,OAAA,EAAS,KAAK,cAAc,CAAA;AACpE,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,IAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AACf,IAAA,IAAA,CAAK,WAAA,GAAc,KAAK,MAAA,EAAO,GAAI,KAAK,IAAA,CAAK,KAAA,GAAQ,KAAK,MAAA,IAAU,IAAA;AACpE,IAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,IAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AACjB,IAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA,EACnB;AAAA,EAEA,cAAA,CAAe,KAAa,GAAA,EAAa;AACvC,IAAA,OAAO,IAAA,CAAK,MAAA,EAAO,IAAK,GAAA,GAAM,GAAA,CAAA,GAAO,GAAA;AAAA,EACvC;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,cAAA,GAAiB,GAAA,GAAM,KAAK,IAAA,GAAO,GAAA;AAC7D,IAAA,IAAA,CAAK,GAAA,CAAI,YAAY,IAAA,CAAK,KAAA;AAC1B,IAAA,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,CAAA,GAAI,YAAA,EAAc,IAAA,CAAK,CAAA,GAAI,YAAA,EAAc,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,IAAI,CAAA;AAAA,EACtF;AAAA,EAEA,MAAA,GAAS;AACP,IAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AAEd,IAAA,IAAI,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,KAAA,EAAO;AAC9B,MAAA,IAAA,CAAK,WAAW,IAAA,CAAK,WAAA;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,OAAA,EAAS;AAC7B,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,IACnB;AAEA,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,IACf,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,QAAA;AAAA,IACpB;AAEA,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ;AAAA,EAEA,SAAA,GAAY;AACV,IAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AACjB,IAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AAEf,IAAA,IAAI,IAAA,CAAK,QAAQ,CAAA,EAAG;AAClB,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,MAAA;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,IAAA,IAAQ,GAAA;AAAA,IACf;AAEA,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ;AAAA,EAEA,OAAA,GAAU;AACR,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,OAAA,EAAS;AAC7B,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,IACnB,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,OAAA,EAAS;AACpC,MAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA,IACnB;AAEA,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAAA,IACpB;AAAA,EACF;AACF,CAAA;AAgBA,IAAM,WAAA,GAAoBC,MAAA,CAAA,UAAA;AAAA,EACxB,CACE;AAAA,IACE,GAAA,GAAM,CAAA;AAAA,IACN,KAAA,GAAQ,EAAA;AAAA,IACR,MAAA,GAAS,CAAC,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAAA,IACzC,OAAA,GAAU,SAAA;AAAA,IACV,OAAA,GAAU,KAAA;AAAA,IACV,MAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,YAAA,GAAqBA,cAAuB,IAAI,CAAA;AACtD,IAAA,MAAM,SAAA,GAAkBA,cAA0B,IAAI,CAAA;AACtD,IAAA,MAAM,SAAA,GAAkBA,MAAA,CAAA,MAAA,CAAgB,EAAE,CAAA;AAC1C,IAAA,MAAM,YAAA,GAAqBA,cAAsB,IAAI,CAAA;AACrD,IAAA,MAAM,eAAA,GAAwBA,MAAA,CAAA,MAAA,CAAe,WAAA,CAAY,GAAA,EAAK,CAAA;AAC9D,IAAA,MAAM,eAAe,GAAA,GAAO,EAAA;AAE5B,IAAA,MAAM,aAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GACd,OAAO,UAAA,CAAW,kCAAkC,EAAE,OAAA,GACtD,KAAA;AAGN,IAAA,MAAM,cAAA,GAAuBA,eAAQ,MAAM;AACzC,MAAA,IAAI,MAAA,KAAW,cAAc,UAAA,EAAY;AACvC,QAAA,OAAO,iBAAiB,UAAU,CAAA;AAAA,MACpC;AACA,MAAA,IAAI,MAAA,IAAU,aAAA,CAAc,MAAM,CAAA,EAAG;AACnC,QAAA,OAAO,cAAc,MAAM,CAAA;AAAA,MAC7B;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,CAAC,MAAA,EAAQ,UAAA,EAAY,MAAM,CAAC,CAAA;AAG/B,IAAA,MAAM,aAAA,GAAsBA,eAAQ,MAAM;AACxC,MAAA,IAAI,MAAA,IAAU,aAAA,CAAc,MAAM,CAAA,KAAM,MAAA,EAAW;AACjD,QAAA,OAAO,cAAc,MAAM,CAAA;AAAA,MAC7B;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAElB,IAAA,MAAM,WAAA,GAAc,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,aAAa,CAAC,CAAA,GAAI,IAAA;AACpF,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,EAAA,EAAI,GAAG,CAAC,CAAA;AAE/C,IAAA,MAAM,mBAAA,GAA4BA,MAAA,CAAA,WAAA;AAAA,MAChC,CAAC,CAAA,EAAW,CAAA,EAAW,KAAA,EAAe,MAAA,KAAmB;AACvD,QAAA,MAAM,EAAA,GAAK,IAAI,KAAA,GAAQ,CAAA;AACvB,QAAA,MAAM,EAAA,GAAK,IAAI,MAAA,GAAS,CAAA;AACxB,QAAA,OAAO,IAAA,CAAK,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,KAAK,EAAE,CAAA;AAAA,MACpC,CAAA;AAAA,MACA;AAAC,KACH;AAEA,IAAA,MAAM,uBAAA,GAAgCA,MAAA,CAAA,WAAA,CAAY,CAAC,CAAA,EAAW,GAAW,MAAA,KAAmB;AAC1F,MAAA,MAAM,EAAA,GAAK,CAAA;AACX,MAAA,MAAM,KAAK,MAAA,GAAS,CAAA;AACpB,MAAA,OAAO,IAAA,CAAK,IAAA,CAAK,EAAA,GAAK,EAAA,GAAK,KAAK,EAAE,CAAA;AAAA,IACpC,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,YAAA,GAAqBA,mBAAY,MAAM;AAC3C,MAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,MAAA,MAAM,GAAA,GAAM,MAAA,EAAQ,UAAA,CAAW,IAAI,CAAA;AACnC,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,GAAA,EAAK;AAErB,MAAA,SAAA,CAAU,UAAU,EAAC;AAErB,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,KAAA,EAAO,KAAK,SAAA,EAAW;AAChD,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,SAAA,EAAW;AACjD,UAAA,MAAM,KAAA,GAAQ,eAAe,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,cAAA,CAAe,MAAM,CAAC,CAAA;AAC9E,UAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,UAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,YAAA,KAAA,GAAQ,aAAA,GAAgB,IAAI,mBAAA,CAAoB,CAAA,EAAG,GAAG,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,UACnF,CAAA,MAAO;AACL,YAAA,KAAA,GAAQ,gBAAgB,CAAA,GAAI,uBAAA,CAAwB,CAAA,EAAG,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,UACzE;AAEA,UAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,IAAI,KAAA,CAAM,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,QAChF;AAAA,MACF;AAAA,IACF,CAAA,EAAG;AAAA,MACD,SAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,UAAA,GAAmBA,mBAAY,MAAM;AACzC,MAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,MAAA,MAAM,GAAA,GAAM,MAAA,EAAQ,UAAA,CAAW,IAAI,CAAA;AACnC,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,GAAA,EAAK;AAErB,MAAA,GAAA,CAAI,UAAU,CAAA,EAAG,CAAA,EAAG,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAC/C,MAAA,KAAA,MAAW,KAAA,IAAS,UAAU,OAAA,EAAS;AACrC,QAAA,KAAA,CAAM,MAAA,GAAS,IAAA;AACf,QAAA,KAAA,CAAM,SAAA,GAAY,KAAA;AAClB,QAAA,KAAA,CAAM,SAAA,GAAY,KAAA;AAClB,QAAA,KAAA,CAAM,OAAO,KAAA,CAAM,OAAA;AACnB,QAAA,KAAA,CAAM,IAAA,EAAK;AAAA,MACb;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,YAAA,GAAqBA,mBAAY,MAAM;AAC3C,MAAA,MAAM,YAAY,YAAA,CAAa,OAAA;AAC/B,MAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,MAAA,MAAM,GAAA,GAAM,MAAA,EAAQ,UAAA,CAAW,IAAI,CAAA;AACnC,MAAA,IAAI,CAAC,SAAA,IAAa,CAAC,MAAA,IAAU,CAAC,GAAA,EAAK;AAEnC,MAAA,MAAM,IAAA,GAAO,UAAU,qBAAA,EAAsB;AAC7C,MAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,IAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AAE3C,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AACnC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAErC,MAAA,MAAM,GAAA,GAAM,OAAO,gBAAA,IAAoB,CAAA;AACvC,MAAA,MAAA,CAAO,QAAQ,KAAA,GAAQ,GAAA;AACvB,MAAA,MAAA,CAAO,SAAS,MAAA,GAAS,GAAA;AACzB,MAAA,MAAA,CAAO,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA;AAC7B,MAAA,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA;AAE/B,MAAA,GAAA,CAAI,aAAa,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AACjC,MAAA,GAAA,CAAI,KAAA,CAAM,KAAK,GAAG,CAAA;AAElB,MAAA,YAAA,EAAa;AACb,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,UAAA,EAAW;AAAA,MACb;AAAA,IACF,CAAA,EAAG,CAAC,YAAA,EAAc,aAAA,EAAe,UAAU,CAAC,CAAA;AAE5C,IAAA,MAAM,eAAA,GAAwBA,MAAA,CAAA,WAAA;AAAA,MAC5B,CAAC,IAAA,KAAiC;AAChC,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,oBAAA,CAAqB,aAAa,OAAO,CAAA;AAAA,QAC3C;AAEA,QAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,QAAA,MAAM,GAAA,GAAM,MAAA,EAAQ,UAAA,CAAW,IAAI,CAAA;AACnC,QAAA,IAAI,CAAC,MAAA,IAAU,CAAC,GAAA,EAAK;AAErB,QAAA,MAAMC,WAAU,MAAM;AACpB,UAAA,YAAA,CAAa,OAAA,GAAU,sBAAsBA,QAAO,CAAA;AAEpD,UAAA,MAAM,OAAA,GAAU,YAAY,GAAA,EAAI;AAChC,UAAA,MAAM,UAAA,GAAa,UAAU,eAAA,CAAgB,OAAA;AAE7C,UAAA,IAAI,aAAa,YAAA,EAAc;AAE/B,UAAA,eAAA,CAAgB,OAAA,GAAU,UAAW,UAAA,GAAa,YAAA;AAElD,UAAA,GAAA,CAAI,UAAU,CAAA,EAAG,CAAA,EAAG,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAE/C,UAAA,IAAI,OAAA,GAAU,IAAA;AACd,UAAA,KAAA,MAAW,KAAA,IAAS,UAAU,OAAA,EAAS;AACrC,YAAA,KAAA,CAAM,IAAI,CAAA,EAAE;AACZ,YAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,OAAA,GAAU,KAAA;AAAA,UAC/B;AAEA,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,IAAI,aAAa,OAAA,EAAS;AACxB,cAAA,oBAAA,CAAqB,aAAa,OAAO,CAAA;AACzC,cAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,YACzB;AAAA,UACF;AAAA,QACF,CAAA;AAEA,QAAAA,QAAAA,EAAQ;AAAA,MACV,CAAA;AAAA,MACA,CAAC,eAAe,YAAY;AAAA,KAC9B;AAEA,IAAMD,iBAAU,MAAM;AACpB,MAAA,YAAA,EAAa;AAEb,MAAA,MAAM,EAAA,GAAK,IAAI,cAAA,CAAe,MAAM;AAClC,QAAA,qBAAA,CAAsB,YAAY,CAAA;AAAA,MACpC,CAAC,CAAA;AAED,MAAA,IAAI,aAAa,OAAA,EAAS;AACxB,QAAA,EAAA,CAAG,OAAA,CAAQ,aAAa,OAAO,CAAA;AAAA,MACjC;AAEA,MAAA,OAAO,MAAM;AACX,QAAA,EAAA,CAAG,UAAA,EAAW;AACd,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,oBAAA,CAAqB,aAAa,OAAO,CAAA;AAAA,QAC3C;AAAA,MACF,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,IAAMA,iBAAU,MAAM;AAEpB,MAAA,IAAI,WAAW,MAAA,EAAW;AAE1B,MAAA,MAAM,MAAA,GAAS,aAAa,OAAA,EAAS,aAAA;AACrC,MAAA,IAAI,CAAC,MAAA,EAAQ;AACb,MAAA,IAAI,aAAA,EAAe;AAEnB,MAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB,QAAQ,CAAA;AAClD,MAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB,WAAW,CAAA;AAErD,MAAA,MAAA,CAAO,gBAAA,CAAiB,cAAc,WAAW,CAAA;AACjD,MAAA,MAAA,CAAO,gBAAA,CAAiB,cAAc,WAAW,CAAA;AAEjD,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAA,CAAO,iBAAiB,OAAA,EAAS,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAC/D,QAAA,MAAA,CAAO,iBAAiB,MAAA,EAAQ,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,MAChE;AAEA,MAAA,OAAO,MAAM;AACX,QAAA,MAAA,CAAO,mBAAA,CAAoB,cAAc,WAAW,CAAA;AACpD,QAAA,MAAA,CAAO,mBAAA,CAAoB,cAAc,WAAW,CAAA;AACpD,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,MAAA,CAAO,oBAAoB,OAAA,EAAS,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAClE,UAAA,MAAA,CAAO,oBAAoB,MAAA,EAAQ,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,QACnE;AAAA,MACF,CAAA;AAAA,IACF,GAAG,CAAC,MAAA,EAAQ,eAAA,EAAiB,OAAA,EAAS,aAAa,CAAC,CAAA;AAGpD,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,WAAW,MAAA,EAAW;AAC1B,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA,EAAG,CAAC,MAAA,EAAQ,eAAe,CAAC,CAAA;AAE5B,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,CAAC,IAAA,KAAS;AACb,UAAC,aAA+D,OAAA,GAAU,IAAA;AAC1E,UAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,YAAA,GAAA,CAAI,IAAI,CAAA;AAAA,UACV,WAAW,GAAA,EAAK;AACd,YAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,UAChB;AAAA,QACF,CAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,CAAA;AAAA,UACP,aAAA,EAAe,MAAA;AAAA,UACf,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ,MAAA;AAAA,UACR,QAAA,EAAU;AAAA,SACZ;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,SAAA;AAAA,YACL,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,OAAA;AAAA,cACT,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ;AAAA;AACV;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;ACjb1B,IAAM,iBAAA,GAAoB,GAAA;AAAA,EACxB,6WAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gFAAA;AAAA,QACT,KAAA,EACE,6GAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,uBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,iBAAA,GAAoB,IAAI,WAAA,EAAa;AAAA,EACzC,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,EAAA,EAAI,aAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAoCM,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,UAAUE,KAAAA,EAAM;AACtB,EAAA,MAAM,UAAU,EAAA,IAAM,OAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAG7C,EAAA,MAAM,YAAA,GAAe,QAAQ,OAAA,GAAU,OAAA;AAEvC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,IAAA,EAAM,CAAA,EAAG,kBAAkB,CAAA,EAE/D,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCC,GAAAA;AAAA,MAAC,MAAA,CAAO,KAAA;AAAA,MAAP;AAAA,QACC,OAAA,EAAS,OAAA;AAAA,QACT,SAAA,EAAU,4FAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,QAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAE3B,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAIF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EAEZ,QAAA,EAAA;AAAA,MAAA,QAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEACZ,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,sBAIFA,GAAAA;AAAA,QAAC,MAAA,CAAO,KAAA;AAAA,QAAP;AAAA,UACC,EAAA,EAAI,OAAA;AAAA,UACJ,SAAA,EAAW,EAAA;AAAA,YACT,iBAAA,CAAkB,EAAE,OAAA,EAAS,YAAA,EAAc,MAAM,CAAA;AAAA,YACjD,QAAA,IAAY,OAAA;AAAA,YACZ,SAAA,IAAa,OAAA;AAAA,YACb;AAAA,WACF;AAAA,UACA,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,UAEN,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,IAAA,KAAS,EAAC;AAAA,UACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,UAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,UACxC,YACE,aAAA,GACI;AAAA,YACE,KAAA,EAAO,IAAA;AAAA,YACP,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,cAE9B,EAAC;AAAA,UAEN,GAAG;AAAA;AAAA,OACN;AAAA,sBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACZ,kCACCA,GAAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,KAAQ,EAAC;AAAA,UACvD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,UAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,UAE5B,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,0BAAA,EAA2B;AAAA;AAAA,UAGpD,SAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA;AAAA,MAAC,MAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,aAAA;AAAA,QACJ,SAAA,EAAU,+BAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAEvC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAID,KAAA,oBACC,IAAA;AAAA,MAAC,MAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,kDAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;ACzKA,IAAM,OAAA,GAAU;AAAA,EACd,EAAA,EAAI,KAAA;AAAA,EACJ,OAAA,EAAS,KAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,iBAAiB,KAAA,EAAoD;AAC5E,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,MAAA;AACH,MAAA,OAAO,0CAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,0CAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,0CAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,mDAAA;AAAA;AAEb;AAEA,SAAS,cAAc,KAAA,EAAoD;AACzE,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,MAAA;AACH,MAAA,OAAO,6DAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,+DAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,6DAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,8DAAA;AAAA;AAEb;AAGA,SAAS,mBAAmB,KAAA,EAAoD;AAC9E,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,MAAA;AACH,MAAA,OAAO,8BAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,+BAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,8BAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,8BAAA;AAAA;AAEb;AAEA,IAAM,SAAA,GACJ,sHAAA;AAEK,SAAS,gBAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,IAAA,GAAO,SAAA;AAAA,EACP,SAAA,GAAY,KAAA;AAAA,EACZ,MAAA,GAAS,GAAA;AAAA,EACT,iBAAA,GAAoB,GAAA;AAAA,EACpB,iBAAA,GAAoB,KAAA;AAAA,EACpB,KAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,IAAA,GAAO,KAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAMC,gBAAAA,GAAkB,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA;AACzD,EAAA,MAAM,YAAA,GAAeC,OAAAA;AAAA,IACnB,MAAOD,gBAAAA,GAAkB,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAM,CAAC,CAAA;AAAA,IAC5D,CAACA,kBAAiB,KAAK;AAAA,GACzB;AAEA,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,GAAG,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,iBAAiB,KAAK,CAAA;AACvC,EAAA,MAAM,aAAa,IAAA,GAAO,aAAA,CAAc,KAAK,CAAA,GAAI,mBAAmB,KAAK,CAAA;AAEzE,EAAA,MAAM,WAAW,aAAA,KAAkB,QAAA;AAEnC,EAAA,MAAM,+BACJD,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,8CAAA;AAAA,QACA,QAAQ,IAAI;AAAA,OACd;AAAA,MACA,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,qBAAA;AAAA,QACZ,MAAA,EAAQ,qCAAA;AAAA,QACR,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAAC,gBAAAA;AAAA;AAAA,wBAECD,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,YAC9D,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,KAAA;AAAA,cACP,UAAA,EAAY,QAAA;AAAA,cACZ,SAAA,EAAW;AAAA,aACb;AAAA,YACA,OAAA,EACE,aAAA,GACI,EAAE,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA,EAAE,GACzB,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,YAEnB,YACE,aAAA,GACI;AAAA,cACE,QAAA,EAAU,GAAA;AAAA,cACV,MAAA,EAAQ,QAAA;AAAA,cACR,IAAA,EAAM;AAAA,aACR,GACA;AAAA;AAAA;AAER;AAAA;AAAA,wBAGAH,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAW,GAAG,qBAAqB,CAAA;AAAA,YACnC,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,QAAA;AAAA,cACZ,SAAA,EAAW,UAAA;AAAA,cACX,UAAA,EAAY,sBAAA;AAAA,cACZ,GAAI,UACA,EAAE,eAAA,EAAiB,WAAW,cAAA,EAAgB,WAAA,KAC9C;AAAC,aACP;AAAA,YACA,OAAA,EAAS,aAAA,GAAgB,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,EAAE,KAAA,EAAO,CAAA,EAAG,YAAA,GAAe,GAAG,CAAA,CAAA,CAAA,EAAI;AAAA,YAC7E,SAAS,EAAE,KAAA,EAAO,CAAA,EAAG,YAAA,GAAe,GAAG,CAAA,CAAA,CAAA,EAAI;AAAA,YAC3C,UAAA,EAAY;AAAA,cACV,QAAA,EAAU,aAAA,GAAgB,iBAAA,GAAoB,GAAA,GAAO,CAAA;AAAA,cACrD,IAAA,EAAM;AAAA;AACR;AAAA;AACF;AAAA;AAAA,GAEJ;AAGF,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAeH,mBAAkB,MAAA,GAAY,cAAA;AAAA,MAC7C,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,cAAY,KAAA,KAAUA,gBAAAA,GAAkB,YAAY,CAAA,EAAG,cAAc,GAAG,MAAM,CAAA,CAAA,CAAA;AAAA,MAC7E,GAAG,KAAA;AAAA,MAGH,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,CAAC,QAAA,oBACTG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0CAAA,EACb,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UACC,aAAa,CAACC,gBAAAA,oBACbG,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,4CAAA,EACb,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YACA;AAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAID,QAAA,mBACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAU,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,UACrC,aAAa,CAACC,gBAAAA,oBACbG,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,qDAAA,EACb,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YACA;AAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA,mBAEAA,IAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,YAAA;AAAA,UAEA,SAAA,IAAa,CAACH,gBAAAA,IAAmB,CAAC,yBACjCD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,kBAAAI,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,4CAAA,EACb,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YACA;AAAA,WAAA,EACH,CAAA,EACF;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ;AC3NA,IAAM,iBAAA,GAAoBC,GAAAA;AAAA,EACxB,kHAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA;AAAA,QAEP,EAAA,EAAI,oFAAA;AAAA,QACJ,MAAA,EAAQ,wEAAA;AAAA,QACR,UAAA,EAAY,oDAAA;AAAA,QACZ,WAAA,EACE,oFAAA;AAAA,QACF,IAAA,EAAM,0DAAA;AAAA,QACN,KAAA,EAAO,8CAAA;AAAA;AAAA,QAEP,IAAA,EAAM,wEAAA;AAAA,QACN,QAAA,EAAU,oFAAA;AAAA,QACV,KAAA,EAAO,oDAAA;AAAA,QACP,KAAA,EAAO,uDAAA;AAAA,QACP,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,OAAA,EAAS,qBAAA;AAAA,QACT,EAAA,EAAI;AAAA,OACN;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,mBAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,OAAA,GAAU;AAAA,EACd,EAAA,EAAI,GAAA;AAAA,EACJ,MAAA,EAAQ,KAAA;AAAA,EACR,UAAA,EAAY,MAAA;AAAA,EACZ,WAAA,EAAa,MAAA;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,KAAA,EAAO,IAAA;AAAA,EACP,IAAA,EAAM,GAAA;AAAA,EACN,QAAA,EAAU,MAAA;AAAA,EACV,KAAA,EAAO,GAAA;AAAA,EACP,KAAA,EAAO,MAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAoCO,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,YAAA,GAAe,KAAA;AAAA,EACf,iBAAA,GAAoB,KAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAG7C,EAAA,MAAM,WAAA,GAAc,QAAQ,OAA+B,CAAA;AAC3D,EAAA,MAAM,cAAc,IAAA,IAAS,WAAA,oBAAeL,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,SAAA,EAAU,CAAA;AAG7E,EAAA,MAAM,iBAAiB,OAAO,KAAA,KAAU,QAAA,GAAW,YAAA,CAAa,KAAK,CAAA,GAAI,KAAA;AACzE,EAAA,MAAM,WAAA,GAAc,GAAG,MAAA,IAAU,EAAE,GAAG,cAAc,CAAA,EAAG,UAAU,EAAE,CAAA,CAAA;AAEnE,EAAA,uBACEI,IAAAA;AAAA,IAACD,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB;AAAA,UAChB,OAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA,EAAM,gBAAgB,IAAA,GAAO;AAAA,SAC9B,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,GAAA,KAAQ,EAAC;AAAA,MACvD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,MAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,MAC5B,YACE,aAAA,GACI;AAAA,QACE,KAAA,EAAO,IAAA;AAAA,QACP,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,UAE9B,EAAC;AAAA,MAEN,GAAG,KAAA;AAAA,MAGH,QAAA,EAAA;AAAA,QAAA,QAAA,IAAY,+BACXH,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,eAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,GAAA,KAAQ,EAAC;AAAA,YACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,YACjC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,YAEvC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAIFH,GAAAA;AAAA,UAACG,MAAAA,CAAO,IAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,4BAAA;AAAA,YACV,OAAA,EAAS,iBAAiB,YAAA,GAAe,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE,GAAI,EAAC;AAAA,YACjE,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,YAC5B,YAAY,EAAE,QAAA,EAAU,KAAK,KAAA,EAAO,QAAA,GAAW,MAAM,GAAA,EAAI;AAAA,YAExD,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AC/JA,IAAM,iBAAA,GAAoBE,GAAAA;AAAA,EACxB,yKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,sCAAA;AAAA,QACT,KAAA,EAAO,6CAAA;AAAA,QACP,MAAA,EAAQ,wCAAA;AAAA,QACR,OAAA,EAAS,8CAAA;AAAA,QACT,OAAA,EAAS,uCAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,OAAA,EAAS,SAAA;AAAA,QACT,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,EAAA;AAAA,QACN,GAAA,EAAK,oCAAA;AAAA,QACL,MAAA,EAAQ,oCAAA;AAAA,QACR,IAAA,EAAM;AAAA,OACR;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,EAAA;AAAA,QACN,KAAA,EAAO,gCAAA;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW,MAAA;AAAA,MACX,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAkCO,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,eAAA,GAAkB,KAAA;AAAA,EAClB,iBAAA,GAAoB,KAAA;AAAA,EACpB,OAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAG7C,EAAA,MAAM,gBAAA,GAAmB,UAAU,QAAA,GAAW,WAAA;AAE9C,EAAA,MAAM,aAAA,GAAgB,EAAA;AAAA,IACpB,iBAAA,CAAkB;AAAA,MAChB,OAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,gBAAgB,SAAA,GAAY,MAAA;AAAA,MACvC,WAAA,EAAa,gBAAgB,gBAAA,GAAmB;AAAA,KACjD,CAAA;AAAA,IACD,mBAAmB,aAAA,IAAiB,eAAA;AAAA,IACpC;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEL,GAAAA;AAAA,MAACG,MAAAA,CAAO,MAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAW,aAAA;AAAA,QACX,OAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,IAAA,EAAK,QAAA;AAAA,QACL,UAAA,EACE,iBAAiB,KAAA,GACb;AAAA,UACE,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,oCAAA;AAAA,UACR,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,SAC9B,GACA,aAAA,IAAiB,gBAAA,KAAqB,MAAA,GACpC;AAAA,UACE,KAAA,EAAO,IAAA;AAAA,UACP,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,YAE9B,EAAC;AAAA,QAET,UACE,aAAA,GACI;AAAA,UACE,KAAA,EAAO,IAAA;AAAA,UACP,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,YAE9B,EAAC;AAAA,QAEP,UAAA,EACE,iBAAiB,KAAA,GACb;AAAA,UACE,KAAA,EAAO,IAAA;AAAA,UACP,MAAA,EAAQ,mCAAA;AAAA,UACR,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,YAE9B,EAAC;AAAA,QAEP,OAAA,EACE,iBAAiB,eAAA,GACb;AAAA,UACE,KAAA,EAAO,CAAC,CAAA,EAAG,IAAA,EAAM,CAAC,CAAA;AAAA,UAClB,OAAA,EAAS,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC;AAAA,YAErB,EAAC;AAAA,QAEP,UAAA,EACE,iBAAiB,eAAA,GACb;AAAA,UACE,QAAA,EAAU,CAAA;AAAA,UACV,MAAA,EAAQ,QAAA;AAAA,UACR,IAAA,EAAM;AAAA,YAER,EAAC;AAAA,QAIP,QAAA,kBAAAH,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,kCAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,GAAA,KAAQ,EAAC;AAAA,YACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,YACjC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,YAE3B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAACG,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,aAAA;AAAA,MACX,YAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EACE,iBAAiB,KAAA,GACb;AAAA,QACE,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ,oCAAA;AAAA,QACR,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,OAC9B,GACA,aAAA,IAAiB,gBAAA,KAAqB,MAAA,GACpC;AAAA,QACE,KAAA,EAAO,IAAA;AAAA,QACP,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,UAE9B,EAAC;AAAA,MAET,OAAA,EACE,iBAAiB,eAAA,GACb;AAAA,QACE,KAAA,EAAO,CAAC,CAAA,EAAG,IAAA,EAAM,CAAC,CAAA;AAAA,QAClB,OAAA,EAAS,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC;AAAA,UAErB,EAAC;AAAA,MAEP,UAAA,EACE,iBAAiB,eAAA,GACb;AAAA,QACE,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAM;AAAA,UAER,EAAC;AAAA,MAEN,GAAG,KAAA;AAAA,MAGJ,QAAA,kBAAAH,GAAAA;AAAA,QAACG,MAAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,SAAA,EAAU,kCAAA;AAAA,UACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,GAAA,KAAQ,EAAC;AAAA,UACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,UACjC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,UAE3B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AC5NA,SAAS,gBAAA,GAA4B;AACnC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAI,QAAA,CAAS,MAAM,sBAAsB,CAAA;AAEnE,EAAAG,UAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA;AACvE,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B,UAAA,CAAW,EAAE,OAAO,CAAA;AAEhE,IAAA,UAAA,CAAW,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAC7C,IAAA,OAAO,MAAM,UAAA,CAAW,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AAAA,EAC/D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,OAAA;AACT;AAwBA,IAAM,eAAA,GAAkB,EAAA;AACxB,IAAM,aAAA,GAAgB,GAAA;AACtB,IAAM,SAAA,GAAY,GAAA;AAClB,IAAM,WAAA,GAAc,GAAA;AACpB,IAAM,cAAA,GAAiB,CAAA;AAEvB,IAAM,YAAA,GAAe,0BAAA;AACrB,IAAM,WAAA,GAAc,kBAAA;AACpB,IAAM,mBAAA,GAAsB,oCAAA;AAErB,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,cAAA,GAAiB,GAAA;AAAA,EACjB,UAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAA0B;AACxB,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,CAAwB,EAAE,CAAA;AACpD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,CAAC,CAAA;AAC1D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,iBAAA,GAAoBC,OAAO,KAAK,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgBA,OAAO,CAAC,CAAA;AAE9B,EAAA,MAAM,QAAA,GAAWL,QAAQ,MAAM;AAC7B,IAAA,OAAO,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAAI,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,mBAAA,CAAoB,CAAC,CAAA;AACrB,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,iBAAA,CAAkB,OAAA,GAAU,KAAA;AAC5B,IAAA,aAAA,CAAc,OAAA,GAAU,CAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,IAAa,UAAA,IAAc,gBAAA,IAAoB,SAAS,MAAA,EAAQ;AAErE,IAAA,MAAM,QAAA,GAAW,aAAA,GACb,GAAA,GAAO,cAAA,GACP,eAAA;AAEJ,IAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,MAAA,mBAAA,CAAoB,CAAC,IAAA,KAAS,IAAA,GAAO,CAAC,CAAA;AAAA,IACxC,GAAG,QAAQ,CAAA;AAEX,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,SAAA,EAAW,gBAAA,EAAkB,SAAS,MAAA,EAAQ,UAAA,EAAY,aAAA,EAAe,cAAc,CAAC,CAAA;AAG5F,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,gBAAA,KAAqB,CAAA,IAAK,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAEjD,MAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,cAAc,CAAA;AACvD,MAAA,QAAA,CAAS;AAAA,QACP;AAAA,UACE,IAAI,aAAA,CAAc,OAAA,EAAA;AAAA,UAClB,KAAA,EAAO,cAAA;AAAA,UACP,KAAA,EAAO,UAAA;AAAA,UACP,aAAA,EAAe;AAAA;AACjB,OACD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,CAAC,SAAA,KAAc;AACtB,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,SAAS,CAAA;AAC9B,MAAA,IAAI,iBAAA,GAAoB,CAAA;AAGxB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,QAAA,MAAM,IAAA,GAAO,SAAS,CAAC,CAAA;AACvB,QAAA,MAAM,iBAAiB,CAAA,GAAI,cAAA;AAC3B,QAAA,MAAM,iBAAiB,IAAA,CAAK,GAAA;AAAA,UAC1B,CAAA;AAAA,UACA,KAAK,GAAA,CAAI,gBAAA,GAAmB,cAAA,EAAgB,IAAA,CAAK,MAAM,MAAM;AAAA,SAC/D;AACA,QAAA,QAAA,CAAS,CAAC,CAAA,GAAI;AAAA,UACZ,GAAG,IAAA;AAAA,UACH,aAAA,EAAe,cAAA;AAAA,UACf,KAAA,EAAO,cAAA,GAAiB,CAAA,GAAI,SAAA,GAAY,IAAA,CAAK;AAAA,SAC/C;AACA,QAAA,iBAAA,IAAqB,KAAK,KAAA,CAAM,MAAA;AAAA,MAClC;AAGA,MAAA,IAAI,gBAAA,IAAoB,iBAAA,IAAqB,gBAAA,GAAmB,QAAA,CAAS,MAAA,EAAQ;AAC/E,QAAA,MAAM,iBAAA,GAAoB,iBAAA;AAC1B,QAAA,MAAM,eAAe,QAAA,CAAS,KAAA;AAAA,UAC5B,iBAAA;AAAA,UACA,iBAAA,GAAoB;AAAA,SACtB;AAEA,QAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAAG;AAC3B,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAI,aAAA,CAAc,OAAA,EAAA;AAAA,YAClB,KAAA,EAAO,YAAA;AAAA,YACP,KAAA,EAAO,UAAA;AAAA,YACP,aAAA,EAAe;AAAA,WAChB,CAAA;AAGD,UAAA,IAAI,QAAA,CAAS,SAAS,QAAA,EAAU;AAC9B,YAAA,QAAA,CAAS,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAA,EAAG,OAAO,SAAA,EAAU;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AAEA,MAAA,OAAO,QAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,gBAAA,EAAkB,QAAA,EAAU,QAAQ,CAAC,CAAA;AAGzC,EAAA,MAAM,kBAAA,GAAqBE,WAAAA,CAAY,CAAC,MAAA,KAAmB;AACzD,IAAA,QAAA,CAAS,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAC,CAAA;AAAA,EAC9D,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAF,UAAU,MAAM;AACd,IAAA,IAAI,oBAAoB,QAAA,CAAS,MAAA,IAAU,SAAS,MAAA,GAAS,CAAA,IAAK,CAAC,UAAA,EAAY;AAC7E,MAAA,MAAM,WAAA,GAAc,WAAW,MAAM;AACnC,QAAA,aAAA,CAAc,IAAI,CAAA;AAElB,QAAA,QAAA;AAAA,UAAS,CAAC,IAAA,KACR,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,EAAM,KAAA,EAAO,SAAA,EAAmB,CAAE;AAAA,SAC7D;AAAA,MACF,GAAG,SAAS,CAAA;AAEZ,MAAA,OAAO,MAAM,aAAa,WAAW,CAAA;AAAA,IACvC;AAAA,EACF,GAAG,CAAC,gBAAA,EAAkB,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAC,CAAA;AAGlD,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,cAAc,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,CAAC,kBAAkB,OAAA,EAAS;AAClE,MAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,MAAA,UAAA,IAAa;AAAA,IACf;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,KAAA,CAAM,MAAA,EAAQ,UAAU,CAAC,CAAA;AAGzC,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACEN,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,6BAAA;AAAA,UACZ,QAAA,EAAU,MAAA;AAAA,UACV,aAAA,EAAe,QAAA;AAAA,UACf,KAAA,EAAO;AAAA,SACT;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,YAAA,EAAW,gBAAA;AAAA,QAEX,QAAA,kBAAAA,IAAC,eAAA,EAAA,EAAgB,IAAA,EAAK,aACnB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,YACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,YACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,YACnB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,YAC5B,mBAAA,EAAqB,CAAC,UAAA,KAAe;AACnC,cAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,gBAAA,kBAAA,CAAmB,KAAK,EAAE,CAAA;AAAA,cAC5B;AAAA,YACF,CAAA;AAAA,YACA,SAAA,EAAU,cAAA;AAAA,YAET,QAAA,EAAA,IAAA,CAAK,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,aAAa,CAAA,CAAE,KAAK,GAAG;AAAA,WAAA;AAAA,UAZ5C,IAAA,CAAK;AAAA,SAcb,CAAA,EACH;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,sCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,6BAAA;AAAA,QACZ,QAAA,EAAU,MAAA;AAAA,QACV,aAAA,EAAe,QAAA;AAAA,QACf,KAAA,EAAO;AAAA,OACT;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,QAAA;AAAA,MACV,YAAA,EAAW,gBAAA;AAAA,MAEX,QAAA,kBAAAA,IAAC,eAAA,EAAA,EAAgB,IAAA,EAAK,aACnB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UAEC,IAAA;AAAA,UACA,cAAA,EAAgB,MAAM,kBAAA,CAAmB,IAAA,CAAK,EAAE;AAAA,SAAA;AAAA,QAF3C,IAAA,CAAK;AAAA,OAIb,CAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAOA,IAAM,uBAAuB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA;AACF,CAAA,KAAiC;AAC/B,EAAA,uBACEA,GAAAA;AAAA,IAACG,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAU,mBAAA;AAAA,MACV,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,MACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,MACtB,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,CAAA;AAAA,QACT,MAAA,EAAQ,WAAA;AAAA,QACR,UAAA,EAAY;AAAA,OACd;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,WAAA,GAAc,GAAA;AAAA,QACxB,IAAA,EAAM;AAAA,OACR;AAAA,MACA,mBAAA,EAAqB,CAAC,UAAA,KAAe;AACnC,QAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,UAAA,cAAA,EAAe;AAAA,QACjB;AAAA,MACF,CAAA;AAAA,MAEC,eAAK,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,4BACrBH,GAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UAEC,IAAA;AAAA,UACA,UAAA,EAAY,UAAU,IAAA,CAAK,aAAA;AAAA,UAC3B,cAAA,EAAgB,OAAA,KAAY,IAAA,CAAK,aAAA,GAAgB;AAAA,SAAA;AAAA,QAH5C,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA;AAAA,OAK7B;AAAA;AAAA,GACH;AAEJ,CAAA;AAQA,IAAM,cAAc,CAAC,EAAE,IAAA,EAAM,UAAA,EAAY,gBAAe,KAAwB;AAC9E,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAgC,SAAS,CAAA;AAE3E,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,YAAA,CAAa,SAAS,CAAA;AACtB,MAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,QAAA,YAAA,CAAa,SAAS,CAAA;AAAA,MACxB,GAAG,aAAa,CAAA;AAChB,MAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,uBACEN,GAAAA;AAAA,IAACG,MAAAA,CAAO,IAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAU,0BAAA;AAAA,MACV,SAAS,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,EAAG,QAAQ,WAAA,EAAY;AAAA,MACjD,SACE,UAAA,GACI;AAAA,QACE,OAAA,EAAS,CAAA;AAAA,QACT,CAAA,EAAG,CAAA;AAAA,QACH,MAAA,EAAQ,WAAA;AAAA,QACR,UAAA,EACE,cAAA,IAAkB,SAAA,KAAc,SAAA,GAC5B,mBAAA,GACA;AAAA,UAER,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,EAAG,QAAQ,WAAA,EAAY;AAAA,MAE9C,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,QAC3C,CAAA,EAAG,EAAE,QAAA,EAAU,GAAA,EAAK,MAAM,SAAA,EAAU;AAAA,QACpC,MAAA,EAAQ,EAAE,QAAA,EAAU,GAAA,EAAK,MAAM,SAAA,EAAU;AAAA,QACzC,UAAA,EAAY;AAAA,UACV,QAAA,EAAU,SAAA,KAAc,SAAA,GAAY,GAAA,GAAM,aAAA,GAAgB,GAAA;AAAA,UAC1D,IAAA,EAAM;AAAA;AACR,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AC9UA,IAAM,aAAA,GAAgB,UAAA;AAGtB,IAAM,CAAC,qBAAA,EAAuB,mBAAmB,CAAA,GAAI,mBAAmB,aAAa,CAAA;AAqBrF,IAAM,CAAC,oBAAA,EAAsB,kBAAkB,CAAA,GAC7C,sBAA4C,aAAa,CAAA;AAkB3D,SAAS,iBACP,KAAA,EACA;AACA,EAAA,MAAM;AACJ,IAAA,eAAA;IACA,OAAA,EAAS,WAAA;AACT,IAAA,QAAA;AACA,IAAA,cAAA;AACA,IAAA,QAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,eAAA;AACA,IAAA,QAAA;IACA,KAAA,GAAQ,IAAA;;AAER,IAAA;GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,oBAAA,CAAqB;IACjD,IAAA,EAAM,WAAA;AACN,IAAA,WAAA,EAAa,cAAA,IAAkB,KAAA;IAC/B,QAAA,EAAU,eAAA;IACV,MAAA,EAAQ;GACT,CAAA;AACD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUM,gBAAmC,IAAI,CAAA;AAC3E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,gBAAkC,IAAI,CAAA;AAClF,EAAA,MAAM,gCAAA,GAAyCA,cAAO,KAAK,CAAA;AAC3D,EAAA,MAAM,aAAA,GAAgB,UAClB,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA;;AAElC,IAAA;;AAEJ,EAAA,MAAM,OAAA,GAAuC;AAC3C,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,IAAA;AACA,IAAA,IAAA;AACA,IAAA,KAAA;AACA,IAAA,gCAAA;AACA,IAAA,QAAA;IACA,cAAA,EAAgB,eAAA,CAAgB,cAAc,CAAA,GAAI,KAAA,GAAQ,cAAA;AAC1D,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA;AACF,GAAA;AAEA,EAAA,uBACET,GAAAA;AAAC,IAAA,oBAAA;AAAA,IAAA;MACC,KAAA,EAAO,eAAA;MACN,GAAI,OAAA;AAEJ,MAAA,QAAA,EAAA,UAAA,CAAW,0BAA0B,CAAA,GAAI,0BAAA,CAA2B,OAAO,CAAA,GAAI;AAAA;AAClF,GAAA;AAEJ;AAMA,IAAM,YAAA,GAAe,iBAAA;AAUrB,IAAM,eAAA,GAAwBS,MAAA,CAAA,UAAA;AAC5B,EAAA,CACE,EAAE,eAAA,EAAiB,SAAA,EAAW,SAAS,GAAG,aAAA,IAC1C,YAAA,KACG;AACH,IAAA,MAAM;AACJ,MAAA,OAAA;AACA,MAAA,KAAA;AACA,MAAA,QAAA;AACA,MAAA,OAAA;AACA,MAAA,QAAA;AACA,MAAA,UAAA;AACA,MAAA,UAAA;AACA,MAAA,gCAAA;AACA,MAAA,aAAA;AACA,MAAA;KACF,GAAI,kBAAA,CAAmB,cAAc,eAAe,CAAA;AACpD,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,YAAA,EAAc,UAAU,CAAA;AAE7D,IAAA,MAAM,sBAAA,GAA+BA,cAAO,OAAO,CAAA;AAC7C,IAAAA,iBAAU,MAAM;AACpB,MAAA,MAAM,OAAO,OAAA,EAAS,IAAA;AACtB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,sBAAA,CAAuB,OAAO,CAAA;AAC7D,QAAA,IAAA,CAAK,gBAAA,CAAiB,SAAS,KAAK,CAAA;AACpC,QAAA,OAAO,MAAM,IAAA,CAAK,mBAAA,CAAoB,OAAA,EAAS,KAAK,CAAA;AACtD,MAAA;IACF,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,IAAA,uBACET,GAAAA;MAAC,SAAA,CAAU,MAAA;AAAV,MAAA;QACC,IAAA,EAAK,QAAA;QACL,IAAA,EAAK,UAAA;QACL,cAAA,EAAc,eAAA,CAAgB,OAAO,CAAA,GAAI,OAAA,GAAU,OAAA;QACnD,eAAA,EAAe,QAAA;AACf,QAAA,YAAA,EAAY,SAAS,OAAO,CAAA;AAC5B,QAAA,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAC/B,QAAA,QAAA;AACA,QAAA,KAAA;QACC,GAAG,aAAA;QACJ,GAAA,EAAK,YAAA;QACL,SAAA,EAAW,oBAAA,CAAqB,SAAA,EAAW,CAAC,KAAA,KAAU;AAEpD,UAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,EAAS,KAAA,CAAM,cAAA,EAAe;QAClD,CAAC,CAAA;QACD,OAAA,EAAS,oBAAA,CAAqB,OAAA,EAAS,CAAC,KAAA,KAAU;AAChD,UAAA,UAAA,CAAW,CAAC,WAAA,KAAiB,eAAA,CAAgB,WAAW,CAAA,GAAI,IAAA,GAAO,CAAC,WAAY,CAAA;AAChF,UAAA,IAAI,eAAe,aAAA,EAAe;AAChC,YAAA,gCAAA,CAAiC,OAAA,GAAU,MAAM,oBAAA,EAAqB;AAMtE,YAAA,IAAI,CAAC,gCAAA,CAAiC,OAAA,EAAS,KAAA,CAAM,eAAA,EAAgB;AACvE,UAAA;QACF,CAAC;AAAA;AACH,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,eAAA,CAAgB,WAAA,GAAc,YAAA;AAe9B,IAAM,QAAA,GAAiBS,MAAA,CAAA,UAAA;AACrB,EAAA,CAAC,OAAmC,YAAA,KAAiB;AACnD,IAAA,MAAM;AACJ,MAAA,eAAA;AACA,MAAA,IAAA;AACA,MAAA,OAAA;AACA,MAAA,cAAA;AACA,MAAA,QAAA;AACA,MAAA,QAAA;AACA,MAAA,KAAA;AACA,MAAA,eAAA;AACA,MAAA,IAAA;MACA,GAAG;KACL,GAAI,KAAA;AAEJ,IAAA,uBACET,GAAAA;AAAC,MAAA,gBAAA;AAAA,MAAA;AACC,QAAA,eAAA;AACA,QAAA,OAAA;AACA,QAAA,cAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,eAAA;AACA,QAAA,IAAA;AACA,QAAA,IAAA;AACA,QAAA,KAAA;QAEA,0BAAA,EAA4B,CAAC,EAAE,aAAA,EAAc,qBAC3CI,IAAAA,CAAAM,QAAAA,EAAA,EACE,QAAA,EAAA;0BAAAV,GAAAA;AAAC,YAAA,eAAA;AAAA,YAAA;cACE,GAAG,aAAA;cACJ,GAAA,EAAK,YAAA;AAEL,cAAA;AAAA;AACF,WAAA;AACC,UAAA,aAAA,oBACCA,GAAAA;AAAC,YAAA,mBAAA;AAAA,YAAA;AAEC,cAAA;AAAA;AACF;AAAA,SAAA,EAEJ;AAAA;AAEJ,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,aAAA;AAMvB,IAAM,cAAA,GAAiB,mBAAA;AAYvB,IAAM,iBAAA,GAA0BS,MAAA,CAAA,UAAA;AAC9B,EAAA,CAAC,OAA4C,YAAA,KAAiB;AAC5D,IAAA,MAAM,EAAE,eAAA,EAAiB,UAAA,EAAY,GAAG,gBAAe,GAAI,KAAA;AAC3D,IAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,cAAA,EAAgB,eAAe,CAAA;AAClE,IAAA,uBACET,GAAAA;AAAC,MAAA,QAAA;AAAA,MAAA;AACC,QAAA,OAAA,EAAS,cAAc,eAAA,CAAgB,OAAA,CAAQ,OAAO,CAAA,IAAK,QAAQ,OAAA,KAAY,IAAA;AAE/E,QAAA,QAAA,kBAAAA,GAAAA;UAAC,SAAA,CAAU,IAAA;AAAV,UAAA;YACC,YAAA,EAAY,QAAA,CAAS,QAAQ,OAAO,CAAA;YACpC,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;YACtC,GAAG,cAAA;YACJ,GAAA,EAAK,YAAA;AACL,YAAA,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,GAAG,MAAM,KAAA;AAAM;AACjD;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,iBAAA,CAAkB,WAAA,GAAc,cAAA;AAMhC,IAAM,iBAAA,GAAoB,qBAAA;AAK1B,IAAM,mBAAA,GAA4BS,MAAA,CAAA,UAAA;AAChC,EAAA,CAAC,EAAE,eAAA,EAAiB,GAAG,KAAA,IAAgD,YAAA,KAAiB;AACtF,IAAA,MAAM;AACJ,MAAA,OAAA;AACA,MAAA,gCAAA;AACA,MAAA,OAAA;AACA,MAAA,cAAA;AACA,MAAA,QAAA;AACA,MAAA,QAAA;AACA,MAAA,IAAA;AACA,MAAA,KAAA;AACA,MAAA,IAAA;AACA,MAAA,WAAA;AACA,MAAA;KACF,GAAI,kBAAA,CAAmB,mBAAmB,eAAe,CAAA;AAEzD,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,YAAA,EAAc,cAAc,CAAA;AACjE,IAAA,MAAM,WAAA,GAAc,YAAY,OAAO,CAAA;AACvC,IAAA,MAAM,WAAA,GAAc,QAAQ,OAAO,CAAA;AAG7B,IAAAA,iBAAU,MAAM;AACpB,MAAA,MAAM,KAAA,GAAQ,WAAA;AACd,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,MAAM,UAAA,GAAa,OAAO,gBAAA,CAAiB,SAAA;AAC3C,MAAA,MAAM,aAAa,MAAA,CAAO,wBAAA;AACxB,QAAA,UAAA;AACA,QAAA;AACF,OAAA;AACA,MAAA,MAAM,aAAa,UAAA,CAAW,GAAA;AAE9B,MAAA,MAAM,OAAA,GAAU,CAAC,gCAAA,CAAiC,OAAA;AAClD,MAAA,IAAI,WAAA,KAAgB,WAAW,UAAA,EAAY;AACzC,QAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,SAAS,CAAA;AAC5C,QAAA,KAAA,CAAM,aAAA,GAAgB,gBAAgB,OAAO,CAAA;AAC7C,QAAA,UAAA,CAAW,KAAK,KAAA,EAAO,eAAA,CAAgB,OAAO,CAAA,GAAI,QAAQ,OAAO,CAAA;AACjE,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAC3B,MAAA;AACF,IAAA,CAAA,EAAG,CAAC,WAAA,EAAa,WAAA,EAAa,OAAA,EAAS,gCAAgC,CAAC,CAAA;AAExE,IAAA,MAAM,oBAA0BA,MAAA,CAAA,MAAA,CAAO,eAAA,CAAgB,OAAO,CAAA,GAAI,QAAQ,OAAO,CAAA;AACjF,IAAA,uBACET,GAAAA;MAAC,SAAA,CAAU,KAAA;AAAV,MAAA;QACC,IAAA,EAAK,UAAA;QACL,aAAA,EAAW,IAAA;AACX,QAAA,cAAA,EAAgB,kBAAkB,iBAAA,CAAkB,OAAA;AACpD,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,IAAA;AACA,QAAA,KAAA;AACA,QAAA,IAAA;QACC,GAAG,KAAA;QACJ,QAAA,EAAU,EAAA;QACV,GAAA,EAAK,YAAA;QACL,KAAA,EAAO;AACL,UAAA,GAAG,KAAA,CAAM,KAAA;UACT,GAAG,WAAA;UACH,QAAA,EAAU,UAAA;UACV,aAAA,EAAe,MAAA;UACf,OAAA,EAAS,CAAA;UACT,MAAA,EAAQ,CAAA;;;;UAIR,SAAA,EAAW;AACb;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,mBAAA,CAAoB,WAAA,GAAc,iBAAA;AAIlC,SAAS,WAAW,KAAA,EAAkD;AACpE,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA;AAC1B;AAEA,SAAS,gBAAgB,OAAA,EAAoD;AAC3E,EAAA,OAAO,OAAA,KAAY,eAAA;AACrB;AAEA,SAAS,SAAS,OAAA,EAAuB;AACvC,EAAA,OAAO,eAAA,CAAgB,OAAO,CAAA,GAAI,eAAA,GAAkB,UAAU,SAAA,GAAY,WAAA;AAC5E;ACrXA,IAAM,oBAAA,GAAuBK,GAAAA;AAAA,EAC3B,sNAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,EAAA,EAAI,EAAA;AAAA,EACJ,OAAA,EAAS,EAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAoBO,IAAM,aAAA,GAAsBM,MAAA,CAAA,UAAA,CAGjC,SAASC,cAAAA,CACT;AAAA,EACE,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,OAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,WAAW,gBAAA,EAAiB;AAClC,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,aAAmBD,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,UAAU,EAAA,IAAM,UAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,IAAA,IAAQ,SAAS,CAAA;AAGnD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,MAAA,CAAA,QAAA,CAElD,kBAAkB,KAAK,CAAA;AACzB,EAAA,MAAM,SAAA,GAAY,OAAA,KAAY,MAAA,GAAY,OAAA,GAAU,eAAA;AAEpD,EAAA,MAAM,mBAAA,GAA4BA,MAAA,CAAA,WAAA;AAAA,IAChC,CAAC,KAAA,KAA0C;AACzC,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,MAC1B;AACA,MAAA,eAAA,GAAkB,KAAK,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,SAAS,eAAe;AAAA,GAC3B;AAEA,EAAA,MAAM,IAAA,GAAO,SAAA,KAAc,IAAA,IAAQ,SAAA,KAAc,eAAA;AAEjD,EAAA,uBACEP,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,qBAAA,EAAuB,kBAAkB,CAAA,EAC1D,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,sBAAAJ,GAAAA;AAAA,QAAmB,QAAA;AAAA,QAAlB;AAAA,UACC,GAAA;AAAA,UACA,EAAA,EAAI,OAAA;AAAA,UACJ,OAAA;AAAA,UACA,cAAA;AAAA,UACA,eAAA,EAAiB,mBAAA;AAAA,UACjB,WAAW,EAAA,CAAG,oBAAA,CAAqB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,UACvD,KAAA,EAAO;AAAA,YACL,eAAA,EAAiB,IAAA,GACb,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,GAAG,EAAA,GACzB,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,EAAA,CAAG,GAAA;AAAA,YAC7B,WAAA,EAAa,KAAA,GACT,MAAA,CAAO,MAAA,CAAO,cACd,IAAA,GACE,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,EAAA,GAC7B,QAAA,CAAS,MAAA,CAAO,MAAM,MAAA,CAAO,GAAA;AAAA,YACnC,KAAA,EAAO,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,EAAA,CAAG,EAAA;AAAA,YAChC,WAAW,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,OAAO,EAAA,GAAK;AAAA,WACtD;AAAA,UACA,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,UAEN,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC9B,GAAG,KAAA;AAAA,UAEJ,0BAAAA,GAAAA,CAAmB,iBAAA,EAAlB,EAA4B,UAAA,EAAU,IAAA,EAAC,SAAO,IAAA,EAC7C,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kCAAA,EACd,QAAA,kBAAAA,IAACa,eAAAA,EAAA,EACE,kCACCb,GAAAA;AAAA,YAACG,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cAEC,KAAA,EAAO,QAAA;AAAA,cACP,MAAA,EAAQ,QAAA;AAAA,cACR,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,KAAA,EAAM,4BAAA;AAAA,cACN,SAAS,aAAA,GAAgB,EAAE,OAAO,GAAA,EAAK,OAAA,EAAS,GAAE,GAAI,KAAA;AAAA,cACtD,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,cAChC,IAAA,EAAM,gBAAgB,EAAE,KAAA,EAAO,KAAK,OAAA,EAAS,CAAA,KAAM,EAAC;AAAA,cACpD,YACE,aAAA,GACI,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,YAAA,CAAa,MAAA,CAAO,OAAA,EAAS,SAAA,EAAW,aAAa,MAAA,CAAO,SAAA,EAAU,GACjG,EAAE,UAAU,CAAA,EAAE;AAAA,cAGpB,QAAA,kBAAAH,GAAAA;AAAA,gBAACG,MAAAA,CAAO,IAAA;AAAA,gBAAP;AAAA,kBACC,CAAA,EAAE,4BAAA;AAAA,kBACF,MAAA,EAAO,cAAA;AAAA,kBACP,WAAA,EAAa,CAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe,OAAA;AAAA,kBACf,OAAA,EAAS,aAAA,GAAgB,EAAE,UAAA,EAAY,GAAE,GAAI,KAAA;AAAA,kBAC7C,OAAA,EAAS,EAAE,UAAA,EAAY,CAAA,EAAE;AAAA,kBACzB,YACE,aAAA,GACI,EAAE,MAAM,QAAA,EAAU,OAAA,EAAS,aAAa,MAAA,CAAO,OAAA,EAAS,SAAA,EAAW,YAAA,CAAa,OAAO,SAAA,EAAW,KAAA,EAAO,MAAK,GAC9G,EAAE,UAAU,CAAA;AAAE;AAAA;AAEtB,aAAA;AAAA,YA5BI;AAAA,WA6BN,EAEJ,GACF,CAAA,EACF;AAAA;AAAA,OACF;AAAA,MAAA,CAEE,SAAS,WAAA,qBACTC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCJ,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,6DAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,YAEnC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAED,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,aAAA;AAAA,YACJ,SAAA,EAAU,yBAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAM;AAAA,YAEjC,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EAEJ;AAAA,KAAA,EAEJ,CAAA;AAAA,IAEC,yBACCI,IAAAA;AAAA,MAACD,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,0DAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,OAAO,WAAA,EAAY;AAAA,QAC1C,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,IAAG,GAAI,KAAA;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA,EAAS;AAAA,QAEnD,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;AC5M5B,IAAM,UAAA,GAAa,OAAA;AAGnB,IAAM,CAAC,kBAAA,EAAoB,gBAAgB,CAAA,GAAI,mBAAmB,UAAU,CAAA;AAG5E,IAAM,CAAC,aAAA,EAAe,eAAe,CAAA,GAAI,mBAAsC,UAAU,CAAA;AAUzF,IAAM,KAAA,GAAcC,MAAA,CAAA,UAAA;AAClB,EAAA,CAAC,OAAgC,YAAA,KAAiB;AAChD,IAAA,MAAM;AACJ,MAAA,YAAA;AACA,MAAA,IAAA;MACA,OAAA,GAAU,KAAA;AACV,MAAA,QAAA;AACA,MAAA,QAAA;MACA,KAAA,GAAQ,IAAA;AACR,MAAA,OAAA;AACA,MAAA,IAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,gBAAmC,IAAI,CAAA;AACzE,IAAA,MAAM,eAAe,eAAA,CAAgB,YAAA,EAAc,CAAC,IAAA,KAAS,SAAA,CAAU,IAAI,CAAC,CAAA;AAC5E,IAAA,MAAM,gCAAA,GAAyCA,cAAO,KAAK,CAAA;AAE3D,IAAA,MAAM,aAAA,GAAgB,SAAS,IAAA,IAAQ,CAAC,CAAC,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,GAAI,IAAA;AAElE,IAAA,uBACEX,KAAC,aAAA,EAAA,EAAc,OAAO,YAAA,EAAc,OAAA,EAAkB,UACpD,QAAA,EAAA;sBAAAJ,GAAAA;QAAC,SAAA,CAAU,MAAA;AAAV,QAAA;UACC,IAAA,EAAK,QAAA;UACL,IAAA,EAAK,OAAA;UACL,cAAA,EAAc,OAAA;AACd,UAAA,YAAA,EAAYgB,UAAS,OAAO,CAAA;AAC5B,UAAA,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAC/B,UAAA,QAAA;AACA,UAAA,KAAA;UACC,GAAG,UAAA;UACJ,GAAA,EAAK,YAAA;AACL,UAAA,OAAA,EAAS,oBAAA,CAAqB,KAAA,CAAM,OAAA,EAAS,CAAC,KAAA,KAAU;AAEtD,YAAA,IAAI,CAAC,SAAS,OAAA,IAAU;AACxB,YAAA,IAAI,aAAA,EAAe;AACjB,cAAA,gCAAA,CAAiC,OAAA,GAAU,MAAM,oBAAA,EAAqB;AAItE,cAAA,IAAI,CAAC,gCAAA,CAAiC,OAAA,EAAS,KAAA,CAAM,eAAA,EAAgB;AACvE,YAAA;UACF,CAAC;AAAA;AACH,OAAA;AACC,MAAA,aAAA,oBACChB,GAAAA;AAAC,QAAA,gBAAA;AAAA,QAAA;UACC,OAAA,EAAS,MAAA;AACT,UAAA,OAAA,EAAS,CAAC,gCAAA,CAAiC,OAAA;AAC3C,UAAA,IAAA;AACA,UAAA,KAAA;AACA,UAAA,OAAA;AACA,UAAA,QAAA;AACA,UAAA,QAAA;AACA,UAAA,IAAA;UAIA,KAAA,EAAO,EAAE,WAAW,mBAAA;AAAoB;AAC1C;AAAA,KAAA,EAEJ,CAAA;AAEJ,EAAA;AACF,CAAA;AAEA,KAAA,CAAM,WAAA,GAAc,UAAA;AAMpB,IAAMiB,eAAAA,GAAiB,gBAAA;AAYvB,IAAM,cAAA,GAAuBF,MAAA,CAAA,UAAA;AAC3B,EAAA,CAAC,OAAyC,YAAA,KAAiB;AACzD,IAAA,MAAM,EAAE,YAAA,EAAc,UAAA,EAAY,GAAG,gBAAe,GAAI,KAAA;AACxD,IAAA,MAAM,OAAA,GAAU,eAAA,CAAgBE,eAAAA,EAAgB,YAAY,CAAA;AAC5D,IAAA,uBACEjB,IAAC,QAAA,EAAA,EAAS,SAAS,UAAA,IAAc,OAAA,CAAQ,OAAA,EACvC,QAAA,kBAAAA,GAAAA;MAAC,SAAA,CAAU,IAAA;AAAV,MAAA;QACC,YAAA,EAAYgB,SAAAA,CAAS,QAAQ,OAAO,CAAA;QACpC,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;QACtC,GAAG,cAAA;QACJ,GAAA,EAAK;AAAA;AACP,KAAA,EACF,CAAA;AAEJ,EAAA;AACF,CAAA;AAEA,cAAA,CAAe,WAAA,GAAcC,eAAAA;AAM7B,IAAMC,kBAAAA,GAAoB,kBAAA;AAS1B,IAAM,gBAAA,GAAyBH,MAAA,CAAA,UAAA;EAC7B,CACE;AACE,IAAA,YAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;IACA,OAAA,GAAU,IAAA;IACV,GAAG;AACL,GAAA,EACA,YAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAYA,cAAyB,IAAI,CAAA;AAC/C,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,GAAA,EAAK,YAAY,CAAA;AACtD,IAAA,MAAM,WAAA,GAAc,YAAY,OAAO,CAAA;AACvC,IAAA,MAAM,WAAA,GAAc,QAAQ,OAAO,CAAA;AAG7B,IAAAA,iBAAU,MAAM;AACpB,MAAA,MAAM,QAAQ,GAAA,CAAI,OAAA;AAClB,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,MAAM,UAAA,GAAa,OAAO,gBAAA,CAAiB,SAAA;AAC3C,MAAA,MAAM,aAAa,MAAA,CAAO,wBAAA;AACxB,QAAA,UAAA;AACA,QAAA;AACF,OAAA;AACA,MAAA,MAAM,aAAa,UAAA,CAAW,GAAA;AAC9B,MAAA,IAAI,WAAA,KAAgB,WAAW,UAAA,EAAY;AACzC,QAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,SAAS,CAAA;AAC5C,QAAA,UAAA,CAAW,IAAA,CAAK,OAAO,OAAO,CAAA;AAC9B,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAC3B,MAAA;AACF,IAAA,CAAA,EAAG,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO,CAAC,CAAA;AAElC,IAAA,uBACEf,GAAAA;MAAC,SAAA,CAAU,KAAA;AAAV,MAAA;QACC,IAAA,EAAK,OAAA;QACL,aAAA,EAAW,IAAA;QACX,cAAA,EAAgB,OAAA;QACf,GAAG,KAAA;QACJ,QAAA,EAAU,EAAA;QACV,GAAA,EAAK,YAAA;QACL,KAAA,EAAO;AACL,UAAA,GAAG,KAAA,CAAM,KAAA;UACT,GAAG,WAAA;UACH,QAAA,EAAU,UAAA;UACV,aAAA,EAAe,MAAA;UACf,OAAA,EAAS,CAAA;UACT,MAAA,EAAQ;AACV;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,gBAAA,CAAiB,WAAA,GAAckB,kBAAAA;AAI/B,SAASF,UAAS,OAAA,EAAkB;AAClC,EAAA,OAAO,UAAU,SAAA,GAAY,WAAA;AAC/B;ACjMA,IAAM,UAAA,GAAa,CAAC,SAAA,EAAW,WAAA,EAAa,aAAa,YAAY,CAAA;AAKrE,IAAM,gBAAA,GAAmB,YAAA;AAGzB,IAAM,CAAC,uBAAA,EAAyB,qBAAqB,CAAA,GAAIG,mBAAmB,gBAAA,EAAkB;AAC5F,EAAA,2BAAA;AACA,EAAA;AACF,CAAC,CAAA;AACD,IAAM,2BAA2B,2BAAA,EAA4B;AAC7D,IAAM,gBAAgB,gBAAA,EAAiB;AAUvC,IAAM,CAAC,kBAAA,EAAoB,oBAAoB,CAAA,GAC7C,wBAAgD,gBAAgB,CAAA;AAiBlE,IAAM,UAAA,GAAmBC,MAAA,CAAA,UAAA;AACvB,EAAA,CAAC,OAAqC,YAAA,KAAiB;AACrD,IAAA,MAAM;AACJ,MAAA,iBAAA;AACA,MAAA,IAAA;AACA,MAAA,YAAA;MACA,KAAA,EAAO,SAAA;MACP,QAAA,GAAW,KAAA;MACX,QAAA,GAAW,KAAA;AACX,MAAA,WAAA;AACA,MAAA,GAAA;MACA,IAAA,GAAO,IAAA;AACP,MAAA,aAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,qBAAA,GAAwB,yBAAyB,iBAAiB,CAAA;AACxE,IAAA,MAAM,SAAA,GAAY,aAAa,GAAG,CAAA;AAClC,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAqB;MAC7C,IAAA,EAAM,SAAA;AACN,MAAA,WAAA,EAAa,YAAA,IAAgB,IAAA;MAC7B,QAAA,EAAU,aAAA;MACV,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,uBACEpB,GAAAA;AAAC,MAAA,kBAAA;AAAA,MAAA;QACC,KAAA,EAAO,iBAAA;AACP,QAAA,IAAA;AACA,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,KAAA;QACA,aAAA,EAAe,QAAA;AAEf,QAAA,QAAA,kBAAAA,GAAAA;AAAkB,UAAA,IAAA;AAAjB,UAAA;YACC,OAAA,EAAO,IAAA;YACN,GAAG,qBAAA;AACJ,YAAA,WAAA;YACA,GAAA,EAAK,SAAA;AACL,YAAA,IAAA;AAEA,YAAA,QAAA,kBAAAA,GAAAA;cAACqB,SAAAA,CAAU,GAAA;AAAV,cAAA;gBACC,IAAA,EAAK,YAAA;gBACL,eAAA,EAAe,QAAA;gBACf,kBAAA,EAAkB,WAAA;AAClB,gBAAA,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;gBAC/B,GAAA,EAAK,SAAA;gBACJ,GAAG,UAAA;gBACJ,GAAA,EAAK;AAAA;AACP;AAAA;AACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,gBAAA;AAMzB,IAAM,SAAA,GAAY,gBAAA;AAQlB,IAAM,cAAA,GAAuBD,MAAA,CAAA,UAAA;AAC3B,EAAA,CAAC,OAAyC,YAAA,KAAiB;AACzD,IAAA,MAAM,EAAE,iBAAA,EAAmB,QAAA,EAAU,GAAG,WAAU,GAAI,KAAA;AACtD,IAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,SAAA,EAAW,iBAAiB,CAAA;AACjE,IAAA,MAAM,UAAA,GAAa,QAAQ,QAAA,IAAY,QAAA;AACvC,IAAA,MAAM,qBAAA,GAAwB,yBAAyB,iBAAiB,CAAA;AACxE,IAAA,MAAM,UAAA,GAAa,cAAc,iBAAiB,CAAA;AAClD,IAAA,MAAM,GAAA,GAAYA,cAAyC,IAAI,CAAA;AAC/D,IAAA,MAAM,YAAA,GAAeE,eAAAA,CAAgB,YAAA,EAAc,GAAG,CAAA;AACtD,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAA,KAAU,SAAA,CAAU,KAAA;AAC5C,IAAA,MAAM,oBAAA,GAA6BF,cAAO,KAAK,CAAA;AAEzC,IAAAA,iBAAU,MAAM;AACpB,MAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,QAAA,IAAI,UAAA,CAAW,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AAClC,UAAA,oBAAA,CAAqB,OAAA,GAAU,IAAA;AACjC,QAAA;AACF,MAAA,CAAA;AACA,MAAA,MAAM,WAAA,GAAc,MAAO,oBAAA,CAAqB,OAAA,GAAU,KAAA;AAC1D,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,MAAA,QAAA,CAAS,gBAAA,CAAiB,SAAS,WAAW,CAAA;AAC9C,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AACrD,QAAA,QAAA,CAAS,mBAAA,CAAoB,SAAS,WAAW,CAAA;AACnD,MAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,uBACEpB,GAAAA;AAAkB,MAAA,IAAA;AAAjB,MAAA;QACC,OAAA,EAAO,IAAA;QACN,GAAG,qBAAA;AACJ,QAAA,SAAA,EAAW,CAAC,UAAA;QACZ,MAAA,EAAQ,OAAA;AAER,QAAA,QAAA,kBAAAA,GAAAA;AAAC,UAAA,KAAA;AAAA,UAAA;YACC,QAAA,EAAU,UAAA;AACV,YAAA,QAAA,EAAU,OAAA,CAAQ,QAAA;AAClB,YAAA,OAAA;YACC,GAAG,UAAA;YACH,GAAG,SAAA;AACJ,YAAA,IAAA,EAAM,OAAA,CAAQ,IAAA;YACd,GAAA,EAAK,YAAA;AACL,YAAA,OAAA,EAAS,MAAM,OAAA,CAAQ,aAAA,CAAc,SAAA,CAAU,KAAK,CAAA;YACpD,SAAA,EAAWuB,oBAAAA,CAAqB,CAAC,KAAA,KAAU;AAEzC,cAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,EAAS,KAAA,CAAM,cAAA,EAAe;YAClD,CAAC,CAAA;YACD,OAAA,EAASA,oBAAAA,CAAqB,SAAA,CAAU,OAAA,EAAS,MAAM;AAMrD,cAAA,IAAI,oBAAA,CAAqB,OAAA,EAAS,GAAA,CAAI,OAAA,EAAS,KAAA,EAAM;YACvD,CAAC;AAAA;AACH;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,cAAA,CAAe,WAAA,GAAc,SAAA;AAM7B,IAAMN,gBAAAA,GAAiB,qBAAA;AAMvB,IAAM,mBAAA,GAA4BG,MAAA,CAAA,UAAA;AAChC,EAAA,CAAC,OAA8C,YAAA,KAAiB;AAC9D,IAAA,MAAM,EAAE,iBAAA,EAAmB,GAAG,cAAA,EAAe,GAAI,KAAA;AACjD,IAAA,MAAM,UAAA,GAAa,cAAc,iBAAiB,CAAA;AAClD,IAAA,uBAAOpB,GAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,YAAa,GAAG,cAAA,EAAgB,GAAA,EAAK,YAAA,EAAc,CAAA;AAChF,EAAA;AACF,CAAA;AAEA,mBAAA,CAAoB,WAAA,GAAciB,gBAAAA;AAIlC,IAAMO,MAAAA,GAAO,UAAA;AACb,IAAMC,MAAAA,GAAO,cAAA;AACb,IAAM,SAAA,GAAY,mBAAA;ACnMlB,IAAM,qBAAA,GAAwBpB,GAAAA;AAAA,EAC5B,qNAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI,CAAA;AAAA,EACJ,OAAA,EAAS,CAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AA+BA,IAAM,oBAA0BqB,MAAA,CAAA,aAAA,CAAsC;AAAA,EACpE,KAAA,EAAO;AACT,CAAC,CAAA;AAMM,IAAM,eAAA,GAAwBA,MAAA,CAAA,UAAA,CAGnC,SAASC,gBAAAA,CACT;AAAA,EACE,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,UAAA;AAAA,EACZ,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,gBAAgB,CAAC,aAAA;AAGvB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUD,MAAA,CAAA,QAAA;AAAA,IAC9C;AAAA,GACF;AACA,EAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAa,KAAA,IAAS,MAAA,GAAa,aAAA;AAElE,EAAA,MAAM,iBAAA,GAA0BA,MAAA,CAAA,WAAA;AAAA,IAC9B,CAAC,QAAA,KAAqB;AACpB,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AACA,MAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,OAAO,aAAa;AAAA,GACvB;AAEA,EAAA,MAAM,aAAmBA,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,OAAA,GAAU,GAAG,UAAU,CAAA,MAAA,CAAA;AAE7B,EAAA,uBACE1B,GAAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,KAAA,EAAO,EAAE,KAAA,EAAO,YAAA,EAAa,EACvD,QAAA,kBAAAI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCJ,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,kCAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,QAEnC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAGFA,GAAAA;AAAA,MAAqB4B,MAAAA;AAAA,MAApB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,SAAA,KAAc,aAAa,YAAA,GAAe,sBAAA;AAAA,UAC1C;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA,EAAe,iBAAA;AAAA,QACf,kBAAA,EAAkB,QAAQ,OAAA,GAAU,MAAA;AAAA,QACpC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,QAC9B,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,IAEC,yBACCxB,IAAAA;AAAA,MAACD,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,iCAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,OAAO,WAAA,EAAY;AAAA,QAC1C,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,IAAG,GAAI,KAAA;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA,EAAS;AAAA,QAEnD,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAMvB,IAAM,mBAAA,GAA4BY,MAAA,CAAA,UAAA,CAGvC,SAASG,oBAAAA,CACT;AAAA,EACE,SAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,WAAW,gBAAA,EAAiB;AAClC,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAUH,kBAAW,iBAAiB,CAAA;AAEhE,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,aAAmBA,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,UAAU,EAAA,IAAM,UAAA;AAEtB,EAAA,MAAM,aAAa,UAAA,KAAe,KAAA;AAClC,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,IAAA,IAAQ,SAAS,CAAA;AAE5C,EAAA,uBACEtB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAqB8B,MAAAA;AAAA,MAApB;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,OAAA;AAAA,QACJ,KAAA;AAAA,QACA,WAAW,EAAA,CAAG,qBAAA,CAAsB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACxD,KAAA,EAAO;AAAA,UACL,eAAA,EAAiB,UAAA,GACb,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,GAAG,EAAA,GACzB,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,EAAA,CAAG,GAAA;AAAA,UAC7B,WAAA,EAAa,UAAA,GACT,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,OAAO,EAAA,GAC7B,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA;AAAA,UACjC,WAAW,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,OAAO,EAAA,GAAK,MAAA;AAAA,UAC1D,wBAAA,EAA0B,aAAA;AAAA,UAC1B,mBAAmB,MAAA,CAAO;AAAA,SAC5B;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,0BAAA9B,GAAAA,CAAqB,SAAA,EAApB,EAA8B,UAAA,EAAU,IAAA,EAAC,SAAO,IAAA,EAC/C,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kCAAA,EACd,QAAA,kBAAAA,IAACa,eAAAA,EAAA,EACE,wCACCb,GAAAA;AAAA,UAACG,MAAAA,CAAO,IAAA;AAAA,UAAP;AAAA,YAEC,SAAA,EAAU,oBAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,OAAA;AAAA,cACP,MAAA,EAAQ,OAAA;AAAA,cACR,eAAA,EAAiB,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,EAAA,CAAG;AAAA,aAC5C;AAAA,YACA,SAAS,aAAA,GAAgB,EAAE,OAAO,CAAA,EAAG,OAAA,EAAS,GAAE,GAAI,KAAA;AAAA,YACpD,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,YAChC,IAAA,EAAM,gBAAgB,EAAE,KAAA,EAAO,GAAG,OAAA,EAAS,CAAA,KAAM,EAAC;AAAA,YAClD,YACE,aAAA,GACI,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,YAAA,CAAa,MAAA,CAAO,OAAA,EAAS,SAAA,EAAW,aAAa,MAAA,CAAO,SAAA,EAAU,GACjG,EAAE,UAAU,CAAA;AAAE,WAAA;AAAA,UAbhB;AAAA,SAeN,EAEJ,GACF,CAAA,EACF;AAAA;AAAA,KACF;AAAA,IAAA,CAEE,SAAS,WAAA,qBACTC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACb,QAAA,EAAA;AAAA,sBAAAJ,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,OAAA;AAAA,UACT,SAAA,EAAU,6DAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,UAEnC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MACC,+BACCA,GAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,yBAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAM;AAAA,UAEjC,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AAED,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AC5PlC,IAAM,SAAA,GAAY,CAAC,QAAA,EAAU,UAAU,CAAA;AACvC,IAAM+B,WAAAA,GAAa,CAAC,SAAA,EAAW,WAAA,EAAa,aAAa,YAAY,CAAA;AAGrE,IAAM,SAAA,GAA8C;AAClD,EAAA,WAAA,EAAa,CAAC,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,WAAW,CAAA;AAC1D,EAAA,YAAA,EAAc,CAAC,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,YAAY,CAAA;AAC5D,EAAA,aAAA,EAAe,CAAC,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,WAAW,CAAA;AAC5D,EAAA,UAAA,EAAY,CAAC,MAAA,EAAQ,UAAA,EAAY,SAAA,EAAW,WAAW;AACzD,CAAA;AAMA,IAAM,WAAA,GAAc,QAAA;AAEpB,IAAM,CAAC,UAAA,EAAY,aAAA,EAAe,qBAAqB,CAAA,GACrD,iBAAqC,WAAW,CAAA;AAGlD,IAAM,CAAC,mBAAA,EAAqB,iBAAiB,CAAA,GAAI,mBAAmB,WAAA,EAAa;AAC/E,EAAA;AACF,CAAC,CAAA;AAcD,IAAM,CAAC,cAAA,EAAgB,gBAAgB,CAAA,GAAI,oBAAwC,WAAW,CAAA;AAwB9F,IAAM,MAAA,GAAe,MAAA,CAAA,UAAA;AACnB,EAAA,CAAC,OAAiC,YAAA,KAAiB;AACjD,IAAA,MAAM;AACJ,MAAA,IAAA;MACA,GAAA,GAAM,CAAA;MACN,GAAA,GAAM,GAAA;MACN,IAAA,GAAO,CAAA;MACP,WAAA,GAAc,YAAA;MACd,QAAA,GAAW,KAAA;MACX,qBAAA,GAAwB,CAAA;AACxB,MAAA,YAAA,GAAe,CAAC,GAAG,CAAA;AACnB,MAAA,KAAA;AACA,MAAA,aAAA,GAAgB,MAAM;AAAC,MAAA,CAAA;AACvB,MAAA,aAAA,GAAgB,MAAM;AAAC,MAAA,CAAA;MACvB,QAAA,GAAW,KAAA;AACX,MAAA,IAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,SAAA,GAAkB,MAAA,CAAA,MAAA,iBAAqC,IAAI,GAAA,EAAK,CAAA;AACtE,IAAA,MAAM,qBAAA,GAA8B,cAAe,CAAC,CAAA;AACpD,IAAA,MAAM,eAAe,WAAA,KAAgB,YAAA;AACrC,IAAA,MAAM,iBAAA,GAAoB,eAAe,gBAAA,GAAmB,cAAA;AAE5D,IAAA,MAAM,CAAC,MAAA,GAAS,EAAC,EAAG,SAAS,IAAI,oBAAA,CAAqB;MACpD,IAAA,EAAM,KAAA;MACN,WAAA,EAAa,YAAA;AACb,MAAA,QAAA,EAAU,CAACC,MAAAA,KAAU;AACnB,QAAA,MAAM,MAAA,GAAS,CAAC,GAAG,SAAA,CAAU,OAAO,CAAA;AACpC,QAAA,MAAA,CAAO,qBAAA,CAAsB,OAAO,CAAA,EAAG,KAAA,EAAM;AAC7C,QAAA,aAAA,CAAcA,MAAK,CAAA;AACrB,MAAA;KACD,CAAA;AACD,IAAA,MAAM,yBAAA,GAAkC,cAAO,MAAM,CAAA;AAErD,IAAA,SAAS,iBAAiBA,MAAAA,EAAe;AACvC,MAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,MAAA,EAAQA,MAAK,CAAA;AACvD,MAAA,YAAA,CAAaA,QAAO,YAAY,CAAA;AAClC,IAAA;AAEA,IAAA,SAAS,gBAAgBA,MAAAA,EAAe;AACtC,MAAA,YAAA,CAAaA,MAAAA,EAAO,sBAAsB,OAAO,CAAA;AACnD,IAAA;AAEA,IAAA,SAAS,cAAA,GAAiB;AACxB,MAAA,MAAM,SAAA,GAAY,yBAAA,CAA0B,OAAA,CAAQ,qBAAA,CAAsB,OAAO,CAAA;AACjF,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,qBAAA,CAAsB,OAAO,CAAA;AACtD,MAAA,MAAM,aAAa,SAAA,KAAc,SAAA;AACjC,MAAA,IAAI,UAAA,gBAA0B,MAAM,CAAA;AACtC,IAAA;AAEA,IAAA,SAAS,YAAA,CAAaA,QAAe,OAAA,EAAiB,EAAE,QAAO,GAAI,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG;AACpF,MAAA,MAAM,YAAA,GAAe,gBAAgB,IAAI,CAAA;AACzC,MAAA,MAAM,UAAA,GAAa,UAAA,CAAW,IAAA,CAAK,KAAA,CAAA,CAAOA,MAAAA,GAAQ,OAAO,IAAI,CAAA,GAAI,IAAA,GAAO,GAAA,EAAK,YAAY,CAAA;AACzF,MAAA,MAAM,YAAY,KAAA,CAAM,UAAA,EAAY,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAE9C,MAAA,SAAA,CAAU,CAAC,UAAA,GAAa,EAAC,KAAM;AAC7B,QAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,UAAA,EAAY,SAAA,EAAW,OAAO,CAAA;AACrE,QAAA,IAAI,wBAAA,CAAyB,UAAA,EAAY,qBAAA,GAAwB,IAAI,CAAA,EAAG;AACtE,UAAA,qBAAA,CAAsB,OAAA,GAAU,UAAA,CAAW,OAAA,CAAQ,SAAS,CAAA;AAC5D,UAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAU,CAAA,KAAM,OAAO,UAAU,CAAA;AAC3D,UAAA,IAAI,UAAA,IAAc,MAAA,EAAQ,aAAA,CAAc,UAAU,CAAA;AAClD,UAAA,OAAO,aAAa,UAAA,GAAa,UAAA;QACnC,CAAA,MAAO;AACL,UAAA,OAAO,UAAA;AACT,QAAA;MACF,CAAC,CAAA;AACH,IAAA;AAEA,IAAA,uBACEhC,GAAAA;AAAC,MAAA,cAAA;AAAA,MAAA;AACC,QAAA,KAAA,EAAO,KAAA,CAAM,aAAA;AACb,QAAA,IAAA;AACA,QAAA,QAAA;AACA,QAAA,GAAA;AACA,QAAA,GAAA;AACA,QAAA,qBAAA;AACA,QAAA,MAAA,EAAQ,SAAA,CAAU,OAAA;AAClB,QAAA,MAAA;AACA,QAAA,WAAA;AACA,QAAA,IAAA;AAEA,QAAA,QAAA,kBAAAA,GAAAA,CAAC,UAAA,CAAW,UAAX,EAAoB,KAAA,EAAO,MAAM,aAAA,EAChC,QAAA,kBAAAA,GAAAA,CAAC,WAAW,IAAA,EAAX,EAAgB,OAAO,KAAA,CAAM,aAAA,EAC5B,0BAAAA,GAAAA;AAAC,UAAA,iBAAA;AAAA,UAAA;YACC,eAAA,EAAe,QAAA;AACf,YAAA,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;YAC9B,GAAG,WAAA;YACJ,GAAA,EAAK,YAAA;YACL,aAAA,EAAe,oBAAA,CAAqB,WAAA,CAAY,aAAA,EAAe,MAAM;AACnE,cAAA,IAAI,CAAC,QAAA,EAAU,yBAAA,CAA0B,OAAA,GAAU,MAAA;YACrD,CAAC,CAAA;AACD,YAAA,GAAA;AACA,YAAA,GAAA;AACA,YAAA,QAAA;AACA,YAAA,YAAA,EAAc,WAAW,MAAA,GAAY,gBAAA;AACrC,YAAA,WAAA,EAAa,WAAW,MAAA,GAAY,eAAA;AACpC,YAAA,UAAA,EAAY,WAAW,MAAA,GAAY,cAAA;YACnC,aAAA,EAAe,MAAM,CAAC,QAAA,IAAY,YAAA,CAAa,KAAK,CAAA,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;YACvE,YAAA,EAAc,MACZ,CAAC,QAAA,IAAY,YAAA,CAAa,GAAA,EAAK,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AAEpE,YAAA,aAAA,EAAe,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,eAAc,KAAM;AACtD,cAAA,IAAI,CAAC,QAAA,EAAU;AACb,gBAAA,MAAM,SAAA,GAAY,SAAA,CAAU,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAC9C,gBAAA,MAAM,YAAY,SAAA,IAAc,KAAA,CAAM,YAAY+B,WAAAA,CAAW,QAAA,CAAS,MAAM,GAAG,CAAA;AAC/E,gBAAA,MAAM,UAAA,GAAa,YAAY,EAAA,GAAK,CAAA;AACpC,gBAAA,MAAM,UAAU,qBAAA,CAAsB,OAAA;AACtC,gBAAA,MAAMC,MAAAA,GAAQ,OAAO,OAAO,CAAA;AAC5B,gBAAA,MAAM,eAAA,GAAkB,OAAO,UAAA,GAAa,aAAA;AAC5C,gBAAA,YAAA,CAAaA,SAAQ,eAAA,EAAiB,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAM,CAAA;AACjE,cAAA;AACF,YAAA;AAAA;SACF,EACF,GACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,MAAA,CAAO,WAAA,GAAc,WAAA;AAQrB,IAAM,CAAC,yBAAA,EAA2B,2BAA2B,CAAA,GAAI,oBAK9D,WAAA,EAAa;EACd,SAAA,EAAW,MAAA;EACX,OAAA,EAAS,OAAA;EACT,IAAA,EAAM,OAAA;EACN,SAAA,EAAW;AACb,CAAC,CAAA;AAsBD,IAAM,gBAAA,GAAyB,MAAA,CAAA,UAAA;AAC7B,EAAA,CAAC,OAA2C,YAAA,KAAiB;AAC3D,IAAA,MAAM;AACJ,MAAA,GAAA;AACA,MAAA,GAAA;AACA,MAAA,GAAA;AACA,MAAA,QAAA;AACA,MAAA,YAAA;AACA,MAAA,WAAA;AACA,MAAA,UAAA;AACA,MAAA,aAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,gBAAmC,IAAI,CAAA;AACzE,IAAA,MAAM,eAAe,eAAA,CAAgB,YAAA,EAAc,CAAC,IAAA,KAAS,SAAA,CAAU,IAAI,CAAC,CAAA;AAC5E,IAAA,MAAM,OAAA,GAAgB,cAAgB,MAAS,CAAA;AAC/C,IAAA,MAAM,SAAA,GAAY,aAAa,GAAG,CAAA;AAClC,IAAA,MAAM,iBAAiB,SAAA,KAAc,KAAA;AACrC,IAAA,MAAM,iBAAA,GAAqB,cAAA,IAAkB,CAAC,QAAA,IAAc,CAAC,cAAA,IAAkB,QAAA;AAE/E,IAAA,SAAS,oBAAoB,eAAA,EAAyB;AACpD,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,IAAW,MAAA,CAAQ,qBAAA,EAAsB;AAC9D,MAAA,MAAM,KAAA,GAA0B,CAAC,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA;AAC9C,MAAA,MAAM,MAAA,GAA2B,oBAAoB,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,CAAC,KAAK,GAAG,CAAA;AAC3E,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,EAAO,MAAM,CAAA;AAEvC,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,OAAO,KAAA,CAAM,eAAA,GAAkB,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA;AAEA,IAAA,uBACEhC,GAAAA;AAAC,MAAA,yBAAA;AAAA,MAAA;AACC,QAAA,KAAA,EAAO,KAAA,CAAM,aAAA;AACb,QAAA,SAAA,EAAW,oBAAoB,MAAA,GAAS,OAAA;AACxC,QAAA,OAAA,EAAS,oBAAoB,OAAA,GAAU,MAAA;AACvC,QAAA,SAAA,EAAW,oBAAoB,CAAA,GAAI,EAAA;QACnC,IAAA,EAAK,OAAA;AAEL,QAAA,QAAA,kBAAAA,GAAAA;AAAC,UAAA,UAAA;AAAA,UAAA;YACC,GAAA,EAAK,SAAA;YACL,kBAAA,EAAiB,YAAA;YAChB,GAAG,WAAA;YACJ,GAAA,EAAK,YAAA;YACL,KAAA,EAAO;AACL,cAAA,GAAG,WAAA,CAAY,KAAA;AACf,cAAA,CAAC,gCAAuC,GAAG;AAC7C,aAAA;AACA,YAAA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,cAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,OAAO,CAAA;AAC/C,cAAA,YAAA,GAAe,KAAK,CAAA;AACtB,YAAA,CAAA;AACA,YAAA,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,cAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,OAAO,CAAA;AAC/C,cAAA,WAAA,GAAc,KAAK,CAAA;AACrB,YAAA,CAAA;AACA,YAAA,UAAA,EAAY,MAAM;AAChB,cAAA,OAAA,CAAQ,OAAA,GAAU,MAAA;AAClB,cAAA,UAAA,IAAa;AACf,YAAA,CAAA;AACA,YAAA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,cAAA,MAAM,cAAA,GAAiB,oBAAoB,WAAA,GAAc,YAAA;AACzD,cAAA,MAAM,YAAY,SAAA,CAAU,cAAc,CAAA,CAAE,QAAA,CAAS,MAAM,GAAG,CAAA;AAC9D,cAAA,aAAA,GAAgB,EAAE,KAAA,EAAO,SAAA,EAAW,SAAA,GAAY,EAAA,GAAK,GAAG,CAAA;AAC1D,YAAA;AAAA;AACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AASA,IAAM,cAAA,GAAuB,MAAA,CAAA,UAAA;AAC3B,EAAA,CAAC,OAAyC,YAAA,KAAiB;AACzD,IAAA,MAAM;AACJ,MAAA,GAAA;AACA,MAAA,GAAA;AACA,MAAA,QAAA;AACA,MAAA,YAAA;AACA,MAAA,WAAA;AACA,MAAA,UAAA;AACA,MAAA,aAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,SAAA,GAAkB,cAA0B,IAAI,CAAA;AACtD,IAAA,MAAM,GAAA,GAAM,eAAA,CAAgB,YAAA,EAAc,SAAS,CAAA;AACnD,IAAA,MAAM,OAAA,GAAgB,cAAgB,MAAS,CAAA;AAC/C,IAAA,MAAM,sBAAsB,CAAC,QAAA;AAE7B,IAAA,SAAS,oBAAoB,eAAA,EAAyB;AACpD,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,IAAW,SAAA,CAAU,QAAS,qBAAA,EAAsB;AACzE,MAAA,MAAM,KAAA,GAA0B,CAAC,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA;AAC/C,MAAA,MAAM,MAAA,GAA2B,sBAAsB,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,CAAC,KAAK,GAAG,CAAA;AAC7E,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,EAAO,MAAM,CAAA;AAEvC,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,OAAO,KAAA,CAAM,eAAA,GAAkB,IAAA,CAAK,GAAG,CAAA;AACzC,IAAA;AAEA,IAAA,uBACEA,GAAAA;AAAC,MAAA,yBAAA;AAAA,MAAA;AACC,QAAA,KAAA,EAAO,KAAA,CAAM,aAAA;AACb,QAAA,SAAA,EAAW,sBAAsB,QAAA,GAAW,KAAA;AAC5C,QAAA,OAAA,EAAS,sBAAsB,KAAA,GAAQ,QAAA;QACvC,IAAA,EAAK,QAAA;AACL,QAAA,SAAA,EAAW,sBAAsB,CAAA,GAAI,EAAA;AAErC,QAAA,QAAA,kBAAAA,GAAAA;AAAC,UAAA,UAAA;AAAA,UAAA;YACC,kBAAA,EAAiB,UAAA;YAChB,GAAG,WAAA;AACJ,YAAA,GAAA;YACA,KAAA,EAAO;AACL,cAAA,GAAG,WAAA,CAAY,KAAA;AACf,cAAA,CAAC,gCAAuC,GAAG;AAC7C,aAAA;AACA,YAAA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,cAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,OAAO,CAAA;AAC/C,cAAA,YAAA,GAAe,KAAK,CAAA;AACtB,YAAA,CAAA;AACA,YAAA,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,cAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,KAAA,CAAM,OAAO,CAAA;AAC/C,cAAA,WAAA,GAAc,KAAK,CAAA;AACrB,YAAA,CAAA;AACA,YAAA,UAAA,EAAY,MAAM;AAChB,cAAA,OAAA,CAAQ,OAAA,GAAU,MAAA;AAClB,cAAA,UAAA,IAAa;AACf,YAAA,CAAA;AACA,YAAA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,cAAA,MAAM,cAAA,GAAiB,sBAAsB,aAAA,GAAgB,UAAA;AAC7D,cAAA,MAAM,YAAY,SAAA,CAAU,cAAc,CAAA,CAAE,QAAA,CAAS,MAAM,GAAG,CAAA;AAC9D,cAAA,aAAA,GAAgB,EAAE,KAAA,EAAO,SAAA,EAAW,SAAA,GAAY,EAAA,GAAK,GAAG,CAAA;AAC1D,YAAA;AAAA;AACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAkBA,IAAM,UAAA,GAAmB,MAAA,CAAA,UAAA;AACvB,EAAA,CAAC,OAAqC,YAAA,KAAiB;AACrD,IAAA,MAAM;AACJ,MAAA,aAAA;AACA,MAAA,YAAA;AACA,MAAA,WAAA;AACA,MAAA,UAAA;AACA,MAAA,aAAA;AACA,MAAA,YAAA;AACA,MAAA,aAAA;MACA,GAAG;KACL,GAAI,KAAA;AACJ,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,WAAA,EAAa,aAAa,CAAA;AAE3D,IAAA,uBACEA,GAAAA;MAAC,SAAA,CAAU,IAAA;AAAV,MAAA;QACE,GAAG,WAAA;QACJ,GAAA,EAAK,YAAA;AACL,QAAA,SAAA,EAAW,oBAAA,CAAqB,KAAA,CAAM,SAAA,EAAW,CAAC,KAAA,KAAU;AAC1D,UAAA,IAAI,KAAA,CAAM,QAAQ,MAAA,EAAQ;AACxB,YAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,YAAA,KAAA,CAAM,cAAA,EAAe;UACvB,CAAA,MAAA,IAAW,KAAA,CAAM,QAAQ,KAAA,EAAO;AAC9B,YAAA,YAAA,CAAa,KAAK,CAAA;AAElB,YAAA,KAAA,CAAM,cAAA,EAAe;AACvB,UAAA,CAAA,MAAA,IAAW,UAAU,MAAA,CAAO+B,WAAU,EAAE,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AAC3D,YAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,YAAA,KAAA,CAAM,cAAA,EAAe;AACvB,UAAA;QACF,CAAC,CAAA;AACD,QAAA,aAAA,EAAe,oBAAA,CAAqB,KAAA,CAAM,aAAA,EAAe,CAAC,KAAA,KAAU;AAClE,UAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,UAAA,MAAA,CAAO,iBAAA,CAAkB,MAAM,SAAS,CAAA;AAExC,UAAA,KAAA,CAAM,cAAA,EAAe;AAGrB,UAAA,IAAI,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA,EAAG;AAC9B,YAAA,MAAA,CAAO,KAAA,EAAM;UACf,CAAA,MAAO;AACL,YAAA,YAAA,CAAa,KAAK,CAAA;AACpB,UAAA;QACF,CAAC,CAAA;AACD,QAAA,aAAA,EAAe,oBAAA,CAAqB,KAAA,CAAM,aAAA,EAAe,CAAC,KAAA,KAAU;AAClE,UAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,UAAA,IAAI,OAAO,iBAAA,CAAkB,KAAA,CAAM,SAAS,CAAA,cAAe,KAAK,CAAA;QAClE,CAAC,CAAA;AACD,QAAA,WAAA,EAAa,oBAAA,CAAqB,KAAA,CAAM,WAAA,EAAa,CAAC,KAAA,KAAU;AAC9D,UAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,UAAA,IAAI,MAAA,CAAO,iBAAA,CAAkB,KAAA,CAAM,SAAS,CAAA,EAAG;AAC7C,YAAA,MAAA,CAAO,qBAAA,CAAsB,MAAM,SAAS,CAAA;AAC5C,YAAA,UAAA,CAAW,KAAK,CAAA;AAClB,UAAA;QACF,CAAC;AAAA;AACH,KAAA;AAEJ,EAAA;AACF,CAAA;AAMA,IAAM,UAAA,GAAa,aAAA;AAMnB,IAAM,WAAA,GAAoB,MAAA,CAAA,UAAA;AACxB,EAAA,CAAC,OAAsC,YAAA,KAAiB;AACtD,IAAA,MAAM,EAAE,aAAA,EAAe,GAAG,UAAA,EAAW,GAAI,KAAA;AACzC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,UAAA,EAAY,aAAa,CAAA;AAC1D,IAAA,uBACE/B,GAAAA;MAAC,SAAA,CAAU,IAAA;AAAV,MAAA;QACC,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;AACvC,QAAA,kBAAA,EAAkB,OAAA,CAAQ,WAAA;QACzB,GAAG,UAAA;QACJ,GAAA,EAAK;AAAA;AACP,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,UAAA;AAM1B,IAAM,UAAA,GAAa,aAAA;AAKnB,IAAM,WAAA,GAAoB,MAAA,CAAA,UAAA;AACxB,EAAA,CAAC,OAAsC,YAAA,KAAiB;AACtD,IAAA,MAAM,EAAE,aAAA,EAAe,GAAG,UAAA,EAAW,GAAI,KAAA;AACzC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,UAAA,EAAY,aAAa,CAAA;AAC1D,IAAA,MAAM,WAAA,GAAc,2BAAA,CAA4B,UAAA,EAAY,aAAa,CAAA;AACzE,IAAA,MAAM,GAAA,GAAY,cAAwB,IAAI,CAAA;AAC9C,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,YAAA,EAAc,GAAG,CAAA;AACtD,IAAA,MAAM,WAAA,GAAc,QAAQ,MAAA,CAAO,MAAA;AACnC,IAAA,MAAM,WAAA,GAAc,QAAQ,MAAA,CAAO,GAAA;AAAI,MAAA,CAAC,UACtC,wBAAA,CAAyB,KAAA,EAAO,OAAA,CAAQ,GAAA,EAAK,QAAQ,GAAG;AAC1D,KAAA;AACA,IAAA,MAAM,cAAc,WAAA,GAAc,CAAA,GAAI,KAAK,GAAA,CAAI,GAAG,WAAW,CAAA,GAAI,CAAA;AACjE,IAAA,MAAM,SAAA,GAAY,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,WAAW,CAAA;AAE/C,IAAA,uBACEA,GAAAA;MAAC,SAAA,CAAU,IAAA;AAAV,MAAA;AACC,QAAA,kBAAA,EAAkB,OAAA,CAAQ,WAAA;QAC1B,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;QACtC,GAAG,UAAA;QACJ,GAAA,EAAK,YAAA;QACL,KAAA,EAAO;AACL,UAAA,GAAG,KAAA,CAAM,KAAA;UACT,CAAC,WAAA,CAAY,SAAS,GAAG,WAAA,GAAc,GAAA;UACvC,CAAC,WAAA,CAAY,OAAO,GAAG,SAAA,GAAY;AACrC;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,UAAA;AAM1B,IAAM,UAAA,GAAa,aAAA;AAKnB,IAAM,WAAA,GAAoB,MAAA,CAAA,UAAA;AACxB,EAAA,CAAC,OAAsC,YAAA,KAAiB;AACtD,IAAA,MAAM,QAAA,GAAW,aAAA,CAAc,KAAA,CAAM,aAAa,CAAA;AAClD,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,gBAAwC,IAAI,CAAA;AAC5E,IAAA,MAAM,eAAe,eAAA,CAAgB,YAAA,EAAc,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAC,CAAA;AAC3E,IAAA,MAAM,KAAA,GAAc,MAAA,CAAA,OAAA;MAClB,MAAO,KAAA,GAAQ,QAAA,EAAS,CAAE,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,GAAA,CAAI,OAAA,KAAY,KAAK,CAAA,GAAI,EAAA;AAC5E,MAAA,CAAC,UAAU,KAAK;AAClB,KAAA;AACA,IAAA,uBAAOA,IAAC,eAAA,EAAA,EAAiB,GAAG,KAAA,EAAO,GAAA,EAAK,YAAA,EAAc,KAAA,EAAc,CAAA;AACtE,EAAA;AACF,CAAA;AAQA,IAAM,eAAA,GAAwB,MAAA,CAAA,UAAA;AAC5B,EAAA,CAAC,OAA0C,YAAA,KAAiB;AAC1D,IAAA,MAAM,EAAE,aAAA,EAAe,KAAA,EAAO,IAAA,EAAM,GAAG,YAAW,GAAI,KAAA;AACtD,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,UAAA,EAAY,aAAa,CAAA;AAC1D,IAAA,MAAM,WAAA,GAAc,2BAAA,CAA4B,UAAA,EAAY,aAAa,CAAA;AACzE,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,gBAAiC,IAAI,CAAA;AACrE,IAAA,MAAM,eAAe,eAAA,CAAgB,YAAA,EAAc,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAC,CAAA;AAE3E,IAAA,MAAM,aAAA,GAAgB,QAAQ,OAAA,CAAQ,IAAA,IAAQ,CAAC,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,GAAI,IAAA;AACxE,IAAA,MAAM,IAAA,GAAO,QAAQ,KAAK,CAAA;AAE1B,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAClC,IAAA,MAAM,OAAA,GACJ,UAAU,MAAA,GAAY,CAAA,GAAI,yBAAyB,KAAA,EAAO,OAAA,CAAQ,GAAA,EAAK,OAAA,CAAQ,GAAG,CAAA;AACpF,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,EAAO,OAAA,CAAQ,OAAO,MAAM,CAAA;AACnD,IAAA,MAAM,eAAA,GAAkB,IAAA,GAAO,WAAA,CAAY,IAAI,CAAA;AAC/C,IAAA,MAAM,sBAAsB,eAAA,GACxB,sBAAA,CAAuB,iBAAiB,OAAA,EAAS,WAAA,CAAY,SAAS,CAAA,GACtE,CAAA;AAEE,IAAA,iBAAU,MAAM;AACpB,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAK,CAAA;AACxB,QAAA,OAAO,MAAM;AACX,UAAA,OAAA,CAAQ,MAAA,CAAO,OAAO,KAAK,CAAA;AAC7B,QAAA,CAAA;AACF,MAAA;AACF,IAAA,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,CAAQ,MAAM,CAAC,CAAA;AAE1B,IAAA,uBACEI,IAAAA;AAAC,MAAA,MAAA;AAAA,MAAA;QACC,KAAA,EAAO;UACL,SAAA,EAAW,qCAAA;UACX,QAAA,EAAU,UAAA;AACV,UAAA,CAAC,YAAY,SAAS,GAAG,CAAA,KAAA,EAAQ,OAAO,OAAO,mBAAmB,CAAA,GAAA;AACpE,SAAA;QAEA,QAAA,EAAA;0BAAAJ,GAAAA,CAAC,WAAW,QAAA,EAAX,EAAoB,OAAO,KAAA,CAAM,aAAA,EAChC,0BAAAA,GAAAA;YAAC,SAAA,CAAU,IAAA;AAAV,YAAA;cACC,IAAA,EAAK,QAAA;cACL,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,KAAA;AACnC,cAAA,eAAA,EAAe,OAAA,CAAQ,GAAA;cACvB,eAAA,EAAe,KAAA;AACf,cAAA,eAAA,EAAe,OAAA,CAAQ,GAAA;AACvB,cAAA,kBAAA,EAAkB,OAAA,CAAQ,WAAA;AAC1B,cAAA,kBAAA,EAAkB,OAAA,CAAQ,WAAA;cAC1B,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;cACvC,QAAA,EAAU,OAAA,CAAQ,WAAW,MAAA,GAAY,CAAA;cACxC,GAAG,UAAA;cACJ,GAAA,EAAK,YAAA;AAOL,cAAA,KAAA,EAAO,UAAU,MAAA,GAAY,EAAE,OAAA,EAAS,MAAA,KAAW,KAAA,CAAM,KAAA;cACzD,OAAA,EAAS,oBAAA,CAAqB,KAAA,CAAM,OAAA,EAAS,MAAM;AACjD,gBAAA,OAAA,CAAQ,sBAAsB,OAAA,GAAU,KAAA;cAC1C,CAAC;AAAA;AACH,WAAA,EACF,CAAA;AAEC,UAAA,aAAA,oBACCA,GAAAA;AAAC,YAAA,iBAAA;AAAA,YAAA;cAEC,IAAA,EACE,IAAA,KACC,OAAA,CAAQ,IAAA,GAAO,OAAA,CAAQ,IAAA,IAAQ,QAAQ,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,IAAA,GAAO,EAAA,CAAA,GAAM,MAAA,CAAA;AAE3E,cAAA,IAAA,EAAM,OAAA,CAAQ,IAAA;AACd,cAAA;AAAA,aAAA;AANK,YAAA;AAOP;AAAA;AAAA;AAEJ,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,UAAA;AAM1B,IAAMkB,kBAAAA,GAAoB,kBAAA;AAK1B,IAAM,iBAAA,GAA0B,MAAA,CAAA,UAAA;AAC9B,EAAA,CAAC,EAAE,aAAA,EAAe,KAAA,EAAO,GAAG,KAAA,IAA8C,YAAA,KAAiB;AACzF,IAAA,MAAM,GAAA,GAAY,cAAyB,IAAI,CAAA;AAC/C,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,GAAA,EAAK,YAAY,CAAA;AACtD,IAAA,MAAM,SAAA,GAAY,YAAY,KAAK,CAAA;AAG7B,IAAA,iBAAU,MAAM;AACpB,MAAA,MAAM,QAAQ,GAAA,CAAI,OAAA;AAClB,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,MAAM,UAAA,GAAa,OAAO,gBAAA,CAAiB,SAAA;AAC3C,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,UAAA,EAAY,OAAO,CAAA;AACtE,MAAA,MAAM,WAAW,UAAA,CAAW,GAAA;AAC5B,MAAA,IAAI,SAAA,KAAc,SAAS,QAAA,EAAU;AACnC,QAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,MAAM,CAAA;AAClD,QAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAK,CAAA;AAC1B,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAC3B,MAAA;IACF,CAAA,EAAG,CAAC,SAAA,EAAW,KAAK,CAAC,CAAA;AAWrB,IAAA,uBACElB,GAAAA;MAAC,SAAA,CAAU,KAAA;AAAV,MAAA;QACC,KAAA,EAAO,EAAE,SAAS,MAAA,EAAO;QACxB,GAAG,KAAA;QACJ,GAAA,EAAK,YAAA;QACL,YAAA,EAAc;AAAA;AAChB,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,iBAAA,CAAkB,WAAA,GAAckB,kBAAAA;AAIhC,SAAS,mBAAA,CAAoB,UAAA,GAAuB,EAAC,EAAG,WAAmB,OAAA,EAAiB;AAC1F,EAAA,MAAM,UAAA,GAAa,CAAC,GAAG,UAAU,CAAA;AACjC,EAAA,UAAA,CAAW,OAAO,CAAA,GAAI,SAAA;AACtB,EAAA,OAAO,WAAW,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AACxC;AAEA,SAAS,wBAAA,CAAyB,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa;AACzE,EAAA,MAAM,WAAW,GAAA,GAAM,GAAA;AACvB,EAAA,MAAM,iBAAiB,GAAA,GAAM,QAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,kBAAkB,KAAA,GAAQ,GAAA,CAAA;AAC7C,EAAA,OAAO,KAAA,CAAM,UAAA,EAAY,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AACnC;AAKA,SAAS,QAAA,CAAS,OAAe,WAAA,EAAqB;AACpD,EAAA,IAAI,cAAc,CAAA,EAAG;AACnB,IAAA,OAAO,CAAA,MAAA,EAAS,KAAA,GAAQ,CAAC,CAAA,IAAA,EAAO,WAAW,CAAA,CAAA;AAC7C,EAAA,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,OAAO,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,KAAK,CAAA;EACrC,CAAA,MAAO;AACL,IAAA,OAAO,MAAA;AACT,EAAA;AACF;AAUA,SAAS,oBAAA,CAAqB,QAAkB,SAAA,EAAmB;AACjE,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAChC,EAAA,MAAM,SAAA,GAAY,OAAO,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,GAAA,CAAI,KAAA,GAAQ,SAAS,CAAC,CAAA;AACnE,EAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,GAAA,CAAI,GAAG,SAAS,CAAA;AAC7C,EAAA,OAAO,SAAA,CAAU,QAAQ,eAAe,CAAA;AAC1C;AAMA,SAAS,sBAAA,CAAuB,KAAA,EAAe,IAAA,EAAc,SAAA,EAAmB;AAC9E,EAAA,MAAM,YAAY,KAAA,GAAQ,CAAA;AAC1B,EAAA,MAAM,WAAA,GAAc,EAAA;AACpB,EAAA,MAAM,MAAA,GAAS,YAAY,CAAC,CAAA,EAAG,WAAW,CAAA,EAAG,CAAC,CAAA,EAAG,SAAS,CAAC,CAAA;AAC3D,EAAA,OAAA,CAAQ,SAAA,GAAY,MAAA,CAAO,IAAI,CAAA,GAAI,SAAA,IAAa,SAAA;AAClD;AASA,SAAS,sBAAsB,MAAA,EAAkB;AAC/C,EAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU,MAAA,CAAO,KAAA,GAAQ,CAAC,IAAK,KAAK,CAAA;AAC7E;AAcA,SAAS,wBAAA,CAAyB,QAAkB,qBAAA,EAA+B;AACjF,EAAA,IAAI,wBAAwB,CAAA,EAAG;AAC7B,IAAA,MAAM,kBAAA,GAAqB,sBAAsB,MAAM,CAAA;AACvD,IAAA,MAAM,2BAAA,GAA8B,IAAA,CAAK,GAAA,CAAI,GAAG,kBAAkB,CAAA;AAClE,IAAA,OAAO,2BAAA,IAA+B,qBAAA;AACxC,EAAA;AACA,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,WAAA,CAAY,OAAkC,MAAA,EAAmC;AACxF,EAAA,OAAO,CAAC,KAAA,KAAkB;AACxB,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAA,EAAG,OAAO,OAAO,CAAC,CAAA;AACrE,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAA;AAC3D,IAAA,OAAO,OAAO,CAAC,CAAA,GAAI,KAAA,IAAS,KAAA,GAAQ,MAAM,CAAC,CAAA,CAAA;AAC7C,EAAA,CAAA;AACF;AAEA,SAAS,gBAAgB,KAAA,EAAe;AACtC,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,KAAK,EAAA,EAAI,MAAA;AAC7C;AAEA,SAAS,UAAA,CAAW,OAAe,YAAA,EAAsB;AACvD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,YAAY,CAAA;AACzC,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,OAAO,CAAA,GAAI,OAAA;AACvC;AAEA,IAAMM,KAAAA,GAAO,MAAA;AACb,IAAM,KAAA,GAAQ,WAAA;AACd,IAAM,KAAA,GAAQ,WAAA;AACd,IAAM,KAAA,GAAQ,WAAA;AC7wBd,IAAM,aAAA,GAAgBnB,IAAI,mDAAA,EAAqD;AAAA,EAC7E,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,OAAA,EAAS,SAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA;AAC3B,CAAC,CAAA;AAED,IAAM,aAAA,GAAgBA,GAAAA;AAAA,EACpB,mKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA;AAAU;AAEvC,CAAA;AAMA,IAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,MAAA;AAAA;AAAA,EACT,MAAA,EAAQ,0CAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,eAAA,GAAkB;AAAA,EACtB,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,iCAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,OAAA,EAAS,+BAAA;AAAA,EACT,MAAA,EAAQ,kCAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,OAAA,EAAS,6DAAA;AAAA,EACT,MAAA,EAAQ,mEAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAwBO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,WAAA,GAAc,KAAA;AAAA,EACd,WAAA,GAAc,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAA;AAAA,EAC7B,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA,GAAY,KAAA;AAAA,EACZ,iBAAA,GAAoB,KAAA;AAAA,EACpB,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,WAAW,gBAAA,EAAiB;AAClC,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIR,eAAAA,CAAM,QAAA;AAAA,IAC7C,KAAA,CAAM,KAAA,IAAuB,YAAA,IAA6B,CAAC,CAAC;AAAA,GAC/D;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAAA,CAAM,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAAA,CAAM,SAAwB,IAAI,CAAA;AAExE,EAAA,MAAM,YAAA,GAAgB,MAAM,KAAA,IAAkC,aAAA;AAE9D,EAAA,MAAM,oBAAoBA,eAAAA,CAAM,WAAA;AAAA,IAC9B,CAAC,KAAA,KAAoB;AACnB,MAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,MAAA,KAAA,CAAM,gBAAgB,KAAK,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,MAAM,aAAa;AAAA,GACtB;AAEA,EAAA,MAAM,YAAA,GAAe,cAAc,OAAO,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,YAAA,IAAgB,QAAA,CAAS,MAAA,CAAO,IAAA;AAClD,EAAA,MAAM,UAAU,cAAA,CAAe,OAAO,CAAA,IAAK,QAAA,CAAS,OAAO,KAAA,CAAM,EAAA;AACjE,EAAA,MAAM,cAAc,eAAA,CAAgB,OAAO,CAAA,IAAK,QAAA,CAAS,OAAO,KAAA,CAAM,MAAA;AACtE,EAAA,MAAM,gBAAA,GAAmB,qBAAqB,OAAO,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB,qBAAqB,OAAO,CAAA;AAErD,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,IAAO,CAAA;AACzB,EAAA,MAAM,GAAA,GAAM,MAAM,GAAA,IAAO,GAAA;AAEzB,EAAA,MAAM,UAAU,KAAA,GAAQ,CAAA,mBAAA,EAAsBA,eAAAA,CAAM,KAAA,EAAO,CAAA,CAAA,GAAK,MAAA;AAEhE,EAAA,uBACEO,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,QAAA,EAAU,kBAAkB,CAAA,EAE3C,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,SAAA,qBACTA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACCJ,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,OAAA;AAAA,UACJ,SAAA,EAAU,qBAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAM;AAAA,UAEjC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MAED,6BACCA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,kCAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,UAEnC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,WAAW,CAAA,CAAE,KAAK,KAAK;AAAA;AAAA;AAC3C,KAAA,EAEJ,CAAA;AAAA,oBAGFI,IAAAA;AAAA,MAAiBoB,KAAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,cAAA;AAAA,QACV,YAAA;AAAA,QACA,iBAAA,EAAiB,OAAA;AAAA,QACjB,SAAA,EAAW,EAAA;AAAA,UACT,0DAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,aAAA,EAAe,iBAAA;AAAA,QACf,aAAA,EAAe,MAAM,aAAA,CAAc,IAAI,CAAA;AAAA,QACvC,aAAa,MAAM;AACjB,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,cAAA,CAAe,IAAI,CAAA;AAAA,QACrB,CAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAGJ,QAAA,EAAA;AAAA,0BAAAxB,GAAAA;AAAA,YAAiB,KAAA;AAAA,YAAhB;AAAA,cACC,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,cACrC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY,qBAAA;AAAA,gBACZ,MAAA,EAAQ,CAAA,mCAAA,CAAA;AAAA,gBACR,SAAA,EAAW;AAAA,eACb;AAAA,cAGA,QAAA,kBAAAA,GAAAA;AAAA,gBAAiB,KAAA;AAAA,gBAAhB;AAAA,kBACC,SAAA,EAAU,8BAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,YAAY,YAAA,IAAgB,SAAA;AAAA,oBAC5B,SAAA,EAAW;AAAA;AACb;AAAA;AACF;AAAA,WACF;AAAA,UAGE,YAAA,CAAc,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBACxBA,GAAAA,CAAiB,KAAA,EAAhB,EAA8B,OAAA,EAAO,IAAA,EACpC,QAAA,kBAAAA,GAAAA;AAAA,YAACG,MAAAA,CAAO,IAAA;AAAA,YAAP;AAAA,cACC,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,cACrC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY,OAAA;AAAA,gBACZ,SAAA,EAAW,WAAA;AAAA,gBACX,MAAA,EAAQ,iCAAA;AAAA,gBACR,UAAA,EAAY;AAAA,eACd;AAAA,cACA,YACE,aAAA,GACI;AAAA,gBACE,KAAA,EAAO,IAAA;AAAA,gBACP,SAAA,EAAW,gBAAA;AAAA,gBACX,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA;AAAS,eACrD,GACA,MAAA;AAAA,cAEN,UACE,aAAA,GACI;AAAA,gBACE,KAAA,EAAO,IAAA;AAAA,gBACP,SAAA,EAAW,gBAAA;AAAA,gBACX,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA;AAAS,eACrD,GACA,MAAA;AAAA,cAEN,UAAA,EACE,aAAA,GACI,EAAE,SAAA,EAAW,kBAAiB,GAC9B,MAAA;AAAA,cAEN,aAAA,EAAe,MAAM,cAAA,CAAe,CAAC,CAAA;AAAA,cACrC,WAAA,EAAa,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,cAGtC,QAAA,kBAAAH,IAACa,eAAAA,EAAA,EACE,yBAAe,UAAA,IAAc,WAAA,KAAgB,CAAA,IAAK,aAAA,oBACjDb,GAAAA;AAAA,gBAACG,MAAAA,CAAO,GAAA;AAAA,gBAAP;AAAA,kBACC,SAAS,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,EAAG,OAAO,GAAA,EAAI;AAAA,kBACxC,SAAS,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,EAAI,OAAO,CAAA,EAAE;AAAA,kBACvC,MAAM,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,EAAG,OAAO,GAAA,EAAI;AAAA,kBACrC,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA,EAAS;AAAA,kBACnD,SAAA,EAAU,mIAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY,OAAO,EAAA,CAAG,QAAA;AAAA,oBACtB,KAAA,EAAO,OAAO,IAAA,CAAK,OAAA;AAAA,oBACnB,MAAA,EAAQ,CAAA,UAAA,EAAa,MAAA,CAAO,MAAM,CAAA;AAAA,mBACpC;AAAA,kBAEC,sBAAY,GAAG;AAAA;AAAA,eAClB,EAEJ;AAAA;AAAA,WACF,EAAA,EAtD0B,CAuD5B,CACD;AAAA;AAAA;AAAA,KACH;AAAA,IAGC,SAAA,oBACCC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0CAAA,EACb,QAAA,EAAA;AAAA,sBAAAJ,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,SAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,IAAA,EAAK;AAAA,UAEhC,sBAAY,GAAG;AAAA;AAAA,OAClB;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,SAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,IAAA,EAAK;AAAA,UAEhC,sBAAY,GAAG;AAAA;AAAA;AAClB,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;AC1QA,IAAM,gBAAA,GAAmB,aAAA;AAGzB,IAAM,CAAC,wBAAA,EAA0B,sBAAsB,CAAA,GAAI,mBAAmB,gBAAgB,CAAA;AAS9F,IAAM,CAAC,mBAAA,EAAqB,qBAAqB,CAAA,GAC/C,yBAAkD,gBAAgB,CAAA;AAWpE,IAAM,WAAA,GAAoBiC,MAAA,CAAA,UAAA;AACxB,EAAA,CAAC,OAAsC,YAAA,KAAiB;AACtD,IAAA,MAAM;AACJ,MAAA,kBAAA;MACA,IAAA,EAAM,QAAA;AACN,MAAA,WAAA;AACA,MAAA,QAAA;AACA,MAAA,YAAA;MACA,GAAG;KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,oBAAA,CAAqB;MAC3C,IAAA,EAAM,QAAA;AACN,MAAA,WAAA,EAAa,WAAA,IAAe,KAAA;MAC5B,QAAA,EAAU,YAAA;MACV,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,uBACEjC,GAAAA;AAAC,MAAA,mBAAA;AAAA,MAAA;QACC,KAAA,EAAO,kBAAA;AACP,QAAA,QAAA;AACA,QAAA,SAAA,EAAWD,OAAA,EAAM;AACjB,QAAA,IAAA;QACA,YAAA,EAAoBkC,MAAA,CAAA,WAAA,CAAY,MAAM,OAAA,CAAQ,CAAC,QAAA,KAAa,CAAC,QAAQ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEjF,QAAA,QAAA,kBAAAjC,GAAAA;UAAC,SAAA,CAAU,GAAA;AAAV,UAAA;AACC,YAAA,YAAA,EAAYgB,UAAS,IAAI,CAAA;AACzB,YAAA,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;YAC9B,GAAG,gBAAA;YACJ,GAAA,EAAK;AAAA;AACP;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,gBAAA;AAM1B,IAAMkB,aAAAA,GAAe,oBAAA;AAMrB,IAAM,kBAAA,GAA2BD,MAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,OAA6C,YAAA,KAAiB;AAC7D,IAAA,MAAM,EAAE,kBAAA,EAAoB,GAAG,YAAA,EAAa,GAAI,KAAA;AAChD,IAAA,MAAM,OAAA,GAAU,qBAAA,CAAsBC,aAAAA,EAAc,kBAAkB,CAAA;AACtE,IAAA,uBACElC,GAAAA;MAAC,SAAA,CAAU,MAAA;AAAV,MAAA;QACC,IAAA,EAAK,QAAA;AACL,QAAA,eAAA,EAAe,OAAA,CAAQ,SAAA;AACvB,QAAA,eAAA,EAAe,QAAQ,IAAA,IAAQ,KAAA;QAC/B,YAAA,EAAYgB,SAAAA,CAAS,QAAQ,IAAI,CAAA;QACjC,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;AACvC,QAAA,QAAA,EAAU,OAAA,CAAQ,QAAA;QACjB,GAAG,YAAA;QACJ,GAAA,EAAK,YAAA;AACL,QAAA,OAAA,EAAS,oBAAA,CAAqB,KAAA,CAAM,OAAA,EAAS,OAAA,CAAQ,YAAY;AAAA;AACnE,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,kBAAA,CAAmB,WAAA,GAAckB,aAAAA;AAMjC,IAAM,YAAA,GAAe,oBAAA;AAWrB,IAAM,kBAAA,GAA2BD,MAAA,CAAA,UAAA;AAC/B,EAAA,CAAC,OAA6C,YAAA,KAAiB;AAC7D,IAAA,MAAM,EAAE,UAAA,EAAY,GAAG,YAAA,EAAa,GAAI,KAAA;AACxC,IAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,YAAA,EAAc,KAAA,CAAM,kBAAkB,CAAA;AAC5E,IAAA,uBACEjC,GAAAA,CAAC,QAAA,EAAA,EAAS,OAAA,EAAS,cAAc,OAAA,CAAQ,IAAA,EACtC,QAAA,EAAA,CAAC,EAAE,OAAA,uBACFA,GAAAA,CAAC,sBAAA,EAAA,EAAwB,GAAG,YAAA,EAAc,KAAK,YAAA,EAAc,OAAA,EAAkB,CAAA,EAEnF,CAAA;AAEJ,EAAA;AACF,CAAA;AAEA,kBAAA,CAAmB,WAAA,GAAc,YAAA;AASjC,IAAM,sBAAA,GAA+BiC,MAAA,CAAA,UAAA,CAGnC,CAAC,KAAA,EAAiD,YAAA,KAAiB;AACnE,EAAA,MAAM,EAAE,kBAAA,EAAoB,OAAA,EAAS,QAAA,EAAU,GAAG,cAAa,GAAI,KAAA;AACnE,EAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,YAAA,EAAc,kBAAkB,CAAA;AACtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,gBAAS,OAAO,CAAA;AACxD,EAAA,MAAM,GAAA,GAAYA,cAAsC,IAAI,CAAA;AAC5D,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,YAAA,EAAc,GAAG,CAAA;AACtD,EAAA,MAAM,SAAA,GAAkBA,cAA2B,CAAC,CAAA;AACpD,EAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,EAAA,MAAM,QAAA,GAAiBA,cAA2B,CAAC,CAAA;AACnD,EAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AAGvB,EAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,IAAQ,SAAA;AAC/B,EAAA,MAAM,4BAAA,GAAqCA,cAAO,MAAM,CAAA;AACxD,EAAA,MAAM,iBAAA,GAA0BA,cAA+B,MAAS,CAAA;AAElE,EAAAA,iBAAU,MAAM;AACpB,IAAA,MAAM,GAAA,GAAM,qBAAA,CAAsB,MAAO,4BAAA,CAA6B,UAAU,KAAM,CAAA;AACtF,IAAA,OAAO,MAAM,qBAAqB,GAAG,CAAA;AACvC,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,gBAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,OAAO,GAAA,CAAI,OAAA;AACjB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,iBAAA,CAAkB,OAAA,GAAU,kBAAkB,OAAA,IAAW;AACvD,QAAA,kBAAA,EAAoB,KAAK,KAAA,CAAM,kBAAA;AAC/B,QAAA,aAAA,EAAe,KAAK,KAAA,CAAM;AAC5B,OAAA;AAEA,MAAA,IAAA,CAAK,MAAM,kBAAA,GAAqB,IAAA;AAChC,MAAA,IAAA,CAAK,MAAM,aAAA,GAAgB,MAAA;AAG3B,MAAA,MAAM,IAAA,GAAO,KAAK,qBAAA,EAAsB;AACxC,MAAA,SAAA,CAAU,UAAU,IAAA,CAAK,MAAA;AACzB,MAAA,QAAA,CAAS,UAAU,IAAA,CAAK,KAAA;AAGxB,MAAA,IAAI,CAAC,6BAA6B,OAAA,EAAS;AACzC,QAAA,IAAA,CAAK,KAAA,CAAM,kBAAA,GAAqB,iBAAA,CAAkB,OAAA,CAAQ,kBAAA;AAC1D,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,GAAgB,iBAAA,CAAkB,OAAA,CAAQ,aAAA;AACvD,MAAA;AAEA,MAAA,YAAA,CAAa,OAAO,CAAA;AACtB,IAAA;AAOF,EAAA,CAAA,EAAG,CAAC,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAE1B,EAAA,uBACEjC,GAAAA;IAAC,SAAA,CAAU,GAAA;AAAV,IAAA;MACC,YAAA,EAAYgB,SAAAA,CAAS,QAAQ,IAAI,CAAA;MACjC,eAAA,EAAe,OAAA,CAAQ,WAAW,EAAA,GAAK,MAAA;AACvC,MAAA,EAAA,EAAI,OAAA,CAAQ,SAAA;AACZ,MAAA,MAAA,EAAQ,CAAC,MAAA;MACR,GAAG,YAAA;MACJ,GAAA,EAAK,YAAA;MACL,KAAA,EAAO;AACL,QAAA,CAAC,CAAA,kCAAA,CAA2C,GAAG,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,GAAO,MAAA;AACxE,QAAA,CAAC,CAAA,iCAAA,CAA0C,GAAG,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,MAAA;AACrE,QAAA,GAAG,KAAA,CAAM;AACX,OAAA;AAEC,MAAA,QAAA,EAAA,MAAA,IAAU;AAAA;AACb,GAAA;AAEJ,CAAC,CAAA;AAID,SAASA,UAAS,IAAA,EAAgB;AAChC,EAAA,OAAO,OAAO,MAAA,GAAS,QAAA;AACzB;AAEA,IAAMQ,KAAAA,GAAO,WAAA;AACb,IAAMW,QAAAA,GAAU,kBAAA;AAChB,IAAMC,QAAAA,GAAU,kBAAA;ACpNhB,IAAM,cAAA,GAAiB,WAAA;AACvB,IAAM,iBAAiB,CAAC,MAAA,EAAQ,OAAO,WAAA,EAAa,SAAA,EAAW,aAAa,YAAY,CAAA;AAExF,IAAM,CAACC,WAAAA,EAAYC,cAAAA,EAAeC,sBAAqB,CAAA,GACrD,iBAA0C,cAAc,CAAA;AAG1D,IAAM,CAAC,sBAAA,EAAwB,oBAAoB,CAAA,GAAI,mBAAmB,cAAA,EAAgB;AACxFA,EAAAA,sBAAAA;AACA,EAAA;AACF,CAAC,CAAA;AACD,IAAM,sBAAsB,sBAAA,EAAuB;AAUnD,IAAM,YAAY1C,eAAAA,CAAM,UAAA;AACtB,EAAA,CAAC,OAAmE,YAAA,KAAiB;AACnF,IAAA,MAAM,EAAE,IAAA,EAAM,GAAG,cAAA,EAAe,GAAI,KAAA;AACpC,IAAA,MAAM,WAAA,GAAc,cAAA;AACpB,IAAA,MAAM,aAAA,GAAgB,cAAA;AACtB,IAAA,uBACEG,GAAAA,CAACqC,WAAAA,CAAW,QAAA,EAAX,EAAoB,KAAA,EAAO,KAAA,CAAM,gBAAA,EAC/B,QAAA,EAAA,IAAA,KAAS,UAAA,mBACRrC,IAAC,qBAAA,EAAA,EAAuB,GAAG,aAAA,EAAe,GAAA,EAAK,YAAA,EAAc,CAAA,mBAE7DA,GAAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,WAAA,EAAa,GAAA,EAAK,YAAA,EAAc,GAE7D,CAAA;AAEJ,EAAA;AACF,CAAA;AAEA,SAAA,CAAU,WAAA,GAAc,cAAA;AAUxB,IAAM,CAAC,sBAAA,EAAwB,wBAAwB,CAAA,GACrD,uBAAmD,cAAc,CAAA;AAEnE,IAAM,CAAC,4BAAA,EAA8B,8BAA8B,CAAA,GAAI,sBAAA;AACrE,EAAA,cAAA;AACA,EAAA,EAAE,aAAa,KAAA;AACjB,CAAA;AAwBA,IAAM,sBAAsBH,eAAAA,CAAM,UAAA;AAChC,EAAA,CAAC,OAA8C,YAAA,KAAiB;AAC9D,IAAA,MAAM;MACJ,KAAA,EAAO,SAAA;AACP,MAAA,YAAA;AACA,MAAA,aAAA,GAAgB,MAAM;AAAC,MAAA,CAAA;MACvB,WAAA,GAAc,KAAA;MACd,GAAG;KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAqB;MAC7C,IAAA,EAAM,SAAA;AACN,MAAA,WAAA,EAAa,YAAA,IAAgB,EAAA;MAC7B,QAAA,EAAU,aAAA;MACV,MAAA,EAAQ;KACT,CAAA;AAED,IAAA,uBACEG,GAAAA;AAAC,MAAA,sBAAA;AAAA,MAAA;AACC,QAAA,KAAA,EAAO,KAAA,CAAM,gBAAA;QACb,KAAA,EAAOH,eAAAA,CAAM,OAAA,CAAQ,MAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC,EAAI,CAAC,KAAK,CAAC,CAAA;QAC1D,UAAA,EAAY,QAAA;QACZ,WAAA,EAAaA,eAAAA,CAAM,WAAA,CAAY,MAAM,WAAA,IAAe,QAAA,CAAS,EAAE,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAEzF,QAAA,QAAA,kBAAAG,GAAAA,CAAC,4BAAA,EAAA,EAA6B,KAAA,EAAO,KAAA,CAAM,kBAAkB,WAAA,EAC3D,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,oBAAA,EAAsB,KAAK,YAAA,EAAc,GAC9D;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAqBA,IAAM,qBAAA,GAAwBH,eAAAA,CAAM,UAAA,CAGlC,CAAC,OAAgD,YAAA,KAAiB;AAClE,EAAA,MAAM;IACJ,KAAA,EAAO,SAAA;AACP,IAAA,YAAA;AACA,IAAA,aAAA,GAAgB,MAAM;AAAC,IAAA,CAAA;IACvB,GAAG;GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAqB;IAC7C,IAAA,EAAM,SAAA;AACN,IAAA,WAAA,EAAa,gBAAgB,EAAC;IAC9B,QAAA,EAAU,aAAA;IACV,MAAA,EAAQ;GACT,CAAA;AAED,EAAA,MAAM,iBAAiBA,eAAAA,CAAM,WAAA;IAC3B,CAAC,SAAA,KAAsB,QAAA,CAAS,CAAC,SAAA,GAAY,OAAO,CAAC,GAAG,SAAA,EAAW,SAAS,CAAC,CAAA;AAC7E,IAAA,CAAC,QAAQ;AACX,GAAA;AAEA,EAAA,MAAM,kBAAkBA,eAAAA,CAAM,WAAA;AAC5B,IAAA,CAAC,SAAA,KACC,QAAA,CAAS,CAAC,SAAA,GAAY,EAAC,KAAM,SAAA,CAAU,MAAA,CAAO,CAACmC,MAAAA,KAAUA,MAAAA,KAAU,SAAS,CAAC,CAAA;AAC/E,IAAA,CAAC,QAAQ;AACX,GAAA;AAEA,EAAA,uBACEhC,GAAAA;AAAC,IAAA,sBAAA;AAAA,IAAA;AACC,MAAA,KAAA,EAAO,KAAA,CAAM,gBAAA;AACb,MAAA,KAAA;MACA,UAAA,EAAY,cAAA;MACZ,WAAA,EAAa,eAAA;MAEb,QAAA,kBAAAA,IAAC,4BAAA,EAAA,EAA6B,OAAO,KAAA,CAAM,gBAAA,EAAkB,aAAa,IAAA,EACxE,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,sBAAA,EAAwB,KAAK,YAAA,EAAc,GAChE;AAAA;AACF,GAAA;AAEJ,CAAC,CAAA;AAUD,IAAM,CAAC,qBAAA,EAAuB,mBAAmB,CAAA,GAC/C,uBAAkD,cAAc,CAAA;AAsBlE,IAAM,gBAAgBH,eAAAA,CAAM,UAAA;AAC1B,EAAA,CAAC,OAAwC,YAAA,KAAiB;AACxD,IAAA,MAAM,EAAE,kBAAkB,QAAA,EAAU,GAAA,EAAK,cAAc,UAAA,EAAY,GAAG,gBAAe,GAAI,KAAA;AACzF,IAAA,MAAM,YAAA,GAAeA,eAAAA,CAAM,MAAA,CAA6B,IAAI,CAAA;AAC5D,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,YAAA,EAAc,YAAY,CAAA;AAC/D,IAAA,MAAM,QAAA,GAAWyC,eAAc,gBAAgB,CAAA;AAC/C,IAAA,MAAM,SAAA,GAAY,aAAa,GAAG,CAAA;AAClC,IAAA,MAAM,iBAAiB,SAAA,KAAc,KAAA;AAErC,IAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,KAAA,CAAM,SAAA,EAAW,CAAC,KAAA,KAAU;AACrE,MAAA,IAAI,CAAC,cAAA,CAAe,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AACzC,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,MAAM,iBAAA,GAAoB,QAAA,EAAS,CAAE,MAAA,CAAO,CAAC,SAAS,CAAC,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AACjF,MAAA,MAAM,YAAA,GAAe,kBAAkB,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,GAAA,CAAI,YAAY,MAAM,CAAA;AACtF,MAAA,MAAM,eAAe,iBAAA,CAAkB,MAAA;AAEvC,MAAA,IAAI,iBAAiB,EAAA,EAAI;AAGzB,MAAA,KAAA,CAAM,cAAA,EAAe;AAErB,MAAA,IAAI,SAAA,GAAY,YAAA;AAChB,MAAA,MAAM,SAAA,GAAY,CAAA;AAClB,MAAA,MAAM,WAAW,YAAA,GAAe,CAAA;AAEhC,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,SAAA,GAAY,YAAA,GAAe,CAAA;AAC3B,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAA,SAAA,GAAY,SAAA;AACd,QAAA;AACF,MAAA,CAAA;AAEA,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,SAAA,GAAY,YAAA,GAAe,CAAA;AAC3B,QAAA,IAAI,YAAY,SAAA,EAAW;AACzB,UAAA,SAAA,GAAY,QAAA;AACd,QAAA;AACF,MAAA,CAAA;AAEA,MAAA,QAAQ,MAAM,GAAA;QACZ,KAAK,MAAA;AACH,UAAA,SAAA,GAAY,SAAA;AACZ,UAAA;QACF,KAAK,KAAA;AACH,UAAA,SAAA,GAAY,QAAA;AACZ,UAAA;QACF,KAAK,YAAA;AACH,UAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,YAAA,IAAI,cAAA,EAAgB;AAClB,cAAA,QAAA,EAAS;YACX,CAAA,MAAO;AACL,cAAA,QAAA,EAAS;AACX,YAAA;AACF,UAAA;AACA,UAAA;QACF,KAAK,WAAA;AACH,UAAA,IAAI,gBAAgB,UAAA,EAAY;AAC9B,YAAA,QAAA,EAAS;AACX,UAAA;AACA,UAAA;QACF,KAAK,WAAA;AACH,UAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,YAAA,IAAI,cAAA,EAAgB;AAClB,cAAA,QAAA,EAAS;YACX,CAAA,MAAO;AACL,cAAA,QAAA,EAAS;AACX,YAAA;AACF,UAAA;AACA,UAAA;QACF,KAAK,SAAA;AACH,UAAA,IAAI,gBAAgB,UAAA,EAAY;AAC9B,YAAA,QAAA,EAAS;AACX,UAAA;AACA,UAAA;AACJ;AAEA,MAAA,MAAM,eAAe,SAAA,GAAY,YAAA;AACjC,MAAA,iBAAA,CAAkB,YAAY,CAAA,CAAG,GAAA,CAAI,OAAA,EAAS,KAAA,EAAM;IACtD,CAAC,CAAA;AAED,IAAA,uBACEtC,GAAAA;AAAC,MAAA,qBAAA;AAAA,MAAA;QACC,KAAA,EAAO,gBAAA;AACP,QAAA,QAAA;QACA,SAAA,EAAW,GAAA;AACX,QAAA,WAAA;QAEA,QAAA,kBAAAA,IAACqC,WAAAA,CAAW,IAAA,EAAX,EAAgB,KAAA,EAAO,gBAAA,EACtB,0BAAArC,GAAAA;UAAC,SAAA,CAAU,GAAA;AAAV,UAAA;YACE,GAAG,cAAA;YACJ,kBAAA,EAAkB,WAAA;YAClB,GAAA,EAAK,YAAA;AACL,YAAA,SAAA,EAAW,WAAW,MAAA,GAAY;AAAA;AACpC,SAAA,EACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAMA,IAAMwC,UAAAA,GAAY,eAAA;AAGlB,IAAM,CAAC,qBAAA,EAAuB,uBAAuB,CAAA,GACnD,uBAAkDA,UAAS,CAAA;AAqB7D,IAAM,gBAAgB3C,eAAAA,CAAM,UAAA;AAC1B,EAAA,CAAC,OAAwC,YAAA,KAAiB;AACxD,IAAA,MAAM,EAAE,gBAAA,EAAkB,KAAA,EAAO,GAAG,oBAAmB,GAAI,KAAA;AAC3D,IAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB2C,UAAAA,EAAW,gBAAgB,CAAA;AACxE,IAAA,MAAM,YAAA,GAAe,wBAAA,CAAyBA,UAAAA,EAAW,gBAAgB,CAAA;AACzE,IAAA,MAAM,gBAAA,GAAmB,oBAAoB,gBAAgB,CAAA;AAC7D,IAAA,MAAM,YAAYzC,OAAA,EAAM;AACxB,IAAA,MAAM,OAAQ,KAAA,IAAS,YAAA,CAAa,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA,IAAM,KAAA;AAC9D,IAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,QAAA,IAAY,KAAA,CAAM,QAAA;AAEpD,IAAA,uBACEC,GAAAA;AAAC,MAAA,qBAAA;AAAA,MAAA;QACC,KAAA,EAAO,gBAAA;AACP,QAAA,IAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AAEA,QAAA,QAAA,kBAAAA,GAAAA;AAAsBwB,UAAAA,KAAAA;AAArB,UAAA;AACC,YAAA,kBAAA,EAAkB,gBAAA,CAAiB,WAAA;AACnC,YAAA,YAAA,EAAYR,UAAS,IAAI,CAAA;YACxB,GAAG,gBAAA;YACH,GAAG,kBAAA;YACJ,GAAA,EAAK,YAAA;AACL,YAAA,QAAA;AACA,YAAA,IAAA;AACA,YAAA,YAAA,EAAc,CAACyB,KAAAA,KAAS;AACtB,cAAA,IAAIA,KAAAA,EAAM;AACR,gBAAA,YAAA,CAAa,WAAW,KAAK,CAAA;cAC/B,CAAA,MAAO;AACL,gBAAA,YAAA,CAAa,YAAY,KAAK,CAAA;AAChC,cAAA;AACF,YAAA;AAAA;AACF;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,aAAA,CAAc,WAAA,GAAcD,UAAAA;AAM5B,IAAM,WAAA,GAAc,iBAAA;AAUpB,IAAM,kBAAkB3C,eAAAA,CAAM,UAAA;AAC5B,EAAA,CAAC,OAA0C,YAAA,KAAiB;AAC1D,IAAA,MAAM,EAAE,gBAAA,EAAkB,GAAG,WAAA,EAAY,GAAI,KAAA;AAC7C,IAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB,cAAA,EAAgB,gBAAgB,CAAA;AAC7E,IAAA,MAAM,WAAA,GAAc,uBAAA,CAAwB,WAAA,EAAa,gBAAgB,CAAA;AACzE,IAAA,uBACEG,GAAAA;MAAC,SAAA,CAAU,EAAA;AAAV,MAAA;AACC,QAAA,kBAAA,EAAkB,gBAAA,CAAiB,WAAA;QACnC,YAAA,EAAYgB,SAAAA,CAAS,YAAY,IAAI,CAAA;QACrC,eAAA,EAAe,WAAA,CAAY,WAAW,EAAA,GAAK,MAAA;QAC1C,GAAG,WAAA;QACJ,GAAA,EAAK;AAAA;AACP,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,eAAA,CAAgB,WAAA,GAAc,WAAA;AAM9B,IAAMkB,aAAAA,GAAe,kBAAA;AAUrB,IAAM,mBAAmBrC,eAAAA,CAAM,UAAA;AAC7B,EAAA,CAAC,OAA2C,YAAA,KAAiB;AAC3D,IAAA,MAAM,EAAE,gBAAA,EAAkB,GAAG,YAAA,EAAa,GAAI,KAAA;AAC9C,IAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB,cAAA,EAAgB,gBAAgB,CAAA;AAC7E,IAAA,MAAM,WAAA,GAAc,uBAAA,CAAwBqC,aAAAA,EAAc,gBAAgB,CAAA;AAC1E,IAAA,MAAM,kBAAA,GAAqB,8BAAA,CAA+BA,aAAAA,EAAc,gBAAgB,CAAA;AACxF,IAAA,MAAM,gBAAA,GAAmB,oBAAoB,gBAAgB,CAAA;AAC7D,IAAA,uBACElC,IAACqC,WAAAA,CAAW,QAAA,EAAX,EAAoB,KAAA,EAAO,gBAAA,EAC1B,0BAAArC,GAAAA;AAAsBmC,MAAAA,QAAAA;AAArB,MAAA;AACC,QAAA,eAAA,EAAgB,WAAA,CAAY,IAAA,IAAQ,CAAC,kBAAA,CAAmB,WAAA,IAAgB,MAAA;AACxE,QAAA,kBAAA,EAAkB,gBAAA,CAAiB,WAAA;AACnC,QAAA,EAAA,EAAI,WAAA,CAAY,SAAA;QACf,GAAG,gBAAA;QACH,GAAG,YAAA;QACJ,GAAA,EAAK;AAAA;AACP,KAAA,EACF,CAAA;AAEJ,EAAA;AACF,CAAA;AAEA,gBAAA,CAAiB,WAAA,GAAcD,aAAAA;AAM/B,IAAMQ,aAAAA,GAAe,kBAAA;AASrB,IAAM,mBAAmB7C,eAAAA,CAAM,UAAA;AAC7B,EAAA,CAAC,OAA2C,YAAA,KAAiB;AAC3D,IAAA,MAAM,EAAE,gBAAA,EAAkB,GAAG,YAAA,EAAa,GAAI,KAAA;AAC9C,IAAA,MAAM,gBAAA,GAAmB,mBAAA,CAAoB,cAAA,EAAgB,gBAAgB,CAAA;AAC7E,IAAA,MAAM,WAAA,GAAc,uBAAA,CAAwB6C,aAAAA,EAAc,gBAAgB,CAAA;AAC1E,IAAA,MAAM,gBAAA,GAAmB,oBAAoB,gBAAgB,CAAA;AAC7D,IAAA,uBACE1C,GAAAA;AAAsBoC,MAAAA,QAAAA;AAArB,MAAA;QACC,IAAA,EAAK,QAAA;AACL,QAAA,iBAAA,EAAiB,WAAA,CAAY,SAAA;AAC7B,QAAA,kBAAA,EAAkB,gBAAA,CAAiB,WAAA;QAClC,GAAG,gBAAA;QACH,GAAG,YAAA;QACJ,GAAA,EAAK,YAAA;QACL,KAAA,EAAO;AACL,UAAA,CAAC,kCAAyC,GAAG,yCAAA;AAC7C,UAAA,CAAC,iCAAwC,GAAG,wCAAA;AAC5C,UAAA,GAAG,KAAA,CAAM;AACX;AAAA;AACF,KAAA;AAEJ,EAAA;AACF,CAAA;AAEA,gBAAA,CAAiB,WAAA,GAAcM,aAAAA;AAI/B,SAAS1B,UAAS,IAAA,EAAgB;AAChC,EAAA,OAAO,OAAO,MAAA,GAAS,QAAA;AACzB;AAEA,IAAMQ,MAAAA,GAAO,SAAA;AACb,IAAMC,KAAAA,GAAO,aAAA;AACb,IAAM,MAAA,GAAS,eAAA;AACf,IAAMU,SAAAA,GAAU,gBAAA;AAChB,IAAMC,SAAAA,GAAU,gBAAA;AC7bhB,IAAM,yBAAA,GAA4BvC,gBAAM,aAAA,CAGrC,EAAE,SAAS,SAAA,EAAW,iBAAA,EAAmB,OAAO,CAAA;AAE5C,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,OAAA,EAAS,iBAAA,EAAkB,GAAIA,eAAAA,CAAM,WAAW,yBAAyB,CAAA;AACjF,EAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAqB,eAAA;AACrB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,SAAA,GACJ,YAAY,MAAA,GACR;AAAA,IACE,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA;AAAA,GAC7C,GACA,YAAY,OAAA,GACV;AAAA,IACE,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA;AAAA,GAC7C,GACA;AAAA,IACE,YAAY,KAAA,CAAM,MAAA;AAAA,IAClB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,IACrC,YAAA,EAAc,CAAA;AAAA,IACd,cAAA,EAAgB,WAAA;AAAA,IAChB,oBAAA,EAAsB,WAAA;AAAA,IACtB,SAAA,EAAW;AAAA,GACb;AAER,EAAA,uBACEO,IAAAA;AAAA,IAAoBqB,KAAAA;AAAA,IAAnB;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,mCAAA;AAAA,QACA,QAAA,IAAY,gCAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAzB,GAAAA,CAAoB,MAAA,EAAnB,EAA0B,SAAA,EAAU,QACnC,QAAA,kBAAAI,IAAAA;AAAA,UAAoBuC,SAAAA;AAAA,UAAnB;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,+FAAA;AAAA,cACA,mBAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,YACpC,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,cAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,UAAA,GAAa,wBAAA;AAAA,YACtD,CAAA;AAAA,YACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,cAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,UAAA,GAAa,aAAA;AAAA,YACtD,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA,oBACC3C,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,eAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAM;AAAA,kBAEjC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,8BAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kEAAkE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,cACzF,gCACCA,GAAAA;AAAA,gBAACG,MAAAA,CAAO,IAAA;AAAA,gBAAP;AAAA,kBACC,SAAA,EAAU,oFAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,IAAA,EAAK;AAAA,kBAEjC,QAAA,kBAAAH,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,8EAAA,EAA+E;AAAA;AAAA,kCAGxGA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,sEAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,IAAA,EAAK;AAAA,kBAEjC,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,8EAAA,EAA+E;AAAA;AAAA;AACxG;AAAA;AAAA,SAEJ,EACF,CAAA;AAAA,wBAEAA,GAAAA;AAAA,UAAoB4C,SAAAA;AAAA,UAAnB;AAAA,YACC,SAAA,EAAU,mGAAA;AAAA,YAEV,QAAA,kBAAA5C,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,8DAAA;AAAA,gBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAM;AAAA,gBAEjC;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAMO,SAAS,cAAA,CAAe;AAAA,EAC7B,QAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,YAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA,GAAU,SAAA;AAAA,EACV,iBAAA,GAAoB,KAAA;AAAA,EACpB;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,QAAQ,cAAA,EAAe;AAE7B,EAAA,MAAM,YAAA,GACJ,YAAY,MAAA,GACR;AAAA,IACE,YAAY,KAAA,CAAM,MAAA;AAAA,IAClB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,IACrC,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU,QAAA;AAAA,IACV,cAAA,EAAgB,WAAA;AAAA,IAChB,oBAAA,EAAsB,WAAA;AAAA,IACtB,SAAA,EAAW;AAAA,MAEb,EAAC;AAGP,EAAA,MAAM,SAAA,GACJ,SAAS,UAAA,GACL;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,YAAA,EAAe,gBAAyC,EAAC;AAAA,IACzD,KAAA;AAAA,IACA;AAAA,GACF,GACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,WAAA;AAAA,IACA,cAAe,YAAA,IAAuC,EAAA;AAAA,IACtD,KAAA;AAAA,IACA;AAAA,GACF;AAEN,EAAA,uBACEA,GAAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,EAAE,OAAA,EAAS,iBAAA,IACpD,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,cACV,QAAA,kBAAAA,GAAAA;AAAA,IAAoB4B,MAAAA;AAAA,IAAnB;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,YAAY,SAAA,IAAa,qBAAA;AAAA,QACzB,YAAY,OAAA,IAAW,QAAA;AAAA,QACvB;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,KAEL,CAAA,EACF,CAAA;AAEJ;ACtMO,IAAM,aAAA,GAAsBiB,MAAA,CAAA,UAAA;AAAA,EACjC,SAASC,cAAAA,CACP;AAAA,IACE,IAAA;AAAA,IACA,IAAA,GAAO,WAAA;AAAA,IACP,KAAA,GAAQ,EAAA;AAAA,IACR,UAAA,EAAY,cAAA;AAAA,IACZ,UAAA,GAAa,QAAA;AAAA,IACb,UAAA,GAAa,KAAA;AAAA,IACb,UAAA;AAAA,IACA,iBAAA,GAAoB,KAAA;AAAA,IACpB,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,IAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,IAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,iBAAiB,CAAC,UAAA;AAE/D,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUD,gBAAS,CAAC,CAAA;AAC1D,IAAA,MAAM,WAAA,GAAoBA,cAAO,IAAI,CAAA;AACrC,IAAA,MAAM,eAAA,GAAwBA,cAAO,KAAK,CAAA;AAG1C,IAAA,MAAM,WAAA,GAAoBA,eAAQ,MAAM;AACtC,MAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,CAAE,MAAA;AAAA,MAC7B;AACA,MAAA,OAAO,IAAA,CAAK,MAAA;AAAA,IACd,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAGf,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,IAAA,KAAS,YAAY,OAAA,EAAS;AAChC,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,OAAO,CAAA,EAAG;AAEzC,UAAA,gBAAA,CAAiB,CAAC,CAAA;AAClB,UAAA,eAAA,CAAgB,OAAA,GAAU,KAAA;AAAA,QAC5B;AACA,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB;AAAA,IACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,IAAiB,WAAA,EAAa;AAEpD,MAAA,MAAM,QAAA,GAAW,YAAY,MAAM;AACjC,QAAA,gBAAA,CAAiB,CAAC,IAAA,KAAS;AACzB,UAAA,MAAM,OAAO,IAAA,GAAO,CAAA;AACpB,UAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,YAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,UACxB;AACA,UAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,WAAW,CAAA;AAAA,QACnC,CAAC,CAAA;AAAA,MACH,GAAG,KAAK,CAAA;AAER,MAAA,OAAO,MAAM,cAAc,QAAQ,CAAA;AAAA,IACrC,GAAG,CAAC,aAAA,EAAe,KAAA,EAAO,WAAA,EAAa,aAAa,CAAC,CAAA;AAGrD,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,gBAAA,CAAiB,WAAW,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA,EAAG,CAAC,aAAA,EAAe,WAAW,CAAC,CAAA;AAG/B,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,iBAAiB,WAAA,IAAe,CAAC,eAAA,CAAgB,OAAA,IAAW,cAAc,CAAA,EAAG;AAC/E,QAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAC1B,QAAA,UAAA,IAAa;AAAA,MACf;AAAA,IACF,CAAA,EAAG,CAAC,aAAA,EAAe,WAAA,EAAa,UAAU,CAAC,CAAA;AAG3C,IAAA,MAAM,WAAA,GAAoBA,eAAQ,MAAM;AACtC,MAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AACjC,QAAA,OAAO,OAAO,KAAA,CAAM,CAAA,EAAG,aAAa,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,MAC/C;AACA,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,aAAa,CAAA;AAAA,IACpC,CAAA,EAAG,CAAC,IAAA,EAAM,aAAA,EAAe,IAAI,CAAC,CAAA;AAE9B,IAAA,MAAM,WAAA,GAAc,gBAAgB,WAAA,IAAe,aAAA;AACnD,IAAA,MAAM,gBAAgB,cAAA,IAAkB,WAAA;AAExC,IAAA,MAAM,OAAA,GAAU,UAAA,GAAa,UAAA,CAAW,WAAW,CAAA,GAAI,WAAA;AAEvD,IAAA,uBACEzC,KAAC,MAAA,EAAA,EAAK,GAAA,EAAU,WAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,MACA,iCACCJ,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,eAAA;AAAA,UACV,aAAA,EAAY,MAAA;AAAA,UACZ,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,UAAA,EAAY,KAAA;AAAA,YACZ,KAAA,EAAO,OAAO,MAAA,CAAO;AAAA,WACvB;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AC9G5B,IAAM,WAAW,sBACfI,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,aAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,cAAA,EAAe,aAAY,KAAA,EAC5F,QAAA,EAAA;AAAA,kBAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,KAAA,EAAM,GAAA,EAAI,MAAA,EAAO,GAAA,EAAI,EAAA,EAAG,KAAA,EAAM,CAAA;AAAA,kBAChDA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0EAAA,EAA2E;AAAA,CAAA,EACrF,CAAA;AAGF,IAAM,SAAA,GAAY,sBAChBA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAY,GAAA,EAC5F,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mBAAA,EAAoB,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EAAQ,CAAA,EAC3E,CAAA;AAOF,SAAS,kBAAA,CAAmB,MAAc,QAAA,EAAkB;AAC1D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU+C,gBAAwB,IAAI,CAAA;AAE1D,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,CAAC,YAAY;AACX,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,OAAO,OAAO,CAAA;AAClC,QAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,UAAA,CAAW,IAAA,EAAM;AAAA,UAC1C,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACR,CAAA;AACD,QAAA,IAAI,CAAC,SAAA,EAAW,OAAA,CAAQ,MAAM,CAAA;AAAA,MAChC,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA,GAAG;AACH,IAAA,OAAO,MAAM;AAAE,MAAA,SAAA,GAAY,IAAA;AAAA,IAAM,CAAA;AAAA,EACnC,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEnB,EAAA,OAAO,IAAA;AACT;AAQA,SAAS,UAAA,CAAW,EAAE,OAAA,EAAS,WAAA,EAAY,EAAkD;AAC3F,EAAA,uBACE/C,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,wDAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO,YAAY,IAAA,CAAK,IAAA;AAAA,QACxB,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,WAAA;AAAA,QACZ,WAAA,EAAa,CAAA,UAAA,EAAa,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,EAAA;AAAA,OACjD;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAMO,IAAM,SAAA,GAAkB+C,MAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CACP;AAAA,IACE,IAAA;AAAA,IACA,QAAA,GAAW,MAAA;AAAA,IACX,KAAA;AAAA,IACA,eAAA,GAAkB,KAAA;AAAA,IAClB,cAAA,GAAiB,IAAA;AAAA,IACjB,cAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUD,gBAAS,KAAK,CAAA;AAEhD,IAAA,MAAM,eAAA,GAAkB,kBAAA,CAAmB,IAAA,EAAM,QAAQ,CAAA;AACzD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,IAAA,MAAM,YAAA,GAAqBA,eAAQ,MAAM,IAAI,IAAI,cAAc,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAElF,IAAA,MAAM,UAAA,GAAmBA,mBAAY,YAAY;AAC/C,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,MACzC,CAAA,CAAA,MAAQ;AAAA,MAAkC;AAAA,IAC5C,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,IAAA,MAAM,aAAa,KAAA,IAAS,cAAA;AAC5B,IAAA,MAAM,OAAA,GAAU,WAAW,iDAAA,GAAoD,EAAA;AAC/E,IAAA,MAAM,MAAA,GAAS,aAAa,IAAA,GACxB,OAAO,cAAc,QAAA,GAAW,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,GAAO,SAAA,GACnD,MAAA;AAEJ,IAAA,uBACE3C,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,qCAAA,EAAuC,SAAS,CAAA;AAAA,QAC9D,KAAA,EAAO;AAAA,UACL,YAAY,WAAA,CAAY,MAAA;AAAA,UACxB,WAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAa,OAAA;AAAA,UACb,aAAa,WAAA,CAAY,UAAA;AAAA,UACzB,GAAG;AAAA,SACL;AAAA,QAGC,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCA,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,sDAAA;AAAA,cACV,OAAO,EAAE,UAAA,EAAY,YAAY,cAAA,EAAgB,WAAA,EAAa,YAAY,UAAA,EAAW;AAAA,cAErF,QAAA,EAAA;AAAA,gCAAAJ,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,4BAAA;AAAA,oBACV,OAAO,EAAE,KAAA,EAAO,QAAQ,WAAA,CAAY,IAAA,CAAK,QAAQ,aAAA,EAAc;AAAA,oBAE9D,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA,iBACZ;AAAA,gBACC,kCACCI,IAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAS,UAAA;AAAA,oBACT,SAAA,EAAU,0FAAA;AAAA,oBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,GAAS,YAAY,MAAA,CAAO,OAAA,GAAU,WAAA,CAAY,IAAA,CAAK,IAAA,EAAK;AAAA,oBAC5E,YAAA,EAAY,SAAS,QAAA,GAAW,WAAA;AAAA,oBAE/B,QAAA,EAAA;AAAA,sBAAA,MAAA,mBAASJ,GAAAA,CAAC,SAAA,EAAA,EAAU,CAAA,mBAAKA,IAAC,QAAA,EAAA,EAAS,CAAA;AAAA,sCACpCA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,GAAS,WAAW,MAAA,EAAO;AAAA;AAAA;AAAA;AACpC;AAAA;AAAA,WAEJ;AAAA,0BAIFA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAW,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAO,EAC/C,6BAAmB,CAAC,eAAA,IAAmB,YAAA,CAAa,IAAA,KAAS,oBAC5DA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,OAAO,CAAA;AAAA,cACxC,KAAA,EAAO,EAAE,SAAA,EAAW,QAAA,GAAW,SAAY,MAAA,EAAO;AAAA,cAClD,uBAAA,EAAyB,EAAE,MAAA,EAAQ,eAAA;AAAgB;AAAA,cAEnD,eAAA,mBACFI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,eAAA,IAAmB,eAAe,OAAO,CAAA;AAAA,gBAC1E,uBAAA,EAAyB,EAAE,MAAA,EAAQ,eAAA;AAAgB;AAAA,aACrD;AAAA,4BACAA,GAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,KAAA;AAAA,gBACA,eAAA;AAAA,gBACA,YAAA;AAAA,gBACA;AAAA;AAAA;AACF,WAAA,EACF,oBAEAA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,KAAA;AAAA,cACA,eAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA;AAAA,cACA;AAAA;AAAA,WACF,EAEJ,CAAA;AAAA,UAGC,QAAA,IAAY,QAAA,KAAa,MAAA,oBACxBA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,0GAAA;AAAA,cACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,IAAA,EAAK;AAAA,cAErC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAMxB,SAAS,gBAAA,CAAiB;AAAA,EACxB,KAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAuC,KAAA,EAAO,EAAE,UAAA,EAAY,EAAA,EAAG,EAC3E,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,IAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,mBAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ,EAAA;AAAA,UACR,UAAA,EAAY,aAAa,GAAA,CAAI,CAAC,IAAI,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAA,CAAA,GAAO;AAAA,SACxE;AAAA,QAEC,6CACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,wDAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,WAAA,EAAY;AAAA,YAE7F,QAAA,EAAA;AAAA;AAAA;AACH,OAAA;AAAA,MAbG;AAAA,KAeP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAMA,SAAS,gBAAA,CAAiB;AAAA,EACxB,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,eAAA;AAAA,EAAiB,YAAA;AAAA,EAAc,QAAA;AAAA,EAAU;AACxD,CAAA,EAOG;AACD,EAAA,MAAM,QAAA,GAAgC;AAAA,IACpC,SAAA,EAAW,WAAW,MAAA,GAAY,MAAA;AAAA,IAClC,UAAA,EAAY,WAAW,UAAA,GAAa,KAAA;AAAA,IACpC,SAAA,EAAW,WAAW,WAAA,GAAc;AAAA,GACtC;AAEA,EAAA,IAAI,CAAC,eAAA,IAAmB,YAAA,CAAa,IAAA,KAAS,CAAA,EAAG;AAC/C,IAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAU,KAAA,EAAO,QAAA,EAC9B,0BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,OAAA,EAAQ,EAC9E,gBACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU,OAAO,QAAA,EAC9B,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,6BAAA,EACb,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AACtB,IAAA,MAAM,IAAI,CAAA,GAAI,CAAA;AACd,IAAA,uBACEI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,MAAA;AAAA,QACV,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAA,CAAA,GAAO,MAAA,EAAU;AAAA,QAExF,QAAA,EAAA;AAAA,UAAA,eAAA,oBAAmBJ,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,GAAG,WAAA,EAA0B,CAAA;AAAA,0BACtEA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,IAAA,CAAK,OAAA,EAAQ,EACpE,kBAAQ,IAAA,EACX;AAAA;AAAA,OAAA;AAAA,MAPK;AAAA,KAQP;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;ACjTA,IAAMiD,QAAAA,GAA+D;AAAA,EACnE,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAMA,IAAM,QAAA,GAAW,sBAAA;AAEjB,SAAS,eAAA,GAAkB;AACzB,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACrC,EAAA,IAAI,QAAA,CAAS,cAAA,CAAe,QAAQ,CAAA,EAAG;AACvC,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,EAAA,KAAA,CAAM,EAAA,GAAK,QAAA;AACX,EAAA,KAAA,CAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA,CAAA;AAKpB,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,KAAK,CAAA;AACjC;AAMO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,EAAA,GAAKA,SAAQ,IAAI,CAAA;AACvB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,WAAiBC,MAAA,CAAA,KAAA,EAAM;AAE7B,EAAMA,iBAAU,MAAM;AACpB,IAAA,eAAA,EAAgB;AAAA,EAClB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,SAAS,EAAA,GAAK,CAAA;AACpB,EAAA,MAAM,SAAS,EAAA,GAAK,IAAA;AACpB,EAAA,MAAM,UAAU,EAAA,GAAK,IAAA;AACrB,EAAA,MAAM,SAAS,EAAA,GAAK,GAAA;AACpB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAI,CAAA;AAGrC,EAAA,MAAM,SAAA,GAAY,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AAChC,EAAA,MAAM,QAAA,GAAW,aAAa,GAAA,GAAM,GAAA,CAAA;AAEpC,EAAA,MAAM,UAAA,GAAa,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,OAAA;AACjC,EAAA,MAAM,SAAA,GAAY,cAAc,GAAA,GAAM,GAAA,CAAA;AAEtC,EAAA,MAAM,SAAA,GAAY,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AAChC,EAAA,MAAM,QAAA,GAAW,aAAa,GAAA,GAAM,GAAA,CAAA;AAEpC,EAAA,MAAM,eAAe,QAAA,IAAY,IAAA;AACjC,EAAA,MAAM,YAAY,KAAA,IAAS,IAAA;AAC3B,EAAA,MAAM,cAAc,OAAA,KAAY,WAAA;AAChC,EAAA,MAAM,YAAY,OAAA,KAAY,SAAA;AAG9B,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAI,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,EAAA,EAAI,EAAA,GAAK,GAAG,CAAC,CAAA;AAExD,EAAA,uBACE9C,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,0DAAA,EAA4D,SAAS,CAAA;AAAA,MACnF,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,UAAU,YAAA,GAAe,CAAA,QAAA,EAAW,KAAK,KAAA,CAAM,QAAA,GAAY,GAAG,CAAC,CAAA,CAAA,CAAA,GAAM,SAAA,CAAA;AAAA,MAEjF,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,EAAQ,EAAA;AAAA,YACR,OAAA,EAAS,CAAA,IAAA,EAAO,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,YACxB,IAAA,EAAK,MAAA;AAAA,YACL,aAAA,EAAY,MAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,UACC,QAAA,kBAAAI,IAAAA,CAAC,YAAO,EAAA,EAAI,CAAA,KAAA,EAAQ,QAAQ,CAAA,CAAA,EAC1B,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAAC,gBAAA,EAAA,EAAe,YAAA,EAAc,IAAA,CAAK,GAAA,CAAI,GAAG,EAAA,GAAK,IAAI,CAAA,EAAG,MAAA,EAAO,MAAA,EAAO,CAAA;AAAA,gCACpEI,KAAC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,kCAAAJ,GAAAA,CAAC,aAAA,EAAA,EAAY,EAAA,EAAG,MAAA,EAAO,CAAA;AAAA,kCACvBA,GAAAA,CAAC,aAAA,EAAA,EAAY,EAAA,EAAG,eAAA,EAAgB;AAAA,iBAAA,EAClC;AAAA,eAAA,EACF,CAAA,EACF,CAAA;AAAA,8BAGAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,MAAA;AAAA,kBACJ,EAAA,EAAI,MAAA;AAAA,kBACJ,CAAA,EAAG,MAAA;AAAA,kBACH,MAAA,EAAO,SAAA;AAAA,kBACP,WAAA,EAAa,OAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,eAAA,EAAiB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,YAAY,QAAQ,CAAA,CAAA;AAAA,kBACpD,MAAA,EAAQ,aAAa,QAAQ,CAAA,CAAA,CAAA;AAAA,kBAC7B,KAAA,EACE,aAAA,GACI,EAAC,GACD;AAAA,oBACE,eAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,EAAA,CAAA;AAAA,oBACtC,SAAA,EAAW;AAAA;AACb;AAAA,eAER;AAAA,cAGC,CAAC,6BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,MAAA;AAAA,kBACJ,EAAA,EAAI,MAAA;AAAA,kBACJ,CAAA,EAAG,OAAA;AAAA,kBACH,MAAA,EAAO,SAAA;AAAA,kBACP,aAAa,OAAA,GAAU,GAAA;AAAA,kBACvB,aAAA,EAAc,OAAA;AAAA,kBACd,eAAA,EAAiB,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,aAAa,SAAS,CAAA,CAAA;AAAA,kBACvD,MAAA,EAAQ,aAAa,QAAQ,CAAA,CAAA,CAAA;AAAA,kBAC7B,KAAA,EACE,aAAA,GACI,EAAC,GACD;AAAA,oBACE,eAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,EAAA,CAAA;AAAA,oBACtC,SAAA,EAAW;AAAA;AACb;AAAA,eAER;AAAA,cAID,+BACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,MAAA;AAAA,kBACJ,EAAA,EAAI,MAAA;AAAA,kBACJ,CAAA,EAAG,MAAA;AAAA,kBACH,MAAA,EAAO,SAAA;AAAA,kBACP,aAAa,OAAA,GAAU,GAAA;AAAA,kBACvB,aAAA,EAAc,OAAA;AAAA,kBACd,eAAA,EAAiB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,YAAY,QAAQ,CAAA,CAAA;AAAA,kBACpD,MAAA,EAAQ,aAAa,QAAQ,CAAA,CAAA,CAAA;AAAA,kBAC7B,KAAA,EACE,aAAA,GACI,EAAC,GACD;AAAA,oBACE,eAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,EAAA,CAAA;AAAA,oBACtC,SAAA,EAAW;AAAA;AACb;AAAA,eAER;AAAA,cAID,+BACCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAG,MAAA;AAAA,kBACH,CAAA,EAAG,MAAA;AAAA,kBACH,UAAA,EAAW,QAAA;AAAA,kBACX,gBAAA,EAAiB,SAAA;AAAA,kBACjB,IAAA,EAAK,SAAA;AAAA,kBACL,UAAA,EAAW,WAAA;AAAA,kBACX,QAAA;AAAA,kBACA,UAAA,EAAW,MAAA;AAAA,kBAEV,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,QAAA,GAAY,GAAG;AAAA;AAAA,eAC7B,GAEA,CAAC,SAAA,oBACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,MAAA;AAAA,kBACJ,EAAA,EAAI,MAAA;AAAA,kBACJ,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,KAAK,IAAI,CAAA;AAAA,kBAC1B,IAAA,EAAK,SAAA;AAAA,kBACL,OACE,aAAA,GACI,EAAC,GACD,EAAE,WAAW,qCAAA;AAAsC;AAAA;AAE3D;AAAA;AAAA,SAGN;AAAA,QAGC,6BACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,eAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,WAAA;AAAA,cACZ,QAAA,EAAU,aAAA;AAAA,cACV,aAAA,EAAe,WAAA;AAAA,cACf,aAAA,EAAe;AAAA,aACjB;AAAA,YACA,aAAA,EAAY,MAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AC/MA,IAAM,cAAA,GAAiBK,GAAAA;AAAA,EACrB,wFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,WAAA;AAAA,QACJ,EAAA,EAAI,WAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAMA,IAAM,YAAA,GAAe;AAAA,EACnB,MAAA,EAAQ,gBAAA;AAAA,EACR,OAAA,EAAS,gBAAA;AAAA,EACT,IAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,MAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,OAAO,SAAA,GAAY,SAAA;AAC7D,EAAA,MAAM,MAAA,GAAS,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,OAAO,oBAAA,GAAuB,wBAAA;AAEvE,EAAA,uBACEL,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,2DAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAa,MAAM;AAAA,OACrB;AAAA,MACA,KAAA,EACE,MAAA,KAAW,QAAA,IAAY,CAAC,aAAA,GACpB;AAAA,QACE,SAAA,EAAW,6DAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACb,GACA;AAAA;AAAA,GAER;AAEJ;AA8BO,IAAM,cAAcH,eAAAA,CAAM,UAAA;AAAA,EAC/B,SAASsD,YAAAA,CACP;AAAA,IACE,SAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,GAAA;AAAA,IACA,GAAA,GAAM,EAAA;AAAA,IACN,QAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,gBAAgB,IAAA,IAAQ,IAAA;AAC9B,IAAA,MAAM,YAAY,QAAA,GACd;AAAA,MACE,WAAW,CAAA,uCAAA,EAA0C,SAAA,IAAa,uBAAuB,CAAA,WAAA,EAAc,aAAa,uBAAuB,CAAA,EAAA;AAAA,KAC7I,GACA,MAAA;AAEJ,IAAA,uBACE/C,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,QAChD,KAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAiBoB,MAAAA;AAAA,YAAhB;AAAA,cACC,WAAW,EAAA,CAAG,cAAA,CAAe,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,cACtC,KAAA,EAAO;AAAA,gBACL,GAAG,SAAA;AAAA,gBACH,UAAA,EAAY,mBAAA;AAAA,gBACZ,MAAA,EAAQ;AAAA,eACV;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAxB,GAAAA;AAAA,kBAAiB,KAAA;AAAA,kBAAhB;AAAA,oBACC,GAAA;AAAA,oBACA,GAAA;AAAA,oBACA,SAAA,EAAU;AAAA;AAAA,iBACZ;AAAA,gCACAA,GAAAA;AAAA,kBAAiB,QAAA;AAAA,kBAAhB;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,mGAAA;AAAA,sBACA,iBAAiB,aAAa,CAAA;AAAA,sBAC9B;AAAA,qBACF;AAAA,oBACA,OAAA,EAAS,MAAM,GAAA,GAAM,CAAA;AAAA,oBAEpB,sBAAY,GAAA,EAAK,MAAA,CAAO,CAAC,CAAA,EAAG,aAAY,IAAK;AAAA;AAAA;AAChD;AAAA;AAAA,WACF;AAAA,UACC,0BAAUA,GAAAA,CAAC,SAAA,EAAA,EAAU,MAAA,EAAgB,MAAM,aAAA,EAAe,CAAA;AAAA,0BAC3DA,IAAC,OAAA,EAAA,EAAO,QAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,EAKN;AAAA;AAAA;AAAA,KACJ;AAAA,EAEJ;AACF;ACzKA,IAAM,kBAAA,GAAqBK,GAAAA;AAAA,EACzB,wHAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,oDAAA;AAAA,QACF,OAAA,EACE,6DAAA;AAAA,QACF,OAAA,EACE,uDAAA;AAAA,QACF,KAAA,EACE,8CAAA;AAAA,QACF,IAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,wBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAkCO,SAAS,UAAA,CAAW;AAAA,EACzB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,WAAA,GAAc,SAAS,CAAC,aAAA;AAE9B,EAAA,uBACED,IAAAA;AAAA,IAACD,MAAAA,CAAO,IAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,GAAG,kBAAA,CAAmB,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC9D,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,GAAA,EAAI;AAAA,MAClC,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,CAAA;AAAA,QACT,KAAA,EAAO,CAAA;AAAA,QACP,GAAI,cAAc,EAAE,SAAA,EAAW,CAAC,sBAAA,EAAwB,uBAAuB,CAAA,EAAE,GAAI;AAAC,OACxF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,QAAA,EAAU,GAAA;AAAA,QACV,GAAI,WAAA,GACA;AAAA,UACE,SAAA,EAAW;AAAA,YACT,QAAA,EAAU,GAAA;AAAA,YACV,MAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAM;AAAA;AACR,YAEF;AAAC,OACP;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQH,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAyC,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,QACtE,QAAA;AAAA,QACA,WAAA,oBACCI,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,2BAAA,EACd,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oFAAA,EAAqF,CAAA;AAAA,0BACrGA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0DAAA,EAA2D;AAAA,SAAA,EAC7E;AAAA;AAAA;AAAA,GAEJ;AAEJ;ACvGA,IAAM,qBAAA,GAAwBK,GAAAA;AAAA,EAC5B;AAAA,IACE,iFAAA;AAAA,IACA,wEAAA;AAAA,IACA,+CAAA;AAAA,IACA,oDAAA;AAAA,IACA,6EAAA;AAAA,IACA,iDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,+IAAA;AAAA,QACF,KAAA,EACE,uJAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gCAAA;AAAA,QACT,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AA0CO,IAAM,aAAA,GAAsB+C,MAAA,CAAA,UAAA,CAGjC,SAASC,cAAAA,CACT;AAAA,EACE,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,EAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,WAAA,GAAoBD,cAAmC,IAAI,CAAA;AACjE,EAAA,MAAM,aAAmBA,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,UAAU,EAAA,IAAM,UAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,YAAA,GAAe,QAAQ,OAAA,GAAU,OAAA;AAEvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,gBAAS,MAAM;AACrD,IAAA,MAAM,OAAA,GAAW,SAAS,YAAA,IAAgB,EAAA;AAC1C,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,EACjB,CAAC,CAAA;AAED,EAAA,MAAM,gBAAA,GAAyBA,MAAA,CAAA,WAAA,CAAY,CAAC,EAAA,KAA4B;AACtE,IAAA,EAAA,CAAG,MAAM,MAAA,GAAS,MAAA;AAClB,IAAA,EAAA,CAAG,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,EAAA,CAAG,YAAY,CAAA,EAAA,CAAA;AAAA,EACtC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAqBA,MAAA,CAAA,WAAA;AAAA,IACzB,CAAC,CAAA,KAA8C;AAC7C,MAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,QAAA,YAAA,CAAa,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACpC;AACA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,gBAAA,CAAiB,EAAE,MAAM,CAAA;AAAA,MAC3B;AACA,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,WAAW,gBAAgB;AAAA,GAC/D;AAGA,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,CAAE,MAAM,CAAA;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,UAAA,IAAc,YAAY,OAAA,EAAS;AACrC,MAAA,gBAAA,CAAiB,YAAY,OAAO,CAAA;AAAA,IACtC;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAEjC,EAAA,MAAM,OAAA,GAAgBA,MAAA,CAAA,WAAA;AAAA,IACpB,CAAC,EAAA,KAAmC;AAClC,MAAA,WAAA,CAAY,OAAA,GAAU,EAAA;AACtB,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,EAAE,CAAA;AAAA,MACR,WAAW,GAAA,EAAK;AACd,QAAC,IAA2D,OAAA,GAAU,EAAA;AAAA,MACxE;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,uBACEhD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,kBAAkB,CAAA,EAE/C,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCJ,GAAAA;AAAA,MAACG,MAAAA,CAAO,KAAA;AAAA,MAAP;AAAA,QACC,OAAA,EAAS,OAAA;AAAA,QACT,SAAA,EAAU,+EAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,QAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAE3B,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAIFH,GAAAA;AAAA,MAACG,MAAAA,CAAO,QAAA;AAAA,MAAP;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAW,EAAA;AAAA,UACT,qBAAA,CAAsB,EAAE,OAAA,EAAS,YAAA,EAAc,MAAM,CAAA;AAAA,UACrD,UAAA,IAAc,iBAAA;AAAA,UACd;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,QAEN,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,QAC/B,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,IAAA,KAAS,EAAC;AAAA,QACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,QAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QACxC,UAAA,EACE,aAAA,GACI,EAAE,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI,EAAE,GAC9C,EAAC;AAAA,QAEN,GAAG;AAAA;AAAA,KACN;AAAA,oBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAEZ,QAAA,EAAA;AAAA,QAAA,WAAA,IAAe,CAAC,yBACfJ,GAAAA;AAAA,UAACG,MAAAA,CAAO,CAAA;AAAA,UAAP;AAAA,YACC,EAAA,EAAI,aAAA;AAAA,YACJ,SAAA,EAAU,+BAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,YACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,YAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,YAEvC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAID,yBACCC,IAAAA;AAAA,UAACD,MAAAA,CAAO,CAAA;AAAA,UAAP;AAAA,YACC,EAAA,EAAI,OAAA;AAAA,YACJ,SAAA,EAAU,kDAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,YACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,YAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,YAExC,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,cAChC;AAAA;AAAA;AAAA;AACH,OAAA,EAEJ,CAAA;AAAA,MAGC,6BACCV,IAAAA;AAAA,QAACD,MAAAA,CAAO,IAAA;AAAA,QAAP;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,gCAAA;AAAA,YACA,SAAA,IAAa,SAAA,IAAa,SAAA,GACtB,kBAAA,GACA;AAAA,WACN;AAAA,UACA,SAAS,aAAA,GAAgB,EAAE,OAAA,EAAS,CAAA,KAAM,EAAC;AAAA,UAC3C,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,UACtB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,UAEvC,QAAA,EAAA;AAAA,YAAA,SAAA;AAAA,YACA,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK;AAAA;AAAA;AAAA;AACjC,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;AC7PrB,IAAM,gBAAA,GAAmBmD,cAA4C,IAAI;AAEzE,SAAS,YAAA,GAAe;AAC7B,EAAA,MAAM,GAAA,GAAMC,WAAW,gBAAgB,CAAA;AACvC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AACA,EAAA,OAAO,GAAA;AACT;AAuBA,IAAM,WAAA,GAAmE;AAAA,EACvE,EAAA,EAAI,WAAA;AAAA,EACJ,OAAA,EAAS,aAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,iBAAA,GAAoB,KAAA;AAAA,EACpB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,SAASxD,KAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,OAAA,IAAW,MAAA;AAC3B,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,uBACEC,GAAAA;AAAA,IAAC,gBAAA,CAAiB,QAAA;AAAA,IAAjB;AAAA,MACC,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,eAAe,OAAA,EAAQ;AAAA,MAE1D,QAAA,kBAAAI,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,EAAA,CAAG,WAAA,CAAY,IAAI,CAAA,EAAG,QAAA,IAAY,cAAc,SAAS,CAAA;AAAA,UACnE,GAAG,KAAA;AAAA,UAGH,QAAA,EAAA;AAAA,YAAA,KAAA,oBACCA,IAAAA;AAAA,cAACD,MAAAA,CAAO,KAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS,OAAA;AAAA,gBACT,SAAA,EAAW,EAAA;AAAA,kBACT,kCAAA;AAAA,kBACA,QAAA,IAAY;AAAA,iBACd;AAAA,gBACA,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,IAAG,GAAI,MAAA;AAAA,gBACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,gBAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,gBAE3B,QAAA,EAAA;AAAA,kBAAA,KAAA;AAAA,kBACA,4BACCH,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,yBAAA;AAAA,sBACV,aAAA,EAAY,MAAA;AAAA,sBACb,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,aAEJ;AAAA,YAID,QAAA;AAAA,YAGA,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA;AAAA,cAACG,MAAAA,CAAO,CAAA;AAAA,cAAP;AAAA,gBACC,EAAA,EAAI,aAAA;AAAA,gBACJ,SAAA,EAAU,+BAAA;AAAA,gBACV,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,GAAE,GAAI,MAAA;AAAA,gBAChD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,gBAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,gBAEvC,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YAID,yBACCC,IAAAA;AAAA,cAACD,MAAAA,CAAO,CAAA;AAAA,cAAP;AAAA,gBACC,EAAA,EAAI,OAAA;AAAA,gBACJ,IAAA,EAAK,OAAA;AAAA,gBACL,SAAA,EAAU,kDAAA;AAAA,gBACV,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,GAAE,GAAI,MAAA;AAAA,gBAChD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,gBAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,gBAExC,QAAA,EAAA;AAAA,kCAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,kBACzC;AAAA;AAAA;AAAA;AACH;AAAA;AAAA;AAEJ;AAAA,GACF;AAEJ;AC9HA,IAAM,qBAAA,GAAwBT,GAAAA;AAAA,EAC5B,uGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,6BAAA;AAAA,QACT,OAAA,EAAS,wCAAA;AAAA,QACT,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ,wCAAA;AAAA,QACR,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,OAAA,EAAS,mBAAA;AAAA,QACT,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAMA,IAAM,YAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,uBAAA;AAAA,EACT,OAAA,EAAS,uBAAA;AAAA,EACT,OAAA,EAAS,sBAAA;AAAA,EACT,MAAA,EAAQ,sBAAA;AAAA,EACR,MAAA,EAAQ;AACV,CAAA;AAiDA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,OAAA,EAAQ,EAAgD;AACjF,EAAA,IAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG,OAAO,IAAA;AAE5B,EAAA,MAAM,KAAA,GAAQ,EAAA;AACd,EAAA,MAAM,MAAA,GAAS,EAAA;AACf,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA;AAC5B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA;AAC5B,EAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,IAAO,CAAA;AAE3B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AACxC,IAAA,MAAM,CAAA,GAAK,KAAA,IAAS,IAAA,CAAK,MAAA,GAAS,CAAA,CAAA,GAAM,KAAA;AACxC,IAAA,MAAM,IAAI,MAAA,GAAA,CAAW,KAAA,GAAQ,GAAA,IAAO,KAAA,IAAU,SAAS,CAAA,CAAA,GAAK,CAAA;AAC5D,IAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,EAClB,CAAC,CAAA;AAED,EAAA,MAAM,IAAA,GAAO,CAAA,EAAA,EAAK,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AACpC,EAAA,MAAM,cACJ,OAAA,KAAY,SAAA,GACR,sBAAA,GACA,OAAA,KAAY,WACV,qBAAA,GACA,mBAAA;AAER,EAAA,MAAM,KAAA,GAAQ,MAAA,GAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,GAAI,GAAA,IAAO,KAAA,IAAU,MAAA,GAAS,CAAA,CAAA,GAAK,CAAA;AAEhF,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAc,MAAA,EAAgB,WAAW,WAAA,EAC5C,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,IAAA;AAAA,QACH,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAA,GAAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAI,KAAA,EAAO,IAAI,KAAA,EAAO,CAAA,EAAE,GAAA,EAAI,IAAA,EAAK,cAAA,EAAe;AAAA,GAAA,EAC1D,CAAA;AAEJ;AAMA,SAAS,aAAA,CAAc;AAAA,EACrB,YAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,SAAA,GAAY,eAAe,CAAC,CAAA;AAClC,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,SAAA,EAAW,CAAC,CAAA,KAAM;AAC7C,IAAA,IAAI,YAAA,KAAiB,QAAW,OAAO,YAAA;AACvC,IAAA,OAAO,CAAA,EAAG,MAAA,IAAU,EAAE,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA,EAAG,MAAA,IAAU,EAAE,CAAA,CAAA;AAAA,EACrE,CAAC,CAAA;AACD,EAAA,MAAM,GAAA,GAAMO,OAAwB,IAAI,CAAA;AAExC,EAAAD,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAA,IAAiB,YAAA,KAAiB,MAAA,EAAW;AAClD,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,SAAA,EAAW,YAAA,EAAc;AAAA,MAChD,QAAA,EAAU,GAAA;AAAA,MACV,IAAA,EAAM,CAAC,IAAA,EAAM,CAAA,EAAG,MAAM,CAAC;AAAA,KACxB,CAAA;AACD,IAAA,OAAO,MAAM,SAAS,IAAA,EAAK;AAAA,EAC7B,CAAA,EAAG,CAAC,YAAA,EAAc,aAAA,EAAe,SAAS,CAAC,CAAA;AAE3C,EAAA,IAAI,CAAC,aAAA,IAAiB,YAAA,KAAiB,MAAA,EAAW;AAChD,IAAA,uBAAON,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,EAC7B;AAEA,EAAA,uBAAOA,GAAAA,CAACG,MAAAA,CAAO,IAAA,EAAP,EAAY,KAAW,QAAA,EAAA,OAAA,EAAQ,CAAA;AACzC;AAMO,SAAS,aAAA,CAAc;AAAA,EAC5B,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,iBAAA,GAAoB,KAAA;AAAA,EACpB,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,cAAA,GACJ,UAAU,MAAA,GACN,KAAA,GAAQ,IACN,IAAA,GACA,KAAA,GAAQ,CAAA,GACN,MAAA,GACA,SAAA,GACJ,IAAA;AAEN,EAAA,MAAM,YACJ,cAAA,KAAmB,IAAA,GACf,UAAA,GACA,cAAA,KAAmB,SACjB,YAAA,GACA,KAAA;AAER,EAAA,MAAM,aACJ,cAAA,KAAmB,IAAA,GACf,mBAAA,GACA,cAAA,KAAmB,SACjB,kBAAA,GACA,gBAAA;AAER,EAAA,MAAM,aAAa,OAAA,IAAW,SAAA;AAE9B,EAAA,uBACEC,IAAAA;AAAA,IAACD,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA,CAAsB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QACvC,+CAAA;AAAA,QACA,OAAA,IAAW,gBAAA;AAAA,QACX;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,MAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,MAC5B,YACE,aAAA,GACI;AAAA,QACE,SAAA,EAAW,CAAA,SAAA,EAAY,YAAA,CAAa,UAAU,CAAC,CAAA,sCAAA,CAAA;AAAA,QAC/C,KAAA,EAAO,UAAU,IAAA,GAAO,CAAA;AAAA,QACxB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAAI,UAE9B,EAAC;AAAA,MAEN,GAAG,KAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAACG,MAAAA,CAAO,IAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,sFAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,GAAA,KAAQ,EAAC;AAAA,YACnD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,YAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,YAEvC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAACG,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACC,SAAA,EAAU,WAAA;AAAA,cACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,cAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,cAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,cAEvC,QAAA,EAAA,OAAA,mBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EAA6C,CAAA,mBAE5DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8DAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,YAAA;AAAA,kBACA,MAAA;AAAA,kBACA,MAAA;AAAA,kBACA,YAAA,EAAc,KAAA;AAAA,kBACd;AAAA;AAAA,eACF,EACF;AAAA;AAAA,WAEJ;AAAA,UAGC,cAAA,IAAkB,CAAC,OAAA,oBAClBI,IAAAA;AAAA,YAACD,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,UAAU,CAAA;AAAA,cAC3D,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,cAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,cAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,cAExC,QAAA,EAAA;AAAA,gCAAAH,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,gCAC/BI,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAK,GAAA,CAAI,KAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,kBAAE;AAAA,iBAAA,EAC/B;AAAA;AAAA;AAAA;AACF,SAAA,EAEJ,CAAA;AAAA,QAGC,iBAAiB,aAAA,CAAc,MAAA,GAAS,CAAA,IAAK,CAAC,2BAC7CJ,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,uBAAA;AAAA,YACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,CAAA,KAAM,EAAC;AAAA,YACtD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,YACjC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,YAExC,QAAA,kBAAAH,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,eAAe,OAAA,EAAkB;AAAA;AAAA,SACpD;AAAA,QAID,OAAA,IAAW,iCACVA,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,+FAAA;AAAA,YACV,SAAS,EAAE,CAAA,EAAG,CAAC,IAAA,EAAM,GAAG,CAAA,EAAE;AAAA,YAC1B,YAAY,EAAE,QAAA,EAAU,KAAK,MAAA,EAAQ,QAAA,EAAU,MAAM,WAAA;AAAY;AAAA;AACnE;AAAA;AAAA,GAEJ;AAEJ;ACjTA,IAAM,kBAAA,GAAqBE,IAAI,MAAA,EAAQ;AAAA,EACrC,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,sBAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;AA8CD,SAAS,aAAA,CAAc;AAAA,EACrB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,cAAc,MAAA,KAAW,WAAA;AAC/B,EAAA,MAAM,WAAW,MAAA,KAAW,QAAA;AAE5B,EAAA,uBACED,IAAAA;AAAA,IAACD,MAAAA,CAAO,MAAA;AAAA,IAAP;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,0EAAA;AAAA,QACA,UAAU,gBAAA,GAAmB;AAAA,OAC/B;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,MAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MAC5B,YAAY,EAAE,QAAA,EAAU,GAAA,EAAK,KAAA,EAAO,QAAQ,GAAA,EAAI;AAAA,MAChD,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,MAGlC,QAAA,EAAA;AAAA,wBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EAEZ,QAAA,EAAA;AAAA,UAAA,QAAA,IAAY,iCACXJ,GAAAA;AAAA,YAACG,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACC,SAAA,EAAU,4DAAA;AAAA,cACV,OAAA,EAAS;AAAA,gBACP,KAAA,EAAO,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA;AAAA,gBACjB,OAAA,EAAS,CAAC,GAAA,EAAK,CAAA,EAAG,GAAG;AAAA,eACvB;AAAA,cACA,UAAA,EAAY;AAAA,gBACV,QAAA,EAAU,GAAA;AAAA,gBACV,MAAA,EAAQ,QAAA;AAAA,gBACR,IAAA,EAAM;AAAA,eACR;AAAA,cACA,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,EAAA;AAAG;AAAA,WACpD;AAAA,0BAGFH,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,4FAAA;AAAA,gBACA,WAAA,IACE,kFAAA;AAAA,gBACF,QAAA,IACE,2CAAA;AAAA,gBACF,CAAC,WAAA,IACC,CAAC,QAAA,IACD;AAAA,eACJ;AAAA,cAEC,QAAA,EAAA,WAAA,GACC,IAAA,CAAK,IAAA,oBACHA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,wBAAA,EAAyB,CAAA,GAE1C,QAAA,GACF,IAAA,CAAK,IAAA,oBACHA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA,KAAA,GAAQ,CAAA,EACX,CAAA,GAGF,IAAA,CAAK,IAAA,oBACHA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DAAA,EACb,QAAA,EAAA,KAAA,GAAQ,CAAA,EACX;AAAA;AAAA;AAGN,SAAA,EACF,CAAA;AAAA,wBAGAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,0FAAA;AAAA,cACA,WAAA,IAAe,mBAAA;AAAA,cACf,QAAA,IAAY,2BAAA;AAAA,cACZ,CAAC,WAAA,IAAe,CAAC,QAAA,IAAY;AAAA,aAC/B;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SACR;AAAA,QAGC,IAAA,CAAK,+BACJA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,mDAAA;AAAA,cACA,WAAW,uBAAA,GAA0B;AAAA,aACvC;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA,GAEJ;AAEJ;AAMA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,cAAc,MAAA,KAAW,WAAA;AAC/B,EAAA,MAAM,WAAW,MAAA,KAAW,QAAA;AAE5B,EAAA,uBACEI,IAAAA;AAAA,IAACD,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAU,iCAAA;AAAA,MACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,GAAA,KAAQ,EAAC;AAAA,MACnD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MAC5B,YAAY,EAAE,QAAA,EAAU,GAAA,EAAK,KAAA,EAAO,QAAQ,GAAA,EAAI;AAAA,MAGhD,QAAA,EAAA;AAAA,wBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAEb,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAACD,MAAAA,CAAO,MAAA;AAAA,YAAP;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAW,EAAA;AAAA,gBACT,mFAAA;AAAA,gBACA,UAAU,gBAAA,GAAmB;AAAA,eAC/B;AAAA,cACA,OAAA;AAAA,cACA,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,cAEjC,QAAA,EAAA;AAAA,gBAAA,QAAA,IAAY,iCACXH,GAAAA;AAAA,kBAACG,MAAAA,CAAO,GAAA;AAAA,kBAAP;AAAA,oBACC,SAAA,EAAU,oDAAA;AAAA,oBACV,OAAA,EAAS;AAAA,sBACP,KAAA,EAAO,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA;AAAA,sBACjB,OAAA,EAAS,CAAC,GAAA,EAAK,CAAA,EAAG,GAAG;AAAA,qBACvB;AAAA,oBACA,UAAA,EAAY;AAAA,sBACV,QAAA,EAAU,GAAA;AAAA,sBACV,MAAA,EAAQ,QAAA;AAAA,sBACR,IAAA,EAAM;AAAA,qBACR;AAAA,oBACA,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,EAAA;AAAG;AAAA,iBACpD;AAAA,gCAEFH,GAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,4FAAA;AAAA,sBACA,WAAA,IACE,kFAAA;AAAA,sBACF,QAAA,IAAY,2CAAA;AAAA,sBACZ,CAAC,WAAA,IACC,CAAC,QAAA,IACD;AAAA,qBACJ;AAAA,oBAEC,QAAA,EAAA,WAAA,GACC,IAAA,CAAK,IAAA,oBAAQA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,wBAAA,EAAyB,CAAA,GACrD,QAAA,GACF,IAAA,CAAK,IAAA,oBACHA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA,KAAA,GAAQ,CAAA,EACX,CAAA,GAGF,IAAA,CAAK,IAAA,oBACHA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DAAA,EACb,QAAA,EAAA,KAAA,GAAQ,CAAA,EACX;AAAA;AAAA;AAGN;AAAA;AAAA,WACF;AAAA,UAGC,CAAC,0BACAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,+BAAA;AAAA,gBACA,cACI,oDAAA,GACA;AAAA;AACN;AAAA;AACF,SAAA,EAEJ,CAAA;AAAA,wBAGAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,iEAAA;AAAA,gBACA,WAAA,IAAe,mBAAA;AAAA,gBACf,QAAA,IAAY,2BAAA;AAAA,gBACZ,CAAC,WAAA,IAAe,CAAC,QAAA,IAAY;AAAA,eAC/B;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WACR;AAAA,UACC,IAAA,CAAK,+BACJA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,0BAAA;AAAA,gBACA,WAAW,uBAAA,GAA0B;AAAA,eACvC;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AAMA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEA,GAAAA;AAAA,IAACG,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,CAAA,KAAM,EAAC;AAAA,MACtD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,MACjC,YAAY,EAAE,QAAA,EAAU,KAAK,KAAA,EAAO,KAAA,GAAQ,MAAM,IAAA,EAAK;AAAA,MAEvD,QAAA,kBAAAH,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,6BAAA;AAAA,YACA,YACI,oDAAA,GACA;AAAA;AACN;AAAA;AACF;AAAA,GACF;AAEJ;AAMO,SAAS,UAAA,CAAW;AAAA,EACzB,SAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAC7C,EAAA,MAAM,aAAa,MAAA,KAAW,UAAA;AAE9B,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAuD;AACxE,IAAA,IAAI,KAAA,GAAQ,YAAY,OAAO,WAAA;AAC/B,IAAA,IAAI,KAAA,KAAU,YAAY,OAAO,QAAA;AACjC,IAAA,OAAO,UAAA;AAAA,EACT,CAAA;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,MAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,QACvD,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,gBAAA;AAAA,QACV,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,sBAChBA,GAAAA;AAAA,UAAC,qBAAA;AAAA,UAAA;AAAA,YAEC,IAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,MAAA,EAAQ,UAAU,CAAC,CAAA;AAAA,YACnB,aAAA;AAAA,YACA,MAAA,EAAQ,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA,YAC7B,OAAA,EAAS,WAAA,GAAc,MAAM,WAAA,CAAY,CAAC,CAAA,GAAI;AAAA,WAAA;AAAA,UANzC;AAAA,SAQR;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,MAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,MACvD,IAAA,EAAK,MAAA;AAAA,MACL,YAAA,EAAW,gBAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,sBAChBI,IAAAA,CAACP,eAAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,wBAAAG,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,MAAA,EAAQ,UAAU,CAAC,CAAA;AAAA,YACnB,aAAA;AAAA,YACA,OAAA,EAAS,WAAA,GAAc,MAAM,WAAA,CAAY,CAAC,CAAA,GAAI;AAAA;AAAA,SAChD;AAAA,QACC,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,CAAA,oBAClBA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,GAAI,UAAA;AAAA,YACf,aAAA;AAAA,YACA,KAAA,EAAO;AAAA;AAAA;AACT,OAAA,EAAA,EAbiB,CAerB,CACD;AAAA;AAAA,GACH;AAEJ;ACnVA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAsB;AAC9C,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAE;AAAA,MAEvB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,oCAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAW,WAAW,eAAA,GAAkB,cAAA;AAAA,QACxC,UAAA,EAAY;AAAA,OACd;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,cAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAMA,IAAM,mBAAA,GAAsB,GAAA;AAE5B,SAAS,eAAe,EAAA,EAAoB;AAC1C,EAAA,IAAI,EAAA,GAAK,GAAA,EAAM,OAAO,CAAA,EAAG,EAAE,CAAA,EAAA,CAAA;AAC3B,EAAA,OAAO,CAAA,EAAA,CAAI,EAAA,GAAK,GAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAClC;AAEA,SAASwD,UAAAA,CAAU;AAAA,EACjB,MAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAM,CAAA;AAC3B,EAAA,MAAM,YAAY,MAAA,KAAW,SAAA;AAE7B,EAAA,uBACExD,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,cAAA;AAAA,QACT,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB,KAAA;AAAA,QACjB,UAAA,EAAY;AAAA,OACd;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,SAAA,IAAa,eAAe;AAAA;AAAA,GAC5C;AAEJ;AAEA,IAAM,YAAA,GAA+C;AAAA,EACnD,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO;AACT,CAAA;AAMA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,KAAA;AAAA,EACA,eAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EASG;AACD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUyD,gBAAS,eAAe,CAAA;AAE9D,EAAA,uBACErD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAS,MAAM,WAAA,CAAY,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QACpC,SAAA,EAAU,kDAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,SAAA;AAAA,UACP,SAAA,EAAW,aAAa,WAAW,CAAA,CAAA;AAAA,UACnC,UAAA,EAAY,aAAA;AAAA,UACZ,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,UAAA,GAAa,OAAA;AAAA,QACtD,CAAA;AAAA,QACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAC,CAAA,CAAE,aAAA,CAA8B,KAAA,CAAM,UAAA,GAAa,aAAA;AAAA,QACtD,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAoB,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,0BACnDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACpC,yBAASA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAW,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,KAC7C;AAAA,IACC,4BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAMA,SAAS,SAAA,CAAU;AAAA,EACjB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUyD,gBAAS,KAAK,CAAA;AACpD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,MAAM,CAAC,CAAA;AACzC,EAAA,MAAM,WAAA,GAAc,IAAI,MAAA,GAAS,mBAAA;AACjC,EAAA,MAAM,OAAA,GAAU,CAAC,QAAA,IAAY,WAAA,GAAc,IAAI,KAAA,CAAM,CAAA,EAAG,mBAAmB,CAAA,GAAI,QAAA,GAAW,GAAA;AAE1F,EAAA,uBACErD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,kEAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,SAAA;AAAA,UACP,UAAA,EAAY,OAAA;AAAA,UACZ,MAAA,EAAQ,aAAa,WAAW,CAAA,CAAA;AAAA,UAChC,MAAA,EAAQ,CAAA;AAAA,UACR,UAAA,EAAY,UAAA;AAAA,UACZ,SAAA,EAAW;AAAA,SACb;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC,+BACCA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAS,MAAM,WAAA,CAAY,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QACpC,SAAA,EAAU,0BAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,CAAA,EAAE;AAAA,QAE5F,qBAAW,WAAA,GAAc;AAAA;AAAA;AAC5B,GAAA,EAEJ,CAAA;AAEJ;AAMO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,iBAAA,GAAoB,KAAA;AAAA,EACpB,SAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAMG,WAAS,eAAA,EAAgB;AAC/B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAMuD,aAAAA,GAAe;AAAA,IACnB,OAAA,EAAS,OAAO,IAAA,CAAK,IAAA;AAAA,IACrB,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA;AAAA,IACvB,QAAA,EAAU,OAAO,MAAA,CAAO,QAAA;AAAA,IACxB,KAAA,EAAO,OAAO,MAAA,CAAO;AAAA,GACvB;AAEA,EAAA,MAAM,WAAA,GAAcA,cAAa,MAAM,CAAA;AAGvC,EAAA,MAAM,MAAA,GAAS,iBAAA;AAEf,EAAA,uBACEtD,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACrD,KAAA,EAAO;AAAA,QACL,YAAY,KAAA,CAAM,MAAA;AAAA,QAClB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,QACrC,cAAA,EAAgB,YAAA;AAAA,QAChB,oBAAA,EAAsB,YAAA;AAAA,QACtB,YAAY,aAAA,GAAgB,CAAA,aAAA,EAAgBD,QAAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,QAC3E,GAAG;AAAA,OACL;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAC,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qCAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,MAAA,CAAO,OAAO,OAAA,EAAS,CAAA;AAAA,8BACxCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,mCAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,OAAA,EAAQ;AAAA,kBACpC,KAAA,EAAO,IAAA;AAAA,kBAEN,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cACC,YAAY,IAAA,KAAS,MAAA,KAAW,UAAA,IAAc,MAAA,KAAW,4BACxDA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,gDAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO,OAAO,IAAA,CAAK,IAAA;AAAA,oBACnB,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,yBAAe,QAAQ;AAAA;AAAA,eAC1B;AAAA,8BAEFI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAACwD,UAAAA,EAAA,EAAU,MAAA,EAAgB,QAAQE,aAAAA,EAAc,CAAA;AAAA,gCACjD1D,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,qBAAA;AAAA,oBACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAY;AAAA,oBAE3B,uBAAa,MAAM;AAAA;AAAA;AACtB,eAAA,EACF;AAAA;AAAA;AAAA,SACF;AAAA,QAGC,sBACCI,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,0CAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,OAAO,IAAA,CAAK,IAAA;AAAA,cACnB,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,cACxC,UAAA,EAAY;AAAA,aACd;AAAA,YACD,QAAA,EAAA;AAAA,cAAA,MAAA;AAAA,cACM;AAAA;AAAA;AAAA,SACP;AAAA,QAID,QAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,GAAS,qBAClCJ,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,WAAA;AAAA,YACN,eAAA;AAAA,YACA,aAAa,KAAA,CAAM,UAAA;AAAA,YACnB,SAAS,KAAA,CAAM,OAAA;AAAA,YACf,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA;AAAA,YACvB,SAAA,EAAW,OAAO,IAAA,CAAK,IAAA;AAAA,YAEvB,QAAA,kBAAAA,GAAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,IAAA;AAAA,gBACP,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA;AAAA,gBACvB,OAAA,EAAS,MAAA;AAAA,gBACT,aAAa,KAAA,CAAM;AAAA;AAAA;AACrB;AAAA,SACF;AAAA,QAID,MAAA,KAAW,UAAA,IAAc,MAAA,KAAW,MAAA,oBACnCA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,QAAA;AAAA,YACN,eAAA;AAAA,YACA,aAAa,KAAA,CAAM,UAAA;AAAA,YACnB,SAAS,KAAA,CAAM,OAAA;AAAA,YACf,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA;AAAA,YACvB,SAAA,EAAW,OAAO,IAAA,CAAK,IAAA;AAAA,YAEvB,QAAA,kBAAAA,GAAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,MAAA;AAAA,gBACP,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA;AAAA,gBACvB,OAAA,EAAS,MAAA;AAAA,gBACT,aAAa,KAAA,CAAM;AAAA;AAAA;AACrB;AAAA,SACF;AAAA,QAID,MAAA,KAAW,OAAA,IAAW,KAAA,oBACrBA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,6BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,OAAO,MAAA,CAAO,WAAA;AAAA,cACrB,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,cACxC,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AC9YO,SAAS,aAAa,EAAE,KAAA,EAAO,GAAA,GAAM,CAAA,EAAG,WAAU,EAAsB;AAC7E,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA,EAAG,KAAA,EAAO,EAAE,GAAA,EAAI,EAC1D,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,CAAA,qBAChBA,GAAAA,CAAC,YAAA,EAAA,EAAiC,GAAG,IAAA,EAAA,EAAlB,IAAA,CAAK,EAAA,IAAM,CAAa,CAC5C,CAAA,EACH,CAAA;AAEJ;ACKO,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,gBAAgB,CAAC,aAAA;AAEvB,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,kBAAA;AAAA,QACZ,MAAA,EAAQ,kCAAA;AAAA,QACR,cAAA,EAAgB,YAAA;AAAA,QAChB,oBAAA,EAAsB;AAAA,OACxB;AAAA,MACC,GAAG,KAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAACG,MAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAU,kHAAA;AAAA,YACV,OAAA,EACE,gBACI,EAAE,CAAA,EAAG,CAAC,CAAA,EAAG,EAAA,EAAI,CAAC,CAAA,EAAE,GAChB,MAAA;AAAA,YAEN,UAAA,EACE,gBACI,EAAE,QAAA,EAAU,GAAG,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,WAAA,EAAY,GACnD,MAAA;AAAA,YAGL,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAGAH,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,+FACX,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAGC,+BACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+DACV,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAID,MAAA,IAAU,WAAA,oBACTA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAA,EAC9C,QAAA,EAAA,WAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AC7EA,IAAM,eAAA,GAAkBK,GAAAA;AAAA,EACtB;AAAA,IACE,sEAAA;AAAA,IACA,yCAAA;AAAA,IACA,mCAAA;AAAA,IACA,+CAAA;AAAA,IACA,oDAAA;AAAA,IACA,qDAAA;AAAA,IACA,iDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,uHAAA;AAAA,QACF,KAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,MAAA;AAAA,QACT,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAkDO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc,WAAA;AAAA,EACd,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,iBAAA,GAAoB;AACtB,CAAA,EAAqB;AACnB,EAAA,MAAM,aAAmBsD,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,aAAA,GAAgB,GAAG,UAAU,CAAA,YAAA,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,GAAG,UAAU,CAAA,MAAA,CAAA;AAE7B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,YAAA,GAAe,QAAQ,OAAA,GAAU,OAAA;AAEvC,EAAA,uBACEvD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,kBAAkB,CAAA,EAE/C,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCJ,GAAAA;AAAA,MAACG,MAAAA,CAAO,KAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,+EAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,QAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAE3B,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAGFC,IAAAA;AAAA,MAAiBwB,KAAAA;AAAA,MAAhB;AAAA,QACC,KAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA;AAAA,QACA,QAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAxB,IAAAA;AAAA,YAAiB,OAAA;AAAA,YAAhB;AAAA,cACC,SAAA,EAAW,GAAG,eAAA,CAAgB,EAAE,SAAS,YAAA,EAAc,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA;AAAA,cACzE,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,cAEN,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,cAE/B,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAAiB,KAAA,EAAhB,EAAsB,WAAA,EAA0B,CAAA;AAAA,gCACjDA,GAAAA,CAAiB,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC4D,WAAAA,EAAA,EAAY,SAAA,EAAU,2CAAA,EAA4C,CAAA,EACrE;AAAA;AAAA;AAAA,WACF;AAAA,0BAEA5D,GAAAA,CAAiB6D,MAAAA,EAAhB,EACC,QAAA,kBAAAzD,IAAAA;AAAA,YAAiB,QAAA;AAAA,YAAhB;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,uEAAA;AAAA,gBACA,6DAAA;AAAA,gBACA,0EAAA;AAAA,gBACA,8DAAA;AAAA,gBACA,4DAAA;AAAA,gBACA,8DAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,QAAA,EAAS,QAAA;AAAA,cACT,UAAA,EAAY,CAAA;AAAA,cAEZ,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAAiB,cAAA,EAAhB,EAA+B,SAAA,EAAU,qDAAA,EACxC,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,kCAAA,EAAmC,CAAA,EAC1D,CAAA;AAAA,gCAEAI,IAAAA,CAAiB,QAAA,EAAhB,EAAyB,WAAU,KAAA,EAEjC,QAAA,EAAA;AAAA,kBAAA,OAAA,EAAS,IAAI,CAAC,MAAA,qBACbJ,GAAAA,CAAC,mBAAmC,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,OAAO,QAAA,EACvE,QAAA,EAAA,MAAA,CAAO,KAAA,EAAA,EADY,MAAA,CAAO,KAE7B,CACD,CAAA;AAAA,kBAGA,MAAA,EAAQ,IAAI,CAAC,KAAA,EAAO,sBACnBI,IAAAA,CAAiB,OAAhB,EACE,QAAA,EAAA;AAAA,oBAAA,CAAA,GAAI,qBACHJ,GAAAA,CAAiB8D,WAAAA,EAAhB,EAA0B,WAAU,gCAAA,EAAiC,CAAA;AAAA,oCAExE9D,GAAAA,CAAiB+D,OAAAA,EAAhB,EAAsB,SAAA,EAAU,oGAAA,EAC9B,gBAAM,KAAA,EACT,CAAA;AAAA,oBACC,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,2BAClB/D,GAAAA;AAAA,sBAAC,eAAA;AAAA,sBAAA;AAAA,wBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,wBACd,UAAU,MAAA,CAAO,QAAA;AAAA,wBAEhB,QAAA,EAAA,MAAA,CAAO;AAAA,uBAAA;AAAA,sBAJH,MAAA,CAAO;AAAA,qBAMf;AAAA,mBAAA,EAAA,EAfyB,KAAA,CAAM,KAgBlC,CACD;AAAA,iBAAA,EACH,CAAA;AAAA,gCAEAA,GAAAA,CAAiB,gBAAA,EAAhB,EAAiC,SAAA,EAAU,qDAAA,EAC1C,QAAA,kBAAAA,GAAAA,CAAC4D,WAAAA,EAAA,EAAY,SAAA,EAAU,kCAAA,EAAmC,CAAA,EAC5D;AAAA;AAAA;AAAA,WACF,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAGC,WAAA,IAAe,CAAC,KAAA,oBACf5D,GAAAA;AAAA,MAACG,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,aAAA;AAAA,QACJ,SAAA,EAAU,+BAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAEvC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAID,yBACCC,IAAAA;AAAA,MAACD,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,kDAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;AAMA,SAAS,eAAA,CAAgB;AAAA,EACvB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBACEV,IAAAA;AAAA,IAAiBqB,MAAAA;AAAA,IAAhB;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,0FAAA;AAAA,QACA,mDAAA;AAAA,QACA,6CAAA;AAAA,QACA,gEAAA;AAAA,QACA,gCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAzB,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,GAAAA,CAAiB,aAAA,EAAhB,EACC,QAAA,kBAAAA,IAACgE,KAAAA,EAAA,EAAM,SAAA,EAAU,4BAAA,EAA6B,GAChD,CAAA,EACF,CAAA;AAAA,wBACAhE,GAAAA,CAAiB,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AAAA,GACtC;AAEJ;AChQA,IAAM,iBAAA,GAAoBK,GAAAA;AAAA,EACxB;AAAA,IACE,sDAAA;AAAA,IACA,yCAAA;AAAA,IACA,gDAAA;AAAA,IACA,+CAAA;AAAA,IACA,oDAAA;AAAA,IACA,0EAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,4IAAA;AAAA,QACF,KAAA,EACE,wFAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,MAAA;AAAA,QACT,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAgDO,SAAS,eAAA,CAAgB;AAAA,EAC9B,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,aAAmB4D,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,UAAU,EAAA,IAAM,UAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAC1B,EAAA,MAAM,KAAA,GAAQ,GAAG,OAAO,CAAA,IAAA,CAAA;AAExB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,YAAA,GAAe,QAAQ,OAAA,GAAU,OAAA;AAEvC,EAAA,uBACE7D,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,kBAAkB,CAAA,EAE/C,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCJ,GAAAA;AAAA,MAACG,MAAAA,CAAO,KAAA;AAAA,MAAP;AAAA,QACC,OAAA,EAAS,OAAA;AAAA,QACT,SAAA,EAAU,+EAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,QAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAE3B,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAIFC,IAAAA;AAAA,MAACD,MAAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,yBAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,IAAA,KAAS,EAAC;AAAA,QACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,QAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAC,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,iBAAA,CAAkB,EAAE,OAAA,EAAS,YAAA,EAAc,MAAM,CAAA;AAAA,gBACjD,OAAA;AAAA,gBACA;AAAA,eACF;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,2CAAA,EAA4C,CAAA;AAAA,gCAChEA,GAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAI,OAAA;AAAA,oBACJ,IAAA,EAAK,MAAA;AAAA,oBACL,KAAA;AAAA,oBACA,YAAA;AAAA,oBACA,GAAA;AAAA,oBACA,GAAA;AAAA,oBACA,QAAA;AAAA,oBACA,UAAU,CAAC,CAAA,KAAM,QAAA,GAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,oBAC1C,SAAA,EAAW,EAAA;AAAA,sBACT,2DAAA;AAAA,sBACA,sDAAA;AAAA,sBACA,qBAAA;AAAA,sBACA;AAAA,qBACF;AAAA,oBACA,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,oBAEN,cAAA,EAAc,QAAQ,MAAA,GAAS;AAAA;AAAA;AACjC;AAAA;AAAA,WACF;AAAA,UAEC,IAAA,KAAS,OAAA,oBACRI,IAAAA,CAAAM,UAAA,EACE,QAAA,EAAA;AAAA,4BAAAV,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8EAAA,EAA+E,QAAA,EAAA,IAAA,EAE/F,CAAA;AAAA,4BACAI,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,iBAAA,CAAkB,EAAE,OAAA,EAAS,YAAA,EAAc,MAAM,CAAA;AAAA,kBACjD;AAAA,iBACF;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAJ,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,2CAAA,EAA4C,CAAA;AAAA,kCAChEA,GAAAA;AAAA,oBAAC,OAAA;AAAA,oBAAA;AAAA,sBACC,EAAA,EAAI,KAAA;AAAA,sBACJ,IAAA,EAAK,MAAA;AAAA,sBACL,KAAA,EAAO,QAAA;AAAA,sBACP,YAAA,EAAc,eAAA;AAAA,sBACd,GAAA;AAAA,sBACA,GAAA;AAAA,sBACA,QAAA;AAAA,sBACA,UAAU,CAAC,CAAA,KAAM,WAAA,GAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,sBAC7C,SAAA,EAAW,EAAA;AAAA,wBACT,2DAAA;AAAA,wBACA,sDAAA;AAAA,wBACA,qBAAA;AAAA,wBACA;AAAA,uBACF;AAAA,sBACA,YAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA;AACF,WAAA,EACF;AAAA;AAAA;AAAA,KAEJ;AAAA,IAGC,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA;AAAA,MAACG,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,aAAA;AAAA,QACJ,SAAA,EAAU,+BAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAEvC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAID,yBACCC,IAAAA;AAAA,MAACD,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,kDAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;ACnOA,SAAS,eAAe,KAAA,EAAuB;AAC7C,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,KAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AACpC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AACrD,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAA;AACrC,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACrD;AAMA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAU,EAA2B;AAC1D,EAAA,uBACEV,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,GAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW,CAAA;AAAA,wBACnBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe,CAAA;AAAA,wBACvBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW;AAAA;AAAA;AAAA,GACrB;AAEJ;AAEA,SAAS,KAAA,CAAM,EAAE,SAAA,EAAU,EAA2B;AACpD,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,CAAA;AAAA,wBACrBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa;AAAA;AAAA;AAAA,GACvB;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAU,EAA2B;AACvD,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,GAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4DAAA,EAA6D,CAAA;AAAA,wBACrEA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yBAAA,EAA0B;AAAA;AAAA;AAAA,GACpC;AAEJ;AAMA,IAAM,gBAAA,GAAmBK,GAAAA;AAAA,EACvB;AAAA,IACE,sFAAA;AAAA,IACA,yCAAA;AAAA,IACA,+CAAA;AAAA,IACA,oDAAA;AAAA,IACA,4BAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,8GAAA;AAAA,QACF,KAAA,EACE,0FAAA;AAAA,QACF,MAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,+BAAA;AAAA,QACT,EAAA,EAAI,+BAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAsCO,IAAM,eAAA,GAAwB6D,MAAA,CAAA,UAAA,CAGnC,SAASC,gBAAAA,CACT;AAAA,EACE,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA,EAAO,eAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA,GAAoB;AACtB,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,aAAmBD,MAAA,CAAA,KAAA,EAAM;AAC/B,EAAA,MAAM,QAAA,GAAiBA,cAAyB,IAAI,CAAA;AACpD,EAAA,MAAM,aAAA,GAAgB,GAAG,UAAU,CAAA,YAAA,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,GAAG,UAAU,CAAA,MAAA,CAAA;AAE7B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,gBAAS,KAAK,CAAA;AACxD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,MAAA,CAAA,QAAA,CAAiB,EAAE,CAAA;AAEnE,EAAA,MAAM,QAAQ,eAAA,IAAmB,aAAA;AACjC,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AAEzC,EAAA,MAAM,YAAA,GAAe,KAAA,GAAQ,OAAA,GAAU,UAAA,GAAa,QAAA,GAAW,OAAA;AAI/D,EAAA,MAAM,QAAA,GAAiBA,MAAA,CAAA,WAAA;AAAA,IACrB,CAAC,QAAA,KAAgC;AAC/B,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA;AACpC,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM;AACtC,QAAA,IAAI,OAAA,IAAW,CAAA,CAAE,IAAA,GAAO,OAAA,EAAS,OAAO,KAAA;AACxC,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,MAAM,OAAA,GAAU,QAAA,GAAW,CAAC,GAAG,KAAA,EAAO,GAAG,QAAQ,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAExE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,MAC1B;AACA,MAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,YAAA,EAAc,OAAA,EAAS,UAAU,aAAa;AAAA,GACxD;AAEA,EAAA,MAAM,UAAA,GAAmBA,MAAA,CAAA,WAAA;AAAA,IACvB,CAAC,KAAA,KAAkB;AACjB,MAAA,MAAM,UAAU,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AAClD,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,MAC1B;AACA,MAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,YAAA,EAAc,aAAa;AAAA,GACrC;AAIA,EAAA,MAAM,cAAA,GAAuBA,MAAA,CAAA,WAAA;AAAA,IAC3B,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,CAAC,QAAA,EAAU,aAAA,CAAc,IAAI,CAAA;AAAA,IACnC,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,eAAA,GAAwBA,MAAA,CAAA,WAAA;AAAA,IAC5B,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,UAAA,GAAmBA,MAAA,CAAA,WAAA;AAAA,IACvB,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,IAAI,CAAA,CAAE,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ;AAChC,QAAA,QAAA,CAAS,CAAA,CAAE,aAAa,KAAK,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,QAAQ;AAAA,GACrB;AAIA,EAAA,MAAM,WAAA,GAAoBA,mBAAY,MAAM;AAC1C,IAAA,IAAI,CAAC,QAAA,EAAU,QAAA,CAAS,OAAA,EAAS,KAAA,EAAM;AAAA,EACzC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,aAAA,GAAsBA,MAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,CAAA,KAA2B;AAC1B,MAAA,IAAI,CAAC,QAAA,KAAa,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACrD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,iBAAA,GAA0BA,MAAA,CAAA,WAAA;AAAA,IAC9B,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,MAAA,EAAQ;AAC1B,QAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,MACzB;AAEA,MAAA,CAAA,CAAE,OAAO,KAAA,GAAQ,EAAA;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,uBACE9D,KAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,kBAAkB,CAAA,EAEzD,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCJ,GAAAA;AAAA,MAACG,MAAAA,CAAO,KAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,iFAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,QAClD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAE3B,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAIFH,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,MAAA;AAAA,QACL,MAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA,EAAU,iBAAA;AAAA,QACV,SAAA,EAAU,SAAA;AAAA,QACV,QAAA,EAAU,EAAA;AAAA,QACV,aAAA,EAAY;AAAA;AAAA,KACd;AAAA,oBAGAI,IAAAA;AAAA,MAACD,MAAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,QAC1B,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACX,UAAA,EAAY,cAAA;AAAA,QACZ,WAAA,EAAa,eAAA;AAAA,QACb,MAAA,EAAQ,UAAA;AAAA,QACR,SAAA,EAAW,EAAA;AAAA,UACT,gBAAA,CAAiB,EAAE,OAAA,EAAS,YAAA,EAAc,MAAM,CAAA;AAAA,UAChD,QAAA,IAAY,+BAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,YAAA,EAAW,uBAAA;AAAA,QACX,kBAAA,EACE,WAAA,IAAe,KAAA,GACX,CAAA,EAAG,WAAA,GAAc,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,OAAA,GAAU,EAAE,CAAA,CAAA,CAAG,MAAK,GACnE,MAAA;AAAA,QAEN,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,KAAA,EAAO,IAAA,KAAS,EAAC;AAAA,QACxD,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,CAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAGxC,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAACG,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACC,OAAA,EACE,aAAA,IAAiB,UAAA,GACb,EAAE,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,GAAA,EAAI,GACpB,EAAE,CAAA,EAAG,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,cAEvB,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA,EAAG;AAAA,cAE1D,QAAA,kBAAAH,GAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,wCAAA;AAAA,oBACA,aAAa,gBAAA,GAAmB;AAAA;AAClC;AAAA;AACF;AAAA,WACF;AAAA,0BAGAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,8EAAA;AAAA,gBACA,aAAa,gBAAA,GAAmB;AAAA,eAClC;AAAA,cACD,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BAGAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8CAA6C,QAAA,EAAA,oBAAA,EAE7D;AAAA;AAAA;AAAA,KACF;AAAA,oBAGAA,IAACa,eAAAA,EAAA,EAAgB,MAAK,WAAA,EACnB,QAAA,EAAA,KAAA,CAAM,MAAA,GAAS,CAAA,oBACdb,GAAAA;AAAA,MAACG,MAAAA,CAAO,EAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,WAAA;AAAA,QACV,SAAS,aAAA,GAAgB,EAAE,OAAA,EAAS,CAAA,KAAM,EAAC;AAAA,QAC3C,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,QACtB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,IAAA,EAAK;AAAA,QACzC,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBC,IAAAA;AAAA,UAACD,MAAAA,CAAO,EAAA;AAAA,UAAP;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,qDAAA;AAAA,cACA,6DAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,GAAA,KAAQ,EAAC;AAAA,YACnD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,YAC5B,IAAA,EAAM,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,EAAA,KAAO,EAAC;AAAA,YAC/C,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,YAC7B,MAAA,EAAQ,aAAA;AAAA,YAER,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,oCAAA,EAAqC,CAAA;AAAA,8BACzDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDAAA,EACb,eAAK,IAAA,EACR,CAAA;AAAA,8BACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oGACb,QAAA,EAAA,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAC3B,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,oBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,oBAAA,UAAA,CAAW,KAAK,CAAA;AAAA,kBAClB,CAAA;AAAA,kBACA,QAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACT,uDAAA;AAAA,oBACA,yEAAA;AAAA,oBACA,mFAAA;AAAA,oBACA;AAAA,mBACF;AAAA,kBACA,YAAA,EAAY,CAAA,OAAA,EAAU,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,kBAE/B,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AACjC;AAAA,WAAA;AAAA,UAnCK,GAAG,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,IAAI,IAAI,KAAK,CAAA;AAAA,SAqC1C;AAAA;AAAA,KACH,EAEJ,CAAA;AAAA,IAGC,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA;AAAA,MAACG,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,aAAA;AAAA,QACJ,SAAA,EAAU,+BAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAEvC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAID,yBACCC,IAAAA;AAAA,MAACD,MAAAA,CAAO,CAAA;AAAA,MAAP;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAU,kDAAA;AAAA,QACV,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,CAAA,KAAM,EAAC;AAAA,QACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAACc,WAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAChC;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACxavB,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAC3C,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAE3C,EAAA,uBACEV,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA,MAAA,IAAU,cAAA;AAAA,QACV;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA,CAAA;AAAA,QACvD,oBAAA,EAAsB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA,CAAA;AAAA,QAC7D,YAAY,WAAA,CAAY,OAAA;AAAA,QACxB,YAAA,EAAc,CAAA,UAAA,EAAa,WAAA,CAAY,WAAW,CAAA,CAAA;AAAA,QAClD,SAAA,EAAW,CAAA,sCAAA,EAAyC,eAAA,CAAgB,QAAQ,CAAA;AAAA,OAC9E;AAAA,MACA,IAAA,EAAK,YAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,wBAIFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EAA6C,MAAK,SAAA,EAC9D,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,UAAA,MAAM,QAAA,GAAW,KAAK,EAAA,KAAO,QAAA;AAC7B,UAAA,uBACEI,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,UAAA;AAAA,cACL,SAAS,MAAM;AACb,gBAAA,IAAA,CAAK,OAAA,IAAU;AACf,gBAAA,WAAA,GAAc,KAAK,EAAE,CAAA;AAAA,cACvB,CAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,wEAAA;AAAA,gBACA,mDAAA;AAAA,gBACA,WACI,+CAAA,GACA;AAAA,eACN;AAAA,cACA,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY,WAAW,MAAA,GAAY;AAAA,eACrC;AAAA,cACA,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,cAEjC,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,wBACJJ,GAAAA,CAAC,UAAK,SAAA,EAAU,wDAAA,EACb,eAAK,IAAA,EACR,CAAA;AAAA,gCAEFA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,gBAGjB,4BACCA,GAAAA;AAAA,kBAACG,MAAAA,CAAO,GAAA;AAAA,kBAAP;AAAA,oBACC,QAAA,EAAS,4BAAA;AAAA,oBACT,SAAA,EAAU,0CAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACL,YAAY,WAAA,CAAY,YAAA;AAAA,sBACxB,WAAW,CAAA,QAAA,EAAW,WAAA,CAAY,YAAY,CAAA,WAAA,EAAc,YAAY,YAAY,CAAA;AAAA,qBACtF;AAAA,oBACA,UAAA,EACE,aAAA,GACI,EAAE,QAAA,EAAU,CAAA,EAAE,GACd,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,OAAA,EAAS,EAAA;AAAG;AAAA;AAEtD;AAAA,aAAA;AAAA,YAxCG,IAAA,CAAK;AAAA,WA0CZ;AAAA,QAEJ,CAAC,CAAA,EACH,CAAA;AAAA,wBAGAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,QAGvB,2BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;ACjHA,IAAM,qBAAA,GAA8BoE,MAAA,CAAA,aAAA,CAEjC,EAAE,aAAA,EAAe,WAAW,CAAA;AAUxB,IAAM,mBAAA,GAA4BA,MAAA,CAAA,UAAA,CAGvC,SAASC,oBAAAA,CAAoB,EAAE,aAAA,GAAgB,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACrF,EAAA,MAAM,GAAA,GAAYD,eAAQ,OAAO,EAAE,eAAc,CAAA,EAAI,CAAC,aAAa,CAAC,CAAA;AAEpE,EAAA,uBACEpE,GAAAA,CAAC,qBAAA,CAAsB,QAAA,EAAtB,EAA+B,KAAA,EAAO,GAAA,EACrC,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAW,GAAA,EAAW,GAAG,KAAA,EACvB,UACH,CAAA,EACF,CAAA;AAEJ,CAAC;AAUM,IAAM,mBAAA,GAA4BoE,MAAA,CAAA,UAAA,CAGvC,SAASE,oBAAAA,CAAoB,EAAE,KAAA,GAAQ,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,EAAK;AAC3F,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,uBACEtE,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,IAAS,4BAAA,EAA8B,SAAS,CAAA;AAAA,MAC9D,OACE,KAAA,GACI;AAAA,QACE,YAAY,WAAA,CAAY,MAAA;AAAA,QACxB,WAAA,EAAa,CAAA;AAAA,QACb,WAAA,EAAa,OAAA;AAAA,QACb,aAAa,WAAA,CAAY,UAAA;AAAA,QACzB,GAAG;AAAA,OACL,GACA,KAAA;AAAA,MAEL,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAaM,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,WAAA,EAAa,eAAA;AAAA,EACb,OAAA,EAAS,WAAA;AAAA,EACT,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,aAAA,EAAe,UAAA,EAAW,GAAUoE,kBAAW,qBAAqB,CAAA;AAC5E,EAAA,MAAM,UAAU,WAAA,IAAe,UAAA;AAC/B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,WAAA,GAAc,YAAY,MAAA,CAAO,OAAA;AAIvC,EAAA,MAAM,aAAa,eAAA,KAAoB,UAAA;AAEvC,EAAA,MAAMnB,QAAAA,GAAyC;AAAA,IAC7C,MAAA,EAAQ,CAAA;AAAA,IACR,OAAA,EAAS,CAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AACA,EAAA,MAAM,IAAA,GAAOA,SAAQ,OAAO,CAAA;AAE5B,EAAA,MAAM,WAAA,GAAc,YAAY,OAAA,KAAY,QAAA;AAE5C,EAAA,uBACE7C,IAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wDAAA;AAAA,QACA,yEAAA;AAAA,QACA,aAAa,eAAA,GAAkB,eAAA;AAAA,QAC/B;AAAA,OACF;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,6CAAA;AAAA,cACA,aAAa,QAAA,GAAW,QAAA;AAAA;AAAA,cAExB,cAAA;AAAA;AAAA,cAEA,oDAAA;AAAA;AAAA,cAEA;AAAA,aACF;AAAA,YACA,KAAA,EAAO;AAAA,cACL,GAAI,EAAE,uBAAA,EAAyB,WAAA,EAAY;AAAA,cAC3C,GAAI,UAAA,GACA,EAAE,MAAA,EAAQ,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA,EAAK,GACtB,EAAE,KAAA,EAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA;AAAK;AAC3B;AAAA,SACF;AAAA,QAGC,+BACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,iEAAA;AAAA,cACA,gCAAA;AAAA,cACA,wDAAA;AAAA,cACA,aAAa,UAAA,GAAa;AAAA,aAC5B;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACjCA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,cAAA;AAAA,gBACV,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO,OAAA,KAAY,WAAA,GAAc,CAAA,GAAI,CAAA;AAAA,kBACrC,MAAA,EAAQ,OAAA,KAAY,WAAA,GAAc,CAAA,GAAI,CAAA;AAAA,kBACtC,UAAA,EAAY,WAAA;AAAA,kBACZ,OAAA,EAAS;AAAA;AACX,eAAA;AAAA,cAPK;AAAA,aASR;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AC1JA,IAAM,iBAAuBuE,MAAA,CAAA,aAAA,CAAmC;AAAA,EAC9D,SAAA,EAAW,KAAA;AAAA,EACX,IAAA,EAAM;AACR,CAAC,CAAA;AAEM,SAAS,eAAA,GAAkB;AAChC,EAAA,OAAaA,kBAAW,cAAc,CAAA;AACxC;AAsBA,IAAM,SAAS,EAAE,IAAA,EAAM,UAAmB,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA,EAAG;AAE/D,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,SAAA,EAAW,mBAAA;AAAA,EACX,iBAAA;AAAA,EACA,gBAAA,GAAmB,KAAA;AAAA,EACnB,cAAA,GAAiB,EAAA;AAAA,EACjB,aAAA,GAAgB,GAAA;AAAA,EAChB,IAAA,GAAO,MAAA;AAAA,EACP,UAAA,GAAa,IAAA;AAAA,EACb,iBAAA,GAAoB,KAAA;AAAA,EACpB,SAAA,GAAY,MAAA;AAAA,EACZ,UAAA,GAAa,IAAA;AAAA,EACb,SAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,gBAAS,gBAAgB,CAAA;AACjF,EAAA,MAAM,YAAY,mBAAA,IAAuB,iBAAA;AAEzC,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAC3C,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAE7C,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,IAAA,EAAM,MAAA;AAAA,IACN,MAAM,eAAA,CAAgB,QAAA;AAAA,IACtB,KAAK,eAAA,CAAgB;AAAA,GACvB;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAM,OAAO,CAAC,SAAA;AACd,IAAA,IAAI,wBAAwB,MAAA,EAAW;AACrC,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B;AACA,IAAA,iBAAA,GAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,IAAA,KAAS,MAAA,GAAS,aAAA,GAAgB,YAAA;AAErD,EAAA,uBACEvE,GAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,OAAO,EAAE,SAAA,EAAW,IAAA,EAAK,EAChD,QAAA,kBAAAI,IAAAA;AAAA,IAACD,MAAAA,CAAO,KAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,2DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA,CAAA;AAAA,QACvD,oBAAA,EAAsB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA,CAAA;AAAA,QAC7D,YAAY,WAAA,CAAY,OAAA;AAAA,QACxB,SAAA,EAAW,UAAU,SAAS,CAAA;AAAA,QAC9B,GAAI,UAAA,GACA;AAAA,UACE,CAAC,UAAU,GAAG,CAAA,UAAA,EAAa,YAAY,WAAW,CAAA;AAAA,YAEpD,EAAC;AAAA,QACL,GAAG;AAAA,OACL;AAAA,MACA,OAAA,EAAS,EAAE,KAAA,EAAO,SAAA,GAAY,iBAAiB,aAAA,EAAc;AAAA,MAC7D,UAAA,EAAY,aAAA,GAAgB,MAAA,GAAS,EAAE,UAAU,CAAA,EAAE;AAAA,MAElD,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAEA,8BACCH,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAW,EAAA;AAAA,cACT,2EAAA;AAAA,cACA,mBAAA;AAAA,cACA,IAAA,KAAS,SAAS,UAAA,GAAa;AAAA,aACjC;AAAA,YACA,KAAA,EAAO;AAAA,cACL,YAAY,WAAA,CAAY,OAAA;AAAA,cACxB,MAAA,EAAQ,CAAA,UAAA,EAAa,WAAA,CAAY,WAAW,CAAA,CAAA;AAAA,cAC5C,cAAA,EAAgB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA,CAAA;AAAA,cACvD,oBAAA,EAAsB,CAAA,KAAA,EAAQ,WAAA,CAAY,SAAA,IAAa,MAAM,CAAA,CAAA;AAAA,aAC/D;AAAA,YACA,YAAA,EAAY,YAAY,gBAAA,GAAmB,kBAAA;AAAA,YAE3C,QAAA,kBAAAA,GAAAA;AAAA,cAACG,MAAAA,CAAO,IAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS;AAAA,kBACP,MAAA,EAAQ,YACJ,IAAA,KAAS,MAAA,GACP,MACA,CAAA,GACF,IAAA,KAAS,SACP,CAAA,GACA;AAAA,iBACR;AAAA,gBACA,UAAA,EAAY,aAAA,GAAgB,MAAA,GAAS,EAAE,UAAU,CAAA,EAAE;AAAA,gBACnD,SAAA,EAAU,kCAAA;AAAA,gBAEV,QAAA,kBAAAH,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,wDAAA,EAAyD;AAAA;AAAA;AAClF;AAAA;AACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAUO,SAAS,kBAAA,CAAmB;AAAA,EACjC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,MAC5E,KAAA,EAAO;AAAA,QACL,YAAY,WAAA,CAAY,cAAA;AAAA,QACxB,aAAa,WAAA,CAAY,UAAA;AAAA,QACzB,GAAG;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAWO,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,eAAA,EAAgB;AACtC,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,uBACEI,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,uBAAA,EAAyB,SAAS,CAAA,EAAI,GAAG,KAAA,EACzD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,CAAC,SAAA,oBACTJ,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0GACX,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,IAED,KAAA,IAAS,6BACRA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,WAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,YAAA,EAAc,CAAA,UAAA,EAAa,WAAA,CAAY,UAAU,CAAA;AAAA;AACnD;AAAA,KACF;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;AAiBO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAK,GAAI,eAAA,EAAgB;AAC5C,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAE9B,EAAA,MAAM,gBAAA,GAAmB,IAAA,KAAS,MAAA,GAAS,YAAA,GAAe,aAAA;AAE1D,EAAA,MAAM,8BACJI,IAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,UAAU,MAAA,GAAY,QAAA;AAAA,MAC5B,OAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,iFAAA;AAAA,QACA,+CAAA;AAAA,QACA,SAAA,IAAa,qBAAA;AAAA,QACb;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,QAAA,GAAW,WAAA,CAAY,OAAA,GAAU,MAAA;AAAA,QAC7C,CAAC,gBAAgB,GAAG,WAAW,CAAA,UAAA,EAAa,WAAA,CAAY,YAAY,CAAA,CAAA,GAAK;AAAA,OAC3E;AAAA,MACA,eAAa,QAAA,IAAY,MAAA;AAAA,MAExB,QAAA,EAAA;AAAA,QAAA,IAAA,oBACCJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0DACb,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,wBAEFA,GAAAA,CAACa,eAAAA,EAAA,EACE,QAAA,EAAA,CAAC,6BACAb,GAAAA;AAAA,UAACG,MAAAA,CAAO,IAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,YAChC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,MAAA,EAAO;AAAA,YACrC,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,YAC7B,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,YAC7B,SAAA,EAAU,2BAAA;AAAA,YAET;AAAA;AAAA,SACH,EAEJ,CAAA;AAAA,QACC,CAAC,aAAa,KAAA,oBACbH,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAEnD;AAGF,EAAA,IAAI,aAAa,OAAA,EAAS;AACxB,IAAA,uBACEI,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,sBACrCA,IAAC,cAAA,EAAA,EAAe,IAAA,EAAM,SAAS,MAAA,GAAS,OAAA,GAAU,QAC/C,QAAA,EAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,WAAA;AACT;AAUO,SAAS,kBAAA,CAAmB;AAAA,EACjC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,2DAAA,EAA6D,SAAS,CAAA;AAAA,MACpF,KAAA,EAAO;AAAA,QACL,aAAa,WAAA,CAAY,UAAA;AAAA,QACzB,GAAG;AAAA,OACL;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC/SA,IAAM,YAAA,GAAeK,IAAI,EAAA,EAAI;AAAA,EAC3B,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,mBAAA;AAAA,MACT,OAAA,EAAS,mBAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAED,IAAM,kBAAA,GAAqBA,IAAI,uBAAA,EAAyB;AAAA,EACtD,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,qDAAA;AAAA,MACT,OAAA,EAAS,iDAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACf,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAgDD,SAAS,WAAA,CAAY;AAAA,EACnB,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEL,IAAC,IAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,UAAS,EAAG,CAAC,GAAG,CAAA,qBACpCA,IAAC,IAAA,EAAA,EAAW,SAAA,EAAW,aAAa,EAAE,OAAA,EAAS,CAAA,EAC7C,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,uBAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,YAAY,WAAA,CAAY,OAAA;AAAA,QACxB,MAAA,EAAQ,OAAA,KAAY,SAAA,GAAY,EAAA,GAAK,EAAA;AAAA,QACrC,OAAO,CAAA,EAAG,EAAA,GAAK,IAAA,CAAK,MAAA,KAAW,EAAE,CAAA,CAAA;AAAA;AACnC;AAAA,GACF,EAAA,EARO,CAST,CACD,CAAA,EACH,CAAA;AAEJ;AAMA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,IAAI,cAAc,KAAA,EAAO;AACvB,IAAA,uBAAOA,IAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,eAAc,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAY,EAAG,CAAA;AAAA,EACzE;AACA,EAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,IAAA,uBACEA,IAAC,SAAA,EAAA,EAAU,SAAA,EAAU,eAAc,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAY,EAAG,CAAA;AAAA,EAEtE;AACA,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,wBAAA,EAAyB,CAAA;AACzD;AAMA,SAAS,eAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA,GAAkB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAA,IAC7B,YAAA;AAAA,IACA,oBAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,SAAA,GAAY,IAAA;AAAA,IACZ,OAAA,GAAU,KAAA;AAAA,IACV,OAAA,GAAU,KAAA;AAAA,IACV,UAAA;AAAA,IACA,iBAAA,GAAoB,KAAA;AAAA,IACpB,SAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgB,CAAC,iBAAA,IAAqB,CAAC,aAAA;AAG7C,EAAA,MAAM,UAAA,GAAmBwE,MAAA,CAAA,WAAA;AAAA,IACvB,CAAC,KAAQ,KAAA,KAA0B;AACjC,MAAA,IAAI,QAAA,EAAU,OAAO,QAAA,CAAS,GAAA,EAAK,KAAK,CAAA;AACxC,MAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,KAAQ,IAAA,IAAQ,QAAQ,GAAA,EAAK;AAC1D,QAAA,OAAO,MAAA,CAAQ,IAAgC,EAAE,CAAA;AAAA,MACnD;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAGA,EAAA,MAAM,YAAA,GAAqBA,MAAA,CAAA,WAAA;AAAA,IACzB,CAAC,KAAQ,GAAA,KAA+B;AACtC,MAAA,IAAI,GAAA,CAAI,UAAA,EAAY,OAAO,GAAA,CAAI,WAAW,GAAG,CAAA;AAC7C,MAAA,IAAI,GAAA,CAAI,WAAA;AACN,QAAA,OAAQ,GAAA,CAAgC,IAAI,WAAW,CAAA;AACzD,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAC,GACH;AAGA,EAAA,MAAM,YAAA,GAAqBA,eAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,CAAa,IAAA,EAAK,KAAM,IAAI,OAAO,IAAA;AACxD,IAAA,MAAM,MAAA,GAAS,aAAa,WAAA,EAAY;AACxC,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MAAO,CAAC,GAAA,KAClB,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ;AACpB,QAAA,MAAM,GAAA,GAAM,YAAA,CAAa,GAAA,EAAK,GAAG,CAAA;AACjC,QAAA,IAAI,GAAA,IAAO,MAAM,OAAO,KAAA;AACxB,QAAA,OAAO,OAAO,GAAG,CAAA,CAAE,WAAA,EAAY,CAAE,SAAS,MAAM,CAAA;AAAA,MAClD,CAAC;AAAA,KACH;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,YAAY,CAAC,CAAA;AAG9C,EAAA,MAAM,UAAA,GAAmBA,eAAQ,MAAM;AACrC,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,CAAU,WAAW,OAAO,YAAA;AAC/C,IAAA,MAAM,GAAA,GAAM,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,UAAU,QAAQ,CAAA;AAC3D,IAAA,IAAI,CAAC,KAAK,OAAO,YAAA;AACjB,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,YAAY,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AAC9C,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,CAAA,EAAG,GAAG,CAAA;AAChC,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,CAAA,EAAG,GAAG,CAAA;AAChC,MAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,IAAA,IAAQ,IAAA,EAAM,OAAO,CAAA;AACzC,MAAA,IAAI,IAAA,IAAQ,MAAM,OAAO,CAAA;AACzB,MAAA,IAAI,IAAA,IAAQ,MAAM,OAAO,EAAA;AACzB,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,QAAA,OAAO,IAAA,GAAO,IAAA;AAAA,MAChB;AACA,MAAA,OAAO,OAAO,IAAI,CAAA,CAAE,aAAA,CAAc,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IAChD,CAAC,CAAA;AACD,IAAA,IAAI,SAAA,CAAU,SAAA,KAAc,MAAA,EAAQ,MAAA,CAAO,OAAA,EAAQ;AACnD,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,YAAA,EAAc,SAAA,EAAW,OAAA,EAAS,YAAY,CAAC,CAAA;AAGnD,EAAA,MAAM,SAAA,GAAY,iBAAiB,SAAA,IAAa,CAAA;AAChD,EAAA,MAAM,QAAA,GAAW,iBAAiB,QAAA,IAAY,EAAA;AAC9C,EAAA,MAAM,YAAY,UAAA,CAAW,MAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,SAAA,GAAY,QAAQ,CAAC,CAAA;AAE9D,EAAA,MAAM,aAAA,GAAsBA,eAAQ,MAAM;AACxC,IAAA,IAAI,CAAC,YAAY,OAAO,UAAA;AACxB,IAAA,MAAM,QAAQ,SAAA,GAAY,QAAA;AAC1B,IAAA,OAAO,UAAA,CAAW,KAAA,CAAM,KAAA,EAAO,KAAA,GAAQ,QAAQ,CAAA;AAAA,EACjD,GAAG,CAAC,UAAA,EAAY,UAAA,EAAY,SAAA,EAAW,QAAQ,CAAC,CAAA;AAGhD,EAAA,MAAM,SAAA,GAAkBA,MAAA,CAAA,OAAA;AAAA,IACtB,MAAM,IAAI,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM,UAAA,CAAW,GAAA,EAAK,CAAC,CAAC,CAAC,CAAA;AAAA,IAC/D,CAAC,eAAe,UAAU;AAAA,GAC5B;AAEA,EAAA,MAAM,cACJ,UAAA,IACA,SAAA,CAAU,IAAA,GAAO,CAAA,IACjB,kBAAkB,IAAA,IAClB,CAAC,GAAG,SAAS,EAAE,KAAA,CAAM,CAAC,OAAO,cAAA,CAAe,GAAA,CAAI,EAAE,CAAC,CAAA;AAErD,EAAA,MAAM,eACJ,UAAA,IACA,CAAC,WAAA,IACD,cAAA,IAAkB,QAClB,CAAC,GAAG,SAAS,CAAA,CAAE,KAAK,CAAC,EAAA,KAAO,cAAA,CAAe,GAAA,CAAI,EAAE,CAAC,CAAA;AAEpD,EAAA,MAAM,eAAA,GAAwBA,mBAAY,MAAM;AAC9C,IAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,cAAA,EAAgB;AAC3C,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,cAAc,CAAA;AACnC,MAAA,SAAA,CAAU,QAAQ,CAAC,EAAA,KAAO,IAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAA;AACzC,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,cAAc,CAAA;AACnC,MAAA,SAAA,CAAU,QAAQ,CAAC,EAAA,KAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AACtC,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,SAAA,EAAW,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAE9D,EAAA,MAAM,eAAA,GAAwBA,MAAA,CAAA,WAAA;AAAA,IAC5B,CAAC,KAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,cAAA,EAAgB;AAC3C,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,cAAc,CAAA;AACnC,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG;AACnB,QAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,MAChB;AACA,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,gBAAgB,iBAAiB;AAAA,GACpC;AAGA,EAAA,MAAM,UAAA,GAAmBA,MAAA,CAAA,WAAA;AAAA,IACvB,CAAC,QAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,IAAI,SAAA,EAAW,aAAa,QAAA,EAAU;AACpC,QAAA,MAAM,aAAA,GACJ,UAAU,SAAA,KAAc,KAAA,GACpB,SACA,SAAA,CAAU,SAAA,KAAc,SACtB,IAAA,GACA,KAAA;AACR,QAAA,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAW,aAAA,EAAe,CAAA;AAAA,MACrD,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,CAAA;AAAA,MAC7C;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAW,YAAY;AAAA,GAC1B;AAGA,EAAA,MAAM,OAAA,GAAgBA,MAAA,CAAA,WAAA;AAAA,IACpB,CAAC,IAAA,KAAiB;AAChB,MAAA,kBAAA,GAAqB,EAAE,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,CAAC,oBAAoB,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,WAAA,GAAoBA,MAAA,CAAA,WAAA;AAAA,IACxB,CAAC,IAAA,KAAiB;AAChB,MAAA,kBAAA,GAAqB,EAAE,SAAA,EAAW,CAAA,EAAG,QAAA,EAAU,MAAM,CAAA;AAAA,IACvD,CAAA;AAAA,IACA,CAAC,kBAAkB;AAAA,GACrB;AAGA,EAAA,MAAM,WAAA,GAAoBA,eAAQ,MAAM;AACtC,IAAA,MAAM,UAAA,GAAa,CAAA;AACnB,IAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,MAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,YAAW,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA;AAAA,IACvD;AACA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AACtC,IAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAY,IAAI,CAAA;AACxC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,QAAQ,UAAU,CAAA;AACnD,IAAA,IAAI,GAAA,GAAM,QAAQ,UAAA,EAAY;AAC5B,MAAA,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,UAAU,CAAA;AAAA,IACtC;AACA,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAA,GAAM,KAAA,EAAM,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,GAAQ,CAAC,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,UAAA,EAAY,SAAS,CAAC,CAAA;AAG1B,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAwC;AAC1D,IAAA,IAAI,KAAA,KAAU,UAAU,OAAO,aAAA;AAC/B,IAAA,IAAI,KAAA,KAAU,SAAS,OAAO,YAAA;AAC9B,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,aAAA,GAAqC;AAAA,IACzC,UAAA,EAAY,MAAA;AAAA,IACZ,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,CAAA;AAAA,IACd,MAAA,EAAQ,CAAA,YAAA,EAAe,WAAA,CAAY,UAAU,CAAA,CAAA;AAAA,IAC7C,YAAY,WAAA,CAAY,MAAA;AAAA,IACxB,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,oBAAA,GAA4C;AAAA,IAChD,GAAG,aAAA;AAAA,IACH,UAAA,EAAY,YAAY,MAAA,CAAO,OAAA;AAAA,IAC/B,WAAA,EAAa,YAAY,MAAA,CAAO;AAAA,GAClC;AAEA,EAAA,MAAM,aAAa,YAAA,KAAiB,MAAA;AACpC,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,IAAW,aAAA,CAAc,MAAA,KAAW,CAAA;AAErD,EAAA,uBACEpE,IAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAU,KAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACxC,KAAA;AAAA,MACA,iBAAA;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,4CAAA;AAAA,YACV,KAAA,EAAO,EAAE,WAAA,EAAa,WAAA,CAAY,UAAA,EAAW;AAAA,YAE7C,QAAA,EAAA;AAAA,8BAAAJ,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,kBAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,IAAA;AAAK;AAAA,eACxC;AAAA,8BACAA,GAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,MAAA;AAAA,kBACL,IAAA,EAAK,WAAA;AAAA,kBACL,YAAA,EAAW,cAAA;AAAA,kBACX,WAAA,EAAY,WAAA;AAAA,kBACZ,OAAO,YAAA,IAAgB,EAAA;AAAA,kBACvB,UAAU,CAAC,CAAA,KAAM,oBAAA,GAAuB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBACtD,SAAA,EAAU,mEAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,OAAA;AAAQ;AAAA;AAC3C;AAAA;AAAA,SACF;AAAA,wBAIFA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBACb,QAAA,kBAAAI,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wBAAA,EACf,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,WACC,QAAA,kBAAAI,IAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,YAAY,WAAA,CAAY,cAAA;AAAA,gBACxB,YAAA,EAAc,CAAA,UAAA,EAAa,WAAA,CAAY,UAAU,CAAA;AAAA,eACnD;AAAA,cAGC,QAAA,EAAA;AAAA,gBAAA,UAAA,oBACCJ,GAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,KAAA;AAAA,oBACN,SAAA,EAAW,EAAA;AAAA,sBACT,kBAAA,CAAmB,EAAE,OAAA,EAAS,CAAA;AAAA,sBAC9B;AAAA,qBACF;AAAA,oBAEA,QAAA,kBAAAA,GAAAA;AAAA,sBAAC,OAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,UAAA;AAAA,wBACL,YAAA,EAAW,iBAAA;AAAA,wBACX,OAAA,EAAS,WAAA;AAAA,wBACT,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,0BAAA,IAAI,EAAA,KAAO,aAAA,GAAgB,YAAA;AAAA,wBAC7B,CAAA;AAAA,wBACA,QAAA,EAAU,eAAA;AAAA,wBACV,KAAA,EAAO,cAAc,oBAAA,GAAuB;AAAA;AAAA;AAC9C;AAAA,iBACF;AAAA,gBAID,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,kBAAA,MAAM,UAAA,GAAa,IAAI,QAAA,IAAY,YAAA;AACnC,kBAAA,MAAM,mBACJ,SAAA,EAAW,QAAA,KAAa,GAAA,CAAI,EAAA,GACxB,UAAU,SAAA,GACV,IAAA;AACN,kBAAA,MAAM,aAAA,GAAgB,aAClB,gBAAA,KAAqB,KAAA,GAClB,cACD,gBAAA,KAAqB,MAAA,GAClB,eACA,MAAA,GACL,MAAA;AAEJ,kBAAA,uBACEA,GAAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBAEC,KAAA,EAAM,KAAA;AAAA,sBACN,WAAA,EAAW,aAAA;AAAA,sBACX,SAAA,EAAW,EAAA;AAAA,wBACT,kBAAA,CAAmB,EAAE,OAAA,EAAS,CAAA;AAAA,wBAC9B,UAAA,CAAW,IAAI,KAAK;AAAA,uBACtB;AAAA,sBACA,KAAA,EAAO;AAAA,wBACL,OAAO,GAAA,CAAI,KAAA;AAAA,wBACX,KAAA,EAAO,YAAY,IAAA,CAAK;AAAA,uBAC1B;AAAA,sBAEC,uCACCI,IAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAK,QAAA;AAAA,0BACL,SAAA,EAAU,sEAAA;AAAA,0BACV,YAAA,EAAY,CAAA,QAAA,EAAW,GAAA,CAAI,MAAM,CAAA,CAAA;AAAA,0BACjC,OAAA,EAAS,MAAM,UAAA,CAAW,GAAA,CAAI,EAAE,CAAA;AAAA,0BAEhC,QAAA,EAAA;AAAA,4CAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,MAAA,EAAO,CAAA;AAAA,4CAClBA,GAAAA;AAAA,8BAAC,QAAA;AAAA,8BAAA;AAAA,gCACC,SAAA,EAAW,gBAAA;AAAA,gCACX,WAAA,EAAa,YAAY,MAAA,CAAO;AAAA;AAAA;AAClC;AAAA;AAAA,0BAGF,GAAA,CAAI;AAAA,qBAAA;AAAA,oBA1BD,GAAA,CAAI;AAAA,mBA4BX;AAAA,gBAEJ,CAAC;AAAA;AAAA;AAAA,WACH,EACF,CAAA;AAAA,0BAEAI,KAAC,OAAA,EAAA,EAEE,QAAA,EAAA;AAAA,YAAA,OAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,UAAS,EAAG,CAAC,CAAA,EAAG,CAAA,qBACnCJ,GAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,QAAA,EAAU,OAAA,CAAQ,MAAA,IAAU,UAAA,GAAa,CAAA,GAAI,CAAA,CAAA;AAAA,gBAC7C,OAAA;AAAA,gBACA;AAAA,eAAA;AAAA,cAHK,YAAY,CAAC,CAAA;AAAA,aAKrB,CAAA;AAAA,YAGF,OAAA,oBACCA,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,OAAA,CAAQ,MAAA,IAAU,UAAA,GAAa,CAAA,GAAI,CAAA,CAAA;AAAA,gBAC5C,SAAA,EAAU,mBAAA;AAAA,gBAET,wCACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,IAAA,CAAK,IAAA,IACpC,QAAA,kBAAAA,GAAAA,CAAC,OAAE,SAAA,EAAU,SAAA,EAAU,gCAAkB,CAAA,EAC3C;AAAA;AAAA,aAEJ,EACF,CAAA;AAAA,YAID,CAAC,OAAA,oBACAA,GAAAA,CAACa,eAAAA,EAAA,EAAgB,IAAA,EAAK,WAAA,EACnB,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,GAAA,EAAK,QAAA,KAAa;AACpC,cAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,GAAA,EAAK,QAAQ,CAAA;AACtC,cAAA,MAAM,UAAA,GAAa,cAAA,EAAgB,GAAA,CAAI,KAAK,CAAA,IAAK,KAAA;AACjD,cAAA,MAAM,WAAA,GAAc,CAAC,CAAC,UAAA;AAEtB,cAAA,uBACET,IAAAA;AAAA,gBAACD,MAAAA,CAAO,EAAA;AAAA,gBAAP;AAAA,kBAEC,OAAA,EAAS,aAAA,GAAgB,EAAE,OAAA,EAAS,GAAE,GAAI,KAAA;AAAA,kBAC1C,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,kBACtB,IAAA,EAAM,aAAA,GAAgB,EAAE,OAAA,EAAS,GAAE,GAAI,MAAA;AAAA,kBACvC,UAAA,EAAY,EAAE,QAAA,EAAU,YAAA,CAAa,KAAK,QAAA,EAAS;AAAA,kBACnD,SAAA,EAAW,EAAA;AAAA,oBACT,4BAAA;AAAA,oBACA,WAAA,IAAe;AAAA,mBACjB;AAAA,kBACA,KAAA,EAAO;AAAA,oBACL,aAAa,WAAA,CAAY,UAAA;AAAA,oBACzB,UAAA,EAAY,UAAA,GACR,CAAA,EAAG,WAAA,CAAY,OAAO,OAAO,CAAA,EAAA,CAAA,GAC7B,OAAA,IAAW,QAAA,GAAW,CAAA,KAAM,CAAA,GAC1B,CAAA,EAAG,WAAA,CAAY,OAAO,CAAA,EAAA,CAAA,GACtB;AAAA,mBACR;AAAA,kBACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,oBAAA,IAAI,SAAA,EAAW;AACb,sBACE,CAAA,CAAE,aAAA,CACF,KAAA,CAAM,UAAA,GAAa,UAAA,GACjB,GAAG,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAA,CAAA,GAC7B,WAAA,CAAY,OAAA;AAAA,oBAClB;AAAA,kBACF,CAAA;AAAA,kBACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,oBAAA,IAAI,SAAA,EAAW;AACb,sBACE,EAAE,aAAA,CACF,KAAA,CAAM,UAAA,GAAa,UAAA,GACjB,GAAG,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAA,CAAA,GAC7B,WAAW,QAAA,GAAW,CAAA,KAAM,IAC1B,CAAA,EAAG,WAAA,CAAY,OAAO,CAAA,EAAA,CAAA,GACtB,EAAA;AAAA,oBACR;AAAA,kBACF,CAAA;AAAA,kBACA,OAAA,EAAS,MAAM,UAAA,GAAa,GAAG,CAAA;AAAA,kBAG9B,QAAA,EAAA;AAAA,oBAAA,UAAA,oBACCH,GAAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,YAAA,CAAa,EAAE,OAAA,EAAS,CAAA;AAAA,0BACxB;AAAA,yBACF;AAAA,wBAEA,QAAA,kBAAAA,GAAAA;AAAA,0BAAC,OAAA;AAAA,0BAAA;AAAA,4BACC,IAAA,EAAK,UAAA;AAAA,4BACL,YAAA,EAAY,cAAc,KAAK,CAAA,CAAA;AAAA,4BAC/B,OAAA,EAAS,UAAA;AAAA,4BACT,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,8BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,8BAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,4BACvB,CAAA;AAAA,4BACA,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,4BAClC,KAAA,EACE,aACI,oBAAA,GACA;AAAA;AAAA;AAER;AAAA,qBACF;AAAA,oBAID,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,sBAAA,MAAM,QAAA,GAAW,YAAA,CAAa,GAAA,EAAK,GAAG,CAAA;AACtC,sBAAA,MAAM,QAAA,GAAW,GAAA,CAAI,IAAA,GACjB,GAAA,CAAI,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,GACtB,QAAA,IAAY,IAAA,GACV,MAAA,CAAO,QAAQ,CAAA,GACf,EAAA;AAEN,sBAAA,uBACEA,GAAAA;AAAA,wBAAC,IAAA;AAAA,wBAAA;AAAA,0BAEC,SAAA,EAAW,EAAA;AAAA,4BACT,YAAA,CAAa,EAAE,OAAA,EAAS,CAAA;AAAA,4BACxB,UAAA,CAAW,IAAI,KAAK;AAAA,2BACtB;AAAA,0BACA,KAAA,EAAO;AAAA,4BACL,KAAA,EAAO,YAAY,IAAA,CAAK,OAAA;AAAA,4BACxB,OAAO,GAAA,CAAI;AAAA,2BACb;AAAA,0BAEC,QAAA,EAAA;AAAA,yBAAA;AAAA,wBAVI,GAAA,CAAI;AAAA,uBAWX;AAAA,oBAEJ,CAAC;AAAA;AAAA,iBAAA;AAAA,gBAzFI;AAAA,eA0FP;AAAA,YAEJ,CAAC,CAAA,EACH;AAAA,WAAA,EAEJ;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGC,8BACCI,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,4DAAA;AAAA,YACV,KAAA,EAAO,EAAE,WAAA,EAAa,WAAA,CAAY,UAAA,EAAW;AAAA,YAG7C,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAAJ,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,2BAAA;AAAA,oBACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,IAAA,EAAK;AAAA,oBACvC,QAAA,EAAA;AAAA;AAAA,iBAED;AAAA,gCACAI,IAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,OAAO,QAAQ,CAAA;AAAA,oBACtB,eAAe,CAAC,CAAA,KAAM,WAAA,CAAY,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,oBAE3C,QAAA,EAAA;AAAA,sCAAAJ,GAAAA,CAAC,iBAAc,IAAA,EAAK,IAAA,EAAK,WAAU,sBAAA,EACjC,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,CAAA,EACf,CAAA;AAAA,sCACAA,GAAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,GAAA,qBACpBA,GAAAA,CAAC,UAAA,EAAA,EAAqB,OAAO,MAAA,CAAO,GAAG,GACpC,QAAA,EAAA,GAAA,EAAA,EADc,GAEjB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AACF,eAAA,EACF,CAAA;AAAA,8BAGAA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,2BAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,CAAY,KAAK,IAAA,EAAK;AAAA,kBAErC,wBAAc,CAAA,GACX,WAAA,GACA,CAAA,EAAG,SAAA,GAAY,WAAW,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,GAAA,CAAA,CAAK,YAAY,CAAA,IAAK,QAAA,EAAU,SAAS,CAAC,OAAO,SAAS,CAAA;AAAA;AAAA,eACpG;AAAA,8BAGAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAAJ,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,aAAA;AAAA,oBACV,UAAU,SAAA,KAAc,CAAA;AAAA,oBACxB,YAAA,EAAW,kBAAA;AAAA,oBACX,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,oBACxB,iBAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA,iBACxC;AAAA,gCACAA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,aAAA;AAAA,oBACV,UAAU,SAAA,KAAc,CAAA;AAAA,oBACxB,YAAA,EAAW,qBAAA;AAAA,oBACX,OAAA,EAAS,MAAM,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAAA,oBACpC,iBAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAACyE,WAAAA,EAAA,EAAY,WAAU,aAAA,EAAc;AAAA;AAAA,iBACvC;AAAA,gBAEC,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,qBAChBzE,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBAEC,OAAA,EAAS,CAAA,KAAM,SAAA,GAAY,SAAA,GAAY,OAAA;AAAA,oBACvC,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,qBAAA;AAAA,oBACV,YAAA,EAAY,CAAA,WAAA,EAAc,CAAA,GAAI,CAAC,CAAA,CAAA;AAAA,oBAC/B,cAAA,EAAc,CAAA,KAAM,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,oBACzC,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,oBACxB,iBAAA;AAAA,oBAEC,QAAA,EAAA,CAAA,GAAI;AAAA,mBAAA;AAAA,kBATA;AAAA,iBAWR,CAAA;AAAA,gCAEDA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,aAAA;AAAA,oBACV,QAAA,EAAU,aAAa,UAAA,GAAa,CAAA;AAAA,oBACpC,YAAA,EAAW,iBAAA;AAAA,oBACX,OAAA,EAAS,MAAM,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAAA,oBACpC,iBAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA,iBACxC;AAAA,gCACAA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,aAAA;AAAA,oBACV,QAAA,EAAU,aAAa,UAAA,GAAa,CAAA;AAAA,oBACpC,YAAA,EAAW,iBAAA;AAAA,oBACX,OAAA,EAAS,MAAM,OAAA,CAAQ,UAAA,GAAa,CAAC,CAAA;AAAA,oBACrC,iBAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AACzC,eAAA,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AAEO,IAAM,UAAA,GAAmBwE,kBAAW,eAAe;AC5sB1D,IAAM,WAAA,GAAkE;AAAA,EACtE,IAAA,EAAM,kCAAA;AAAA,EACN,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS,iBAAA;AAAA,EACT,KAAA,EAAO,gBAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;AAeA,SAAS,iBAAA,CAAkB;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,IAAA,IAAQ,MAAM,CAAA;AACjD,EAAA,MAAM,aAAA,GACJ,OAAO,KAAA,CAAM,SAAA,KAAc,WACvB,KAAA,CAAM,SAAA,GACN,KAAA,CAAM,SAAA,CAAU,cAAA,EAAe;AAErC,EAAA,uBACEpE,IAAAA;AAAA,IAACD,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iCAAA;AAAA,QACA,SAAS,OAAA,IAAW;AAAA,OACtB;AAAA,MACA,SAAS,aAAA,GAAgB,EAAE,SAAS,CAAA,EAAG,CAAA,EAAG,IAAG,GAAI,KAAA;AAAA,MACjD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MAC5B,UAAA,EACE,aAAA,GACI,EAAE,KAAA,EAAO,KAAA,GAAQ,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU,GACvD,EAAE,UAAU,CAAA,EAAE;AAAA,MAIpB,QAAA,EAAA;AAAA,wBAAAH,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6EAAA,EACZ,QAAA,EAAA,KAAA,CAAM,wBACLA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,4BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,QAAA;AAAA,cACZ,SAAA,EAAW,CAAA,QAAA,EAAW,QAAQ,CAAA,WAAA,EAAc,QAAQ,CAAA;AAAA;AACtD;AAAA,SACF,EAEJ,CAAA;AAAA,wBAGAI,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,+BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,YAAY,WAAA,CAAY,MAAA;AAAA,cACxB,MAAA,EAAQ,CAAA,UAAA,EAAa,WAAA,CAAY,UAAU,CAAA;AAAA,aAC7C;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,aAAA,oBACCJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2GACb,QAAA,EAAA,aAAA,EACH,CAAA;AAAA,8BAEFA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kFAAA,EACX,gBAAM,KAAA,EACT,CAAA;AAAA,cACC,KAAA,CAAM,+BACLA,GAAAA,CAAC,OAAE,SAAA,EAAU,yEAAA,EACV,gBAAM,WAAA,EACT,CAAA;AAAA,cAED,KAAA,CAAM,QAAA,IAAY,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,CAAE,MAAA,GAAS,CAAA,oBACtDA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qCAAA,EACZ,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,qBAC9CI,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,kEAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,sBAAI;AAAA,qBAAA,EAAC,CAAA;AAAA,oBAAQ,GAAA;AAAA,oBACtE;AAAA;AAAA,iBAAA;AAAA,gBAJI;AAAA,eAMR,CAAA,EACH;AAAA;AAAA;AAAA;AAEJ;AAAA;AAAA,GACF;AAEJ;AAMO,SAAS,aAAA,CAAc;AAAA,EAC5B,MAAA;AAAA,EACA,MAAA,GAAS,MAAA;AAAA,EACT,cAAA,GAAiB,IAAA;AAAA,EACjB,SAAAN,QAAAA,GAAU,IAAA;AAAA,EACV,UAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,aAAA,GAAgBA,YAAW,CAAC,aAAA;AAElC,EAAA,MAAM,WAAA,GAAoB4E,cAAuB,IAAI,CAAA;AAErD,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,cAAc,OAAA,EAAS;AAC5B,IAAA,MAAM,KAAK,WAAA,CAAY,OAAA;AACvB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,CAAC,KAAK,CAAA,KAAM;AACX,QAAA,IAAI,KAAA,CAAM,gBAAgB,UAAA,EAAW;AAAA,MACvC,CAAA;AAAA,MACA,EAAE,WAAW,GAAA;AAAI,KACnB;AACA,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAExB,EAAA,uBACEtE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MACnC,IAAA,EAAK,MAAA;AAAA,MACL,YAAA,EAAW,UAAA;AAAA,MAGX,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,8BAAA;AAAA,cACA,WAAW,MAAA,IAAU,YAAA;AAAA,cACrB,WAAW,OAAA,IAAW,aAAA;AAAA,cACtB,WAAW,aAAA,IAAiB;AAAA,aAC9B;AAAA,YACA,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,2CAA2C,WAAA,CAAY,YAAA,IAAgB,kCAAkC,CAAA,MAAA,EAAS,WAAA,CAAY,gBAAgB,kCAAkC,CAAA,kBAAA,CAAA;AAAA,cAC5L,OAAA,EAAS;AAAA;AACX;AAAA,SACF;AAAA,wBAGAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AAC5B,UAAA,IAAI,IAAA,GAAyB,MAAA;AAC7B,UAAA,IAAI,MAAA,KAAW,SAAS,IAAA,GAAO,OAAA;AAC/B,UAAA,IAAI,WAAW,aAAA,EAAe,IAAA,GAAO,KAAA,GAAQ,CAAA,KAAM,IAAI,MAAA,GAAS,OAAA;AAEhE,UAAA,IAAI,WAAW,aAAA,EAAe;AAC5B,YAAA,uBACEA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,UAAA;AAAA,gBACL,SAAA,EAAU,kBAAA;AAAA,gBACV,KAAA,EAAO,EAAE,mBAAA,EAAqB,cAAA,EAAe;AAAA,gBAE5C,QAAA,EAAA,IAAA,KAAS,MAAA,mBACRI,IAAAA,CAAAM,UAAA,EACE,QAAA,EAAA;AAAA,kCAAAV,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,iBAAA;AAAA,oBAAA;AAAA,sBACC,KAAA;AAAA,sBACA,KAAA;AAAA,sBACA,IAAA,EAAK,MAAA;AAAA,sBACL,aAAA,EAAe,cAAA;AAAA,sBACf,aAAA;AAAA,sBACA;AAAA;AAAA,mBACF,EACF,CAAA;AAAA,kCACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDACb,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,iCAAA;AAAA,sBACV,KAAA,EAAO;AAAA,wBACL,UAAA,EAAY,WAAA,CAAY,KAAA,CAAM,IAAA,IAAQ,MAAM,CAAA;AAAA,wBAC5C,WAAW,CAAA,QAAA,EAAW,WAAA,CAAY,KAAA,CAAM,IAAA,IAAQ,MAAM,CAAC,CAAA;AAAA;AACzD;AAAA,mBACF,EACF,CAAA;AAAA,kCACAA,IAAC,KAAA,EAAA,EAAI;AAAA,iBAAA,EACP,CAAA,mBAEAI,IAAAA,CAAAM,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,kCAAAV,IAAC,KAAA,EAAA,EAAI,CAAA;AAAA,kCACLA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDACb,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,iCAAA;AAAA,sBACV,KAAA,EAAO;AAAA,wBACL,UAAA,EAAY,WAAA,CAAY,KAAA,CAAM,IAAA,IAAQ,MAAM,CAAA;AAAA,wBAC5C,WAAW,CAAA,QAAA,EAAW,WAAA,CAAY,KAAA,CAAM,IAAA,IAAQ,MAAM,CAAC,CAAA;AAAA;AACzD;AAAA,mBACF,EACF,CAAA;AAAA,kCACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QACb,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,iBAAA;AAAA,oBAAA;AAAA,sBACC,KAAA;AAAA,sBACA,KAAA;AAAA,sBACA,IAAA,EAAK,OAAA;AAAA,sBACL,aAAA,EAAe,cAAA;AAAA,sBACf,aAAA;AAAA,sBACA;AAAA;AAAA,mBACF,EACF;AAAA,iBAAA,EACF;AAAA,eAAA;AAAA,cAlDG,KAAA,CAAM;AAAA,aAoDb;AAAA,UAEJ;AAEA,UAAA,uBACEA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,UAAA;AAAA,cACL,SAAA,EAAW,EAAA;AAAA,gBACT,WAAW,OAAA,IAAW;AAAA,eACxB;AAAA,cAEA,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,iBAAA;AAAA,gBAAA;AAAA,kBACC,KAAA;AAAA,kBACA,KAAA;AAAA,kBACA,IAAA;AAAA,kBACA,aAAA,EAAe,cAAA;AAAA,kBACf,aAAA;AAAA,kBACA;AAAA;AAAA;AACF,aAAA;AAAA,YAbK,KAAA,CAAM;AAAA,WAcb;AAAA,QAEJ,CAAC,CAAA,EACH,CAAA;AAAA,wBAGAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAa,SAAA,EAAU,0BAAA,EAC9B,qCACCA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iEAAA;AAAA,YACV,YAAA,EAAW;AAAA;AAAA,SACb,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AChNA,IAAM,eAAA,GAA0C;AAAA,EAC9C,IAAA,EAAM,WAAA;AAAA,EACN,SAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAQ,cAAA;AAAA,EACR,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,gBAAgB,SAAA,EAAkC;AACzD,EAAA,MAAM,OACJ,OAAO,SAAA,KAAc,WAAW,IAAI,IAAA,CAAK,SAAS,CAAA,GAAI,SAAA;AACxD,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,EAAQ,GAAI,KAAK,OAAA,EAAQ;AAC5C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAM,CAAA;AAE1C,EAAA,IAAI,OAAA,GAAU,GAAG,OAAO,UAAA;AACxB,EAAA,IAAI,OAAA,GAAU,EAAA,EAAI,OAAO,CAAA,EAAG,OAAO,CAAA,KAAA,CAAA;AAEnC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA;AACvC,EAAA,IAAI,OAAA,GAAU,EAAA,EAAI,OAAO,CAAA,EAAG,OAAO,CAAA,KAAA,CAAA;AAGnC,EAAA,OAAO,IAAA,CAAK,mBAAmB,MAAA,EAAW;AAAA,IACxC,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ;AAAA,GACT,CAAA;AACH;AAMA,SAAS2E,OAAAA,CAAO;AAAA,EACd,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,KAAA,GAAQ,MAAA,EAAQ,UAAA,CAAW,MAAM,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,MAAA,IAAU,eAAA,CAAgB,IAAI,KAAK,eAAA,CAAgB,SAAA;AAEnE,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACE3E,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,MAAA;AAAA,QACL,GAAA,EAAK,GAAG,IAAI,CAAA,OAAA,CAAA;AAAA,QACZ,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,YAAA,EAAc,KAAA;AAAA,UACd,SAAA,EAAW,OAAA;AAAA,UACX,UAAA,EAAY;AAAA;AACd;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,UAAA,EAAY,OAAA;AAAA,QACZ,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,UAAA,EAAY,CAAA;AAAA,QACZ,QAAA,EAAU,OAAA,CAAQ,MAAA,IAAU,CAAA,GAAI,EAAA,GAAK,EAAA;AAAA,QACrC,KAAA,EAAO,SAAA;AAAA,QACP,UAAA,EAAY,WAAA;AAAA,QACZ,UAAA,EAAY;AAAA,OACd;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAMA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,MAAA,EAAQ;AAEX,MAAA,IAAI,eAAe,cAAA,EAAgB;AACjC,QAAA,uBACEA,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,IAAA,EAAK,WAAA;AAAA,YACL,KAAA,EAAO,EAAA;AAAA,YACP,iBAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,MAEJ;AAEA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,uBAAOA,GAAAA,CAAAU,QAAAA,EAAA,EAAG,QAAA,EAAA,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAE,CAAA;AAAA,MAClC;AAEA,MAAA,uBACEV,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,UAAA,EAAY,SAAA,EAAW,YAAA,EAAa,EAC5D,QAAA,EAAA,IAAA,CAAK,IAAA,EACR,CAAA;AAAA,IAEJ;AAAA,IAEA,KAAK,MAAA,EAAQ;AACX,MAAA,uBACEA,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,KAAK,IAAA,CAAK,QAAA;AAAA,UACpB,IAAA,EAAM,KAAK,IAAA,CAAK,IAAA;AAAA,UAChB,KAAA,EAAO,KAAK,IAAA,CAAK,KAAA;AAAA,UACjB,cAAA,EAAc;AAAA;AAAA,OAChB;AAAA,IAEJ;AAAA,IAEA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,KAAK,IAAA,CAAK,QAAA;AAChB,MAAA,uBACEA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,IAAI,EAAA,CAAG,EAAA;AAAA,UACP,MAAM,EAAA,CAAG,IAAA;AAAA,UACT,MAAM,EAAA,CAAG,IAAA;AAAA,UACT,QAAQ,EAAA,CAAG,MAAA;AAAA,UACX,QAAQ,EAAA,CAAG,MAAA;AAAA,UACX,OAAO,EAAA,CAAG,KAAA;AAAA,UACV,UAAU,EAAA,CAAG,QAAA;AAAA,UACb;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA;AAEJ;AAMA,SAAS,aAAA,CAAc;AAAA,EACrB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,SAAA,GAAY,QAAQ,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM,CAAA;AACjE,EAAA,MAAM,IAAA,GAAO,UAAU,GAAA,CAAI,CAAC,MAAO,CAAA,CAAqC,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtF,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,GAAA,EAAK,EAAA;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY;AAAA;AACd;AAAA,SACF;AAAA,wBACAI,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,WAAA;AAAA,cACZ,UAAA,EAAY,QAAA;AAAA,cACZ,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,OAAA,CAAQ,UAAA,IAAc,QAAA;AAAA,cAAS,IAAA;AAAA,cAAG,UAAA,GAAa,UAAA,CAAW,IAAI,CAAA,GAAI;AAAA;AAAA;AAAA,SACrE;AAAA,wBACAJ,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY;AAAA;AACd;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAMO,IAAM,UAAA,GAAmB4E,MAAA,CAAA,UAAA;AAAA,EAC9B,SAASC,WAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,UAAA,GAAa,IAAA;AAAA,IACb,aAAA,GAAgB,KAAA;AAAA,IAChB,cAAA,EAAgB,kBAAA;AAAA,IAChB,UAAA;AAAA,IACA,iBAAA,GAAoB,KAAA;AAAA,IACpB,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,IAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,aAAa,MAAA,EAAQ,UAAA,EAAY,WAAU,GAChE,OAAA;AAGF,IAAA,MAAM,cAAA,GAAiB,sBAAsB,IAAA,KAAS,MAAA;AAGtD,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,uBACE7E,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAsB,OACnC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,SAAA,EAAW,OAAO,IAAA,CAAK,IAAA;AAAA,UACvB,aAAa,KAAA,CAAM,UAAA;AAAA,UACnB;AAAA;AAAA,OACF,EACF,CAAA;AAAA,IAEJ;AAGA,IAAA,MAAM,SAAS,IAAA,KAAS,MAAA;AAExB,IAAA,MAAM,WAAW,MAAA,GACb,CAAA,EAAG,OAAO,MAAA,CAAO,OAAO,OACxB,KAAA,CAAM,MAAA;AAEV,IAAA,MAAM,eAAe,MAAA,GACjB,CAAA,EAAG,OAAO,MAAA,CAAO,OAAO,OACxB,KAAA,CAAM,UAAA;AAGV,IAAA,IAAI,iBAAA,GAAoB,EAAA;AACxB,IAAA,KAAA,IAAS,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC5C,MAAA,IAAI,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA,KAAS,MAAA,EAAQ;AAC9B,QAAA,iBAAA,GAAoB,CAAA;AACpB,QAAA;AAAA,MACF;AAAA,IACF;AAGA,IAAA,MAAM,cACJ,UAAA,KACC,IAAA,KAAS,cACN,WAAA,GACA,IAAA,KAAS,SACP,MAAA,GACA,MAAA,CAAA;AAER,IAAA,uBACEI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,QACvC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,SAAS,aAAA,GAAgB,KAAA;AAAA,UACxC,UAAA,EAAY,YAAA;AAAA,UACZ,GAAG;AAAA,SACL;AAAA,QAGC,QAAA,EAAA;AAAA,UAAA,UAAA,IAAc,CAAC,0BACdJ,GAAAA;AAAA,YAAC2E,OAAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,IAAA;AAAA,cACA,SAAS,KAAA,CAAM,MAAA;AAAA,cACf,SAAA,EAAW,OAAO,IAAA,CAAK;AAAA;AAAA,WACzB;AAAA,0BAIFvE,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,aAAA,EAAe,QAAA;AAAA,gBACf,GAAA,EAAK,CAAA;AAAA,gBACL,QAAA,EAAU,KAAA;AAAA,gBACV,QAAA,EAAU,CAAA;AAAA,gBACV,UAAA,EAAY,SAAS,UAAA,GAAa;AAAA,eACpC;AAAA,cAGC,QAAA,EAAA;AAAA,gBAAA,cAAA,IAAkB,+BACjBJ,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,WAAA;AAAA,sBACZ,KAAA,EAAO,OAAO,IAAA,CAAK,IAAA;AAAA,sBACnB,WAAA,EAAa,SAAS,CAAA,GAAI,CAAA;AAAA,sBAC1B,YAAA,EAAc,SAAS,CAAA,GAAI;AAAA,qBAC7B;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gCAIFA,GAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,UAAA,EAAY,QAAA;AAAA,sBACZ,MAAA,EAAQ,aAAa,YAAY,CAAA,CAAA;AAAA,sBACjC,YAAA,EAAc,SAAS,oBAAA,GAAuB,oBAAA;AAAA,sBAC9C,OAAA,EAAS,WAAA;AAAA,sBACT,OAAA,EAAS,MAAA;AAAA,sBACT,aAAA,EAAe,QAAA;AAAA,sBACf,GAAA,EAAK,CAAA;AAAA,sBACL,QAAA,EAAU;AAAA,qBACZ;AAAA,oBAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,sBAClBA,GAAAA;AAAA,sBAAC,WAAA;AAAA,sBAAA;AAAA,wBAEC,IAAA;AAAA,wBACA,WAAA,EAAa,CAAC,CAAC,WAAA;AAAA,wBACf,gBAAgB,CAAA,KAAM,iBAAA;AAAA,wBACtB,UAAA;AAAA,wBACA;AAAA,uBAAA;AAAA,sBALK;AAAA,qBAOR;AAAA;AAAA,iBACH;AAAA,gBAGC,aAAA,IAAiB,6BAChBA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,WAAA;AAAA,sBACZ,KAAA,EAAO,OAAO,IAAA,CAAK,IAAA;AAAA,sBACnB,WAAA,EAAa,SAAS,CAAA,GAAI,CAAA;AAAA,sBAC1B,YAAA,EAAc,SAAS,CAAA,GAAI;AAAA,qBAC7B;AAAA,oBAEC,0BAAgB,SAAS;AAAA;AAAA;AAC5B;AAAA;AAAA;AAEJ;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AClZzB,SAAS,cAAA,CAAe,EAAE,KAAA,EAAM,EAAsB;AACpD,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,cAAA,EAAgB,QAAA;AAAA,QAChB,OAAA,EAAS;AAAA,OACX;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,IAAA;AAAA,UACN,MAAA,EAAO,IAAA;AAAA,UACP,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,MAAA;AAAA,UACL,SAAA,EAAU,cAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAG,IAAA;AAAA,cACH,EAAA,EAAG,IAAA;AAAA,cACH,CAAA,EAAE,GAAA;AAAA,cACF,MAAA,EAAQ,KAAA;AAAA,cACR,WAAA,EAAY,GAAA;AAAA,cACZ,aAAA,EAAc,OAAA;AAAA,cACd,eAAA,EAAgB,IAAA;AAAA,cAChB,gBAAA,EAAiB,IAAA;AAAA,cACjB,OAAA,EAAS;AAAA;AAAA;AACX;AAAA;AACF;AAAA,GACF;AAEJ;AAMA,IAAM,oBAAA,GAAuB,EAAA;AAMtB,IAAM,aAAA,GAAsB8E,MAAA,CAAA,UAAA;AAAA,EACjC,SAASC,cAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,UAAA,GAAa,IAAA;AAAA,IACb,UAAA;AAAA,IACA,WAAA,GAAc,IAAA;AAAA,IACd,cAAA,GAAiB,KAAA;AAAA,IACjB,iBAAA,GAAoB,KAAA;AAAA,IACpB,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,IAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,IAAA,MAAM,SAAA,GAAkBD,cAAuB,IAAI,CAAA;AACnD,IAAA,MAAM,SAAA,GAAkBA,cAAuB,IAAI,CAAA;AACnD,IAAA,MAAM,iBAAA,GAA0BA,cAAO,KAAK,CAAA;AAG5C,IAAMA,MAAA,CAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,SAAA,CAAU,OAAQ,CAAA;AAGvD,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,CAAC,UAAA,IAAc,iBAAA,CAAkB,OAAA,EAAS;AAE9C,MAAA,SAAA,CAAU,OAAA,EAAS,cAAA,CAAe,EAAE,QAAA,EAAU,WAAW,CAAA;AAAA,IAC3D,CAAA,EAAG,CAAC,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAC,CAAA;AAGhC,IAAA,MAAM,YAAA,GAAqBA,mBAAY,MAAM;AAC3C,MAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,MAAA,IAAI,CAAC,EAAA,EAAI;AAGT,MAAA,IAAI,EAAA,CAAG,SAAA,IAAa,oBAAA,IAAwB,aAAA,EAAe;AACzD,QAAA,aAAA,EAAc;AAAA,MAChB;AAGA,MAAA,MAAM,kBAAA,GACJ,EAAA,CAAG,YAAA,GAAe,EAAA,CAAG,YAAY,EAAA,CAAG,YAAA;AACtC,MAAA,iBAAA,CAAkB,UAAU,kBAAA,GAAqB,EAAA;AAAA,IACnD,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,uBACE1E,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,QAAA,EAAU,YAAA;AAAA,QACV,IAAA,EAAK,KAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,YAAA,EAAW,iBAAA;AAAA,QACX,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,QACzC,KAAA,EAAO;AAAA,UACL,SAAA,EAAW,MAAA;AAAA,UACX,OAAA,EAAS,eAAA;AAAA;AAAA,UAET,cAAA,EAAgB,MAAA;AAAA,UAChB,cAAA,EAAgB,CAAA,EAAG,KAAA,CAAM,UAAU,CAAA,YAAA,CAAA;AAAA,UACnC,GAAG;AAAA,SACL;AAAA,QAGC,QAAA,EAAA;AAAA,UAAA,aAAA,oBAAiBJ,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,MAAA,CAAO,KAAK,IAAA,EAAM,CAAA;AAAA,UAG1D,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,EAAS,CAAA,KAAM;AAC5B,YAAA,MAAM,cAAc,CAAA,GAAI,CAAA,GAAI,QAAA,CAAS,CAAA,GAAI,CAAC,CAAA,GAAI,IAAA;AAC9C,YAAA,MAAM,QAAA,GAAW,WAAA,EAAa,IAAA,KAAS,OAAA,CAAQ,IAAA;AAE/C,YAAA,uBACEA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,KAAA,EAAO;AAAA,kBACL,SAAA,EAAW,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,WAAW,EAAA,GAAK;AAAA,iBAC3C;AAAA,gBAEA,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA;AAAA,oBACA,UAAA,EAAY,eAAe,CAAC,QAAA;AAAA,oBAC5B,aAAA,EAAe,cAAA;AAAA,oBACf,UAAA;AAAA,oBACA;AAAA;AAAA;AACF,eAAA;AAAA,cAXK,OAAA,CAAQ;AAAA,aAYf;AAAA,UAEJ,CAAC,CAAA;AAAA,0BAGDA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,WAAW,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG;AAAA;AAAA;AAAA,KAC7C;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;ACtJ5B,SAASgF,YAAAA,CAAY,EAAE,KAAA,EAAM,EAAsB;AACjD,EAAA,uBACEhF,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAE;AAAA,MAEvB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,yBAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAMO,IAAM,SAAA,GAAkBiF,MAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,WAAA,GAAc,mBAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,gBAAA,GAAmB,IAAA;AAAA,IACnB,OAAA,GAAU,CAAA;AAAA,IACV,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,IAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUD,gBAAS,EAAE,CAAA;AAC3C,IAAA,MAAM,WAAA,GAAoBA,cAA4B,IAAI,CAAA;AAG1D,IAAMA,MAAA,CAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,WAAA,CAAY,OAAQ,CAAA;AAEzD,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA;AAGxC,IAAA,MAAM,YAAA,GAAqBA,mBAAY,MAAM;AAC3C,MAAA,MAAM,KAAK,WAAA,CAAY,OAAA;AACvB,MAAA,IAAI,CAAC,EAAA,EAAI;AAET,MAAA,EAAA,CAAG,MAAM,MAAA,GAAS,MAAA;AAGlB,MAAA,MAAM,UAAA,GAAa,EAAA;AACnB,MAAA,MAAM,SAAA,GAAY,aAAa,OAAA,GAAU,EAAA;AACzC,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,cAAc,SAAS,CAAA;AAErD,MAAA,EAAA,CAAG,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA;AAAA,IAChC,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAMA,iBAAU,MAAM;AACpB,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,EAAG,CAAC,KAAA,EAAO,YAAY,CAAC,CAAA;AAExB,IAAA,MAAM,YAAA,GAAqBA,mBAAY,MAAM;AAC3C,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,MAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AAE1B,MAAA,QAAA,CAAS,OAAO,CAAA;AAChB,MAAA,QAAA,CAAS,EAAE,CAAA;AAGX,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,MAAM,KAAK,WAAA,CAAY,OAAA;AACvB,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,EAAA,CAAG,MAAM,MAAA,GAAS,MAAA;AAAA,QACpB;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ,CAAC,CAAA;AAE9B,IAAA,MAAM,aAAA,GAAsBA,MAAA,CAAA,WAAA;AAAA,MAC1B,CAAC,CAAA,KAAgD;AAC/C,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAC,EAAE,QAAA,EAAU;AACpC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,YAAA,EAAa;AAAA,QACf;AAAA,MACF,CAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAEA,IAAA,uBACE7E,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA;AAAA,QAC/C,KAAA,EAAO;AAAA,UACL,YAAY,KAAA,CAAM,MAAA;AAAA,UAClB,MAAA,EAAQ,CAAA,UAAA,EAAa,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,UACrC,YAAA,EAAc,EAAA;AAAA,UACd,OAAA,EAAS,UAAA;AAAA,UACT,GAAG;AAAA,SACL;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,KAAA;AAAA,cACA,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACxC,SAAA,EAAW,aAAA;AAAA,cACX,WAAA;AAAA,cACA,QAAA;AAAA,cACA,YAAA,EAAW,eAAA;AAAA,cACX,IAAA,EAAM,CAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL,IAAA,EAAM,CAAA;AAAA,gBACN,UAAA,EAAY,aAAA;AAAA,gBACZ,MAAA,EAAQ,MAAA;AAAA,gBACR,OAAA,EAAS,MAAA;AAAA,gBACT,MAAA,EAAQ,MAAA;AAAA,gBACR,KAAA,EAAO,OAAO,IAAA,CAAK,OAAA;AAAA,gBACnB,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,SAAA;AAAA,gBACZ,UAAA,EAAY,MAAA;AAAA,gBACZ,OAAA,EAAS,OAAA;AAAA,gBACT,SAAA,EAAW,EAAA;AAAA,gBACX,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,eAC5B;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAEC,oCACCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,YAAA;AAAA,cACT,UAAU,OAAA,IAAW,QAAA;AAAA,cACrB,YAAA,EAAW,cAAA;AAAA,cACX,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAQ,EAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,UAAA,EAAY,OAAA,IAAW,QAAA,GACnB,aAAA,GACA,OAAO,MAAA,CAAO,OAAA;AAAA,gBAClB,MAAA,EAAQ,aACN,OAAA,IAAW,QAAA,GAAW,MAAM,UAAA,GAAa,MAAA,CAAO,OAAO,OACzD,CAAA,CAAA;AAAA,gBACA,MAAA,EAAQ,OAAA,IAAW,QAAA,GAAW,SAAA,GAAY,SAAA;AAAA,gBAC1C,UAAA,EAAY,CAAA;AAAA,gBACZ,UAAA,EAAY,gDAAA;AAAA,gBACZ,OAAA,EAAS,OAAA,IAAW,QAAA,GAAW,GAAA,GAAM;AAAA,eACvC;AAAA,cAEA,QAAA,kBAAAA,GAAAA;AAAA,gBAACgF,YAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EACE,OAAA,IAAW,QAAA,GACP,MAAA,CAAO,KAAK,IAAA,GACZ;AAAA;AAAA;AAER;AAAA;AACF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACnLxB,IAAM,WAAA,GAAoE;AAAA,EACxE,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAMO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,eAAA,GAAkB,IAAA;AAAA,EAClB;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAC3C,EAAqB,eAAA;AACrB,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAE3C,EAAA,MAAM,gBAAA,GAAmB,aAAA,GACrB,EAAE,QAAA,EAAU,CAAA,EAAE,GACd,EAAE,IAAA,EAAM,QAAA,EAAmB,SAAA,EAAW,GAAA,EAAK,OAAA,EAAS,EAAA,EAAG;AAE3D,EAAA,uBACEhF,GAAAA,CAAQwB,MAAAA,EAAP,EAAY,IAAA,EAAY,cACvB,QAAA,kBAAAxB,GAAAA,CAACa,eAAAA,EAAA,EACE,kCACCT,IAAAA,CAAQyD,QAAA,EAAP,EAAc,YAAU,IAAA,EAEvB,QAAA,EAAA;AAAA,oBAAA7D,GAAAA,CAAQ,OAAA,EAAP,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAAA,GAAAA;AAAA,MAACG,MAAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,gCAAA;AAAA,QACV,KAAA,EAAO,EAAE,cAAA,EAAgB,WAAA,EAAa,sBAAsB,WAAA,EAAY;AAAA,QACxE,SAAS,aAAA,GAAgB,EAAC,GAAI,EAAE,SAAS,CAAA,EAAE;AAAA,QAC3C,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,QACtB,MAAM,aAAA,GAAgB,EAAC,GAAI,EAAE,SAAS,CAAA,EAAE;AAAA,QACxC,UAAA,EAAY,EAAE,QAAA,EAAU,aAAA,GAAgB,IAAI,GAAA;AAAI;AAAA,KAClD,EACF,CAAA;AAAA,oBAGAH,GAAAA,CAAQ,OAAA,EAAP,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAAI,IAAAA;AAAA,MAACD,MAAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,iDAAA;AAAA,UACA,YAAY,IAAI,CAAA;AAAA,UAChB,6BAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,CAAA,EAAG,MAAA;AAAA,UACH,CAAA,EAAG,MAAA;AAAA,UACH,UAAA,EAAY,mBAAA;AAAA,UACZ,cAAA,EAAgB,YAAA;AAAA,UAChB,oBAAA,EAAsB,YAAA;AAAA,UACtB,WAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAa,OAAA;AAAA,UACb,aAAa,WAAA,CAAY,WAAA;AAAA,UACzB,WAAW,eAAA,CAAgB;AAAA,SAC7B;AAAA,QACA,OAAA,EAAS,gBAAgB,EAAC,GAAI,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,QACxD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,QAChC,IAAA,EAAM,gBAAgB,EAAC,GAAI,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,QACrD,UAAA,EAAY,gBAAA;AAAA,QAGZ,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,YAAA,EAAA,EAAa,MAAA,EAAO,OAAA,EAAQ,SAAS,IAAA,EAAM,CAAA;AAAA,0BAG5CA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,gBAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,UAAA,EACE;AAAA,eACJ;AAAA,cACA,aAAA,EAAY;AAAA;AAAA,WACd;AAAA,UAAA,CAGE,SAAS,eAAA,qBACTI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+DAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,KAAA,oBACCJ,GAAAA,CAAQ,KAAA,EAAP,EAAa,SAAA,EAAU,iFACrB,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,cAED,+BACCA,GAAAA,CAAQ,aAAP,EAAmB,SAAA,EAAU,gDAC3B,QAAA,EAAA,WAAA,EACH;AAAA,aAAA,EAEJ,CAAA;AAAA,YACC,mCACCA,GAAAA,CAAQ,OAAP,EAAa,OAAA,EAAO,MACnB,QAAA,kBAAAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,8QAAA;AAAA,gBACV,YAAA,EAAW,OAAA;AAAA,gBAEX,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,aACzB,EACF;AAAA,WAAA,EAEJ,CAAA;AAAA,0BAIFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAS,CAAA;AAAA,UAGlD,0BACCA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,kEAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ,EACF;AAAA,GAAA,EACF,GAEJ,CAAA,EACF,CAAA;AAEJ;ACtIA,IAAM,SAAA,GAAY;AAAA,EAChB,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,IAAA,kBAAMA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,aAAA,EAAc,CAAA,EAAG;AAAA,EACzF,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,IAAA,kBAAMA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,aAAA,EAAc,CAAA,EAAG;AAAA,EACnF,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,IAAA,kBAAMA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,aAAA,EAAc,CAAA,EAAG;AAAA,EAC/E,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,IAAA,kBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,aAAA,EAAc,CAAA;AAC/E,CAAA;AAEA,IAAM,SAAA,GAAY;AAAA,EAChB;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,GAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,aAAA,EAAe,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE;AAAA,GAChE;AAAA,EACA;AAAA,IACE,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAS,QAAA;AAAA,IACT,aAAA,EAAe,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG;AAAA,GAC5E;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,aAAA,EAAe,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE;AAAA,GAChE;AAAA,EACA;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,aAAA,EAAe,CAAC,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK;AAAA;AAErG,CAAA;AAEA,IAAM,eAAA,GAAmC;AAAA,EACvC;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,SAAA,EAAW,eAAA;AAAA,IACX,KAAA,EAAO,6BAAA;AAAA,IACP,WAAA,EAAa,sDAAA;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,QAAA,EAAU,EAAE,OAAA,EAAS,QAAA,EAAU,SAAS,kBAAA;AAAmB,GAC7D;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,SAAA,EAAW,gBAAA;AAAA,IACX,KAAA,EAAO,iBAAA;AAAA,IACP,WAAA,EAAa,yDAAA;AAAA,IACb,IAAA,EAAM,MAAA;AAAA,IACN,QAAA,EAAU,EAAE,IAAA,EAAM,YAAA,EAAc,QAAQ,cAAA;AAAe,GACzD;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,SAAA,EAAW,gBAAA;AAAA,IACX,KAAA,EAAO,yBAAA;AAAA,IACP,WAAA,EAAa,sEAAA;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,QAAA,EAAU,EAAE,QAAA,EAAU,WAAA,EAAa,QAAQ,cAAA;AAAe,GAC5D;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,oBAAA;AAAA,IACP,WAAA,EAAa,wDAAA;AAAA,IACb,IAAA,EAAM,MAAA;AAAA,IACN,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,QAAQ,IAAA;AAAK,GAC3C;AAAA,EACA;AAAA,IACE,EAAA,EAAI,OAAA;AAAA,IACJ,SAAA,EAAW,aAAA;AAAA,IACX,KAAA,EAAO,4BAAA;AAAA,IACP,WAAA,EAAa,2EAAA;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,EAAS,QAAQ,SAAA;AAAU;AAElD,CAAA;AAEA,IAAM,YAAA,GAA4B;AAAA,EAChC,EAAE,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,kBAAA,EAAmB;AAAA,EAClD,EAAE,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,gBAAA,EAAiB;AAAA,EAC/C,EAAE,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,gBAAA,EAAiB;AAAA,EAChD,EAAE,KAAA,EAAO,QAAA,EAAU,WAAA,EAAa,iBAAA;AAClC,CAAA;AAMA,SAAS,YAAA,CAAa;AAAA,EACpB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,uBACEI,IAAAA;AAAA,IAACD,MAAAA,CAAO,MAAA;AAAA,IAAP;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAU,qFAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,YAAY,WAAA,CAAY,MAAA;AAAA,QACxB,MAAA,EAAQ,CAAA,UAAA,EAAa,WAAA,CAAY,UAAU,CAAA;AAAA,OAC7C;AAAA,MACA,UAAA,EAAY;AAAA,QACV,aAAa,WAAA,CAAY,YAAA;AAAA,QACzB,SAAA,EAAW,CAAA,8BAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,gBAAgB,EAAE,OAAA,EAAS,GAAG,CAAA,EAAG,GAAA,KAAQ,EAAC;AAAA,MACnD,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MAC5B,YAAY,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,QAAQ,IAAA,EAAK;AAAA,MAElD,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qDAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,uBAAA;AAAA,cACZ,MAAA,EAAQ;AAAA,aACV;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mGACb,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAUO,SAAS,cAAA,CAAe,EAAE,SAAA,EAAU,EAAwB;AACjE,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,gBAAgB,CAAC,aAAA;AAEvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUmF,gBAAS,WAAW,CAAA;AAE5D,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,EAAE,sBAAMnF,GAAAA,CAAC,QAAK,SAAA,EAAU,2BAAA,EAA4B,CAAA,EAAI,KAAA,EAAO,aAAA,EAAc;AAAA,IAC7E,EAAE,sBAAMA,GAAAA,CAAC,UAAO,SAAA,EAAU,2BAAA,EAA4B,CAAA,EAAI,KAAA,EAAO,cAAA,EAAe;AAAA,IAChF,EAAE,sBAAMA,GAAAA,CAAC,YAAS,SAAA,EAAU,2BAAA,EAA4B,CAAA,EAAI,KAAA,EAAO,aAAA,EAAc;AAAA,IACjF,EAAE,IAAA,kBAAMA,GAAAA,CAACoF,GAAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EAA4B,CAAA,EAAI,KAAA,EAAO,iBAAA;AAAkB,GAClF;AAEA,EAAA,uBACEhF,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,MAC5D,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAU;AAAA,MAG/B,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,KAAA,kBACEI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAAJ,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wFAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY;AAAA,mBACd;AAAA,kBACD,QAAA,EAAA;AAAA;AAAA,eAED;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yGAAwG,QAAA,EAAA,SAAA,EAExH;AAAA,aAAA,EACF,CAAA;AAAA,YAEF,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,SAAA;AAAA,YACV,WAAA,EAAa,YAAA;AAAA,YACb,MAAA,EAAM,IAAA;AAAA,YACN,OAAA,kBACEI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,4IAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAJ,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,oCAC1BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2FAAA,EAA4F;AAAA;AAAA;AAAA,eAC9G;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iKAAA,EACb,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EAA+B,CAAA,EACjD;AAAA,aAAA,EACF;AAAA;AAAA,SAEJ;AAAA,wBAGAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAEb,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EAEb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,SAAI,SAAA,EAAU,wBAAA,EACZ,oBAAU,GAAA,CAAI,CAAC,yBACdA,GAAAA;AAAA,cAAC,aAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,IAAA,CAAK,KAAA;AAAA,gBACZ,OAAO,IAAA,CAAK,KAAA;AAAA,gBACZ,OAAO,IAAA,CAAK,KAAA;AAAA,gBACZ,SAAS,IAAA,CAAK,OAAA;AAAA,gBACd,eAAe,IAAA,CAAK;AAAA,eAAA;AAAA,cALf,IAAA,CAAK;AAAA,aAOb,CAAA,EACH,CAAA;AAAA,4BAGAI,KAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAU,SAAA,EAAU,MAAA,EAAO,WAAU,KAAA,EACvD,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mGAAA,EAAoG,QAAA,EAAA,iBAAA,EAElH,CAAA;AAAA,8BACAA,IAAC,aAAA,EAAA,EAAc,MAAA,EAAQ,iBAAiB,MAAA,EAAO,MAAA,EAAO,gBAAc,IAAA,EAAC;AAAA,aAAA,EACvE;AAAA,WAAA,EACF,CAAA;AAAA,0BAGAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAEb,QAAA,EAAA;AAAA,4BAAAA,KAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAU,SAAA,EAAU,MAAA,EAAO,WAAU,KAAA,EACvD,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mGAAA,EAAoG,QAAA,EAAA,eAAA,EAElH,CAAA;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,kBAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA,qBACpBA,GAAAA;AAAA,gBAAC,YAAA;AAAA,gBAAA;AAAA,kBAEC,MAAM,MAAA,CAAO,IAAA;AAAA,kBACb,OAAO,MAAA,CAAO,KAAA;AAAA,kBACd,WAAA;AAAA,kBACA,aAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBALF,MAAA,CAAO;AAAA,eAOf,CAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,4BAGAI,KAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,WAAU,SAAA,EAAU,MAAA,EAAO,WAAU,KAAA,EACvD,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mGAAA,EAAoG,QAAA,EAAA,qBAAA,EAElH,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,YAAA;AAAA,kBACP,UAAA,EAAY,CAAA;AAAA,kBACZ,MAAA,EAAO;AAAA;AAAA;AACT,aAAA,EACF,CAAA;AAAA,4BAGAA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,eAAA;AAAA,gBACN,KAAA,EAAO,IAAA;AAAA,gBACP,MAAA,EAAO,GAAA;AAAA,gBACP,KAAA,EAAO,GAAA;AAAA,gBACP,SAAA,EAAU,YAAA;AAAA,gBACV,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,SAAA;AAAA,gBACL,aAAA,EAAe,CAAC,IAAA,EAAM,IAAA,EAAM,EAAA,EAAM,IAAA,EAAM,IAAA,EAAM,EAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI;AAAA;AAAA;AAC5E,WAAA,EACF;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;ACpRO,SAAS,eAAA,CAAgB;AAAA,EAC9B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,QAAA,GAAW,IAAA;AAAA,EACX,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,eAAAA,CAAM,SAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAE7B,EAAA,MAAM,UAAA,GAAaA,eAAAA,CAAM,WAAA,CAAY,YAAY;AAC/C,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,IACzC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,UAAA,GAAa,YAAY,QAAA,IAAY,QAAA;AAE3C,EAAA,uBACEO,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACrD,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,mBAAA;AAAA,QACZ,MAAA,EAAQ,kCAAA;AAAA,QACR,cAAA,EAAgB,YAAA;AAAA,QAChB,oBAAA,EAAsB;AAAA,OACxB;AAAA,MACC,GAAG,KAAA;AAAA,MAGH,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,wDAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,kBAAA;AAAA,cACZ,WAAA,EAAa;AAAA,aACf;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAAJ,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,wDAAA,EAAyD,CAAA;AAAA,gBAC5E,4BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uEACb,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,gBAED,4BACCA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,2EAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACL,UAAA,EAAY,uBAAA;AAAA,sBACZ,KAAA,EAAO,kBAAA;AAAA,sBACP,MAAA,EAAQ;AAAA,qBACV;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACH,eAAA,EAEJ,CAAA;AAAA,cACC,4BACCI,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,UAAA;AAAA,kBACT,SAAA,EAAU,gIAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,GAAS,oBAAoB,sCAAA,EAAuC;AAAA,kBACpF,YAAA,EAAY,SAAS,QAAA,GAAW,WAAA;AAAA,kBAE/B,QAAA,EAAA;AAAA,oBAAA,MAAA,mBAASJ,GAAAA,CAACgE,KAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA,mBAAKhE,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,oBACnE,SAAS,QAAA,GAAW;AAAA;AAAA;AAAA;AACvB;AAAA;AAAA,SAEJ;AAAA,wBAIFA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,eAAA;AAAA,YACV,KAAA,EAAO,EAAE,SAAA,EAAW,SAAA,IAAa,MAAA,EAAU;AAAA,YAE3C,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACb,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aACb,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAChBI,IAAAA,CAAC,KAAA,EAAA,EAAY,WAAU,MAAA,EACpB,QAAA,EAAA;AAAA,cAAA,eAAA,oBACCJ,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,yEAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,sCAAA,EAAwC,SAAS,GAAA,EAAI;AAAA,kBAEpE,QAAA,EAAA,CAAA,GAAI;AAAA;AAAA,eACP;AAAA,8BAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CAAA,EACb,kBAAQ,MAAA,EACX;AAAA,aAAA,EAAA,EAXQ,CAYV,CACD,CAAA,EACH,CAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;ACjIA,SAASP,SAAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEO,GAAAA;AAAA,IAAmB,QAAA;AAAA,IAAlB;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8SAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAmB,iBAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,+CAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA,CAACgE,KAAAA,EAAA,EAAM,WAAU,aAAA,EAAc;AAAA;AAAA;AACjC;AAAA,GACF;AAEJ;ACrBA,SAAStE,WAAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEM,GAAAA;AAAA,IAAqB4B,MAAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAASjC,eAAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEK,GAAAA;AAAA,IAAqB8B,MAAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gTAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA9B,GAAAA;AAAA,QAAqB,SAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,kCAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,sBAAA,EAAuB;AAAA;AAAA;AAC3C;AAAA,GACF;AAEJ;ACnCA,SAASJ,OAAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBACEQ,IAAAA;AAAA,IAAiBoB,KAAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAxB,GAAAA;AAAA,UAAiB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAU,qEAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA;AAAA,cAAiB,KAAA;AAAA,cAAhB;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,SACF;AAAA,QAAA,CACE,YAAA,IAAgB,KAAA,CAAM,KAAA,IAAS,CAAC,CAAC,GAAG,GAAA,CAAI,CAAC,CAAA,EAAY,CAAA,qBACrDA,GAAAA;AAAA,UAAiB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGR;AAAA;AAAA;AAAA,GACH;AAEJ;AChCA,IAAMX,UAAAA,GAA+BuC;AAErC,IAAMrC,cAAAA,GAAsB8F,kBAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrF,GAAAA;AAAA,EAAoByB,KAAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,gBAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD;AACDlC,cAAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAMC,oBAAyB6F,MAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCrF,GAAAA,CAAoB,MAAA,EAAnB,EAA0B,SAAA,EAAU,QACnC,QAAA,kBAAAI,IAAAA;AAAA,EAAoBuC,SAAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,mBAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,sIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD3C,GAAAA,CAAC4D,WAAAA,EAAA,EAAY,WAAU,0EAAA,EAA2E;AAAA;AAAA;AACpG,CAAA,EACF,CACD;AACDpE,iBAAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAMF,iBAAAA,GAAyB+F,MAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCrF,GAAAA;AAAA,EAAoB4C,SAAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,mBAAA;AAAA,IACV,SAAA,EAAU,2GAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA5C,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD;AACDV,iBAAAA,CAAiB,WAAA,GAAc,kBAAA;;;ACzD/B,IAAA,aAAA,GAAA,EAAA;AAAA,UAAA,CAAA,aAAA,EAAA,UAAA,CAAA;;;A/CiBA,UAAA,CAAA,kBAAA,EAAc,aAAA,CAAA;AgDoBd,SAAS,aAAA,CAAc,KAAA,EAAe,MAAA,EAAkB,SAAA,EAAqC;AAC3F,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,MAAO;AAAA,IAC9C,EAAA,EAAI,CAAA;AAAA,IACJ,CAAA,EAAG,IAAA,CAAK,MAAA,EAAO,GAAI,GAAA;AAAA,IACnB,CAAA,EAAG,IAAA,CAAK,MAAA,EAAO,GAAI,GAAA;AAAA,IACnB,IAAA,EAAM,SAAA,CAAU,CAAC,CAAA,GAAI,IAAA,CAAK,MAAA,EAAO,IAAK,SAAA,CAAU,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA,CAAA;AAAA,IAChE,KAAA,EAAO,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,IACvD,KAAA,EAAO,IAAA,CAAK,MAAA,EAAO,GAAI,CAAA;AAAA,IACvB,QAAA,EAAU,CAAA,GAAI,IAAA,CAAK,MAAA,EAAO,GAAI,CAAA;AAAA,IAC9B,UAAA,EAAY,GAAA,GAAM,IAAA,CAAK,MAAA,EAAO,GAAI;AAAA,GACpC,CAAE,CAAA;AACJ;AAUA,IAAM,eAAqBgG,MAAA,CAAA,IAAA,CAAK,SAASC,aAAAA,CAAa,EAAE,MAAK,EAAsB;AACjF,EAAA,MAAM,gBAAgBC,kBAAAA,EAAiB;AAEvC,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACExF,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,uBAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,UACf,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,UACd,OAAO,IAAA,CAAK,IAAA;AAAA,UACZ,QAAQ,IAAA,CAAK,IAAA;AAAA,UACb,iBAAiB,IAAA,CAAK,KAAA;AAAA,UACtB,OAAA,EAAS,KAAK,UAAA,GAAa;AAAA;AAC7B;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAACG,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAU,uDAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACf,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACd,OAAO,IAAA,CAAK,IAAA;AAAA,QACZ,QAAQ,IAAA,CAAK,IAAA;AAAA,QACb,iBAAiB,IAAA,CAAK,KAAA;AAAA,QACtB,WAAW,CAAA,IAAA,EAAO,IAAA,CAAK,OAAO,CAAC,CAAA,GAAA,EAAM,KAAK,KAAK,CAAA;AAAA,OACjD;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA,UACP,KAAK,UAAA,GAAa,GAAA;AAAA,UAClB,IAAA,CAAK,UAAA;AAAA,UACL,KAAK,UAAA,GAAa,GAAA;AAAA,UAClB,KAAK,UAAA,GAAa,GAAA;AAAA,UAClB,KAAK,UAAA,GAAa;AAAA,SACpB;AAAA,QACA,OAAO,CAAC,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,KAAK,CAAC;AAAA,OAC3B;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAM;AAAA;AACR;AAAA,GACF;AAEJ,CAAC,CAAA;AAMM,SAAS,gBAAA,CAAiB;AAAA,EAC/B,MAAA,EAAQ,UAAA;AAAA,EACR,OAAA,EAAS,WAAA;AAAA,EACT,SAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA0B;AACxB,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAG3C,EAAA,MAAM,MAAA,GAAS,cAAc,aAAA,CAAc,cAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,eAAe,aAAA,CAAc,eAAA;AAC7C,EAAA,MAAM,YAAY,aAAA,CAAc,iBAAA;AAGhC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUmF,MAAA,CAAA,QAAA,CAAiB,EAAE,CAAA;AAEnD,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,YAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GAAe,OAAO,UAAA,GAAa,MAAA,CAAO,cAAe,GAAA,GAAQ,GAAA;AACrF,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,UAAU,CAAC,CAAA;AACnD,IAAA,MAAM,YAAA,GAAe,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,EAAE,GAAG,GAAG,CAAA;AAEtD,IAAA,QAAA,CAAS,aAAA,CAAc,YAAA,EAAc,MAAA,EAAQ,SAAS,CAAC,CAAA;AAAA,EACzD,GAAG,CAAC,MAAA,EAAQ,SAAS,QAAA,EAAU,aAAA,EAAe,SAAS,CAAC,CAAA;AAExD,EAAA,IAAI,QAAA,IAAY,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACElF,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,sDAAA,EAAwD,SAAS,CAAA;AAAA,MAC/E,aAAA,EAAY,MAAA;AAAA,MAGZ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,kBAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,YAAY,aAAA,CAAc;AAAA;AAC5B;AAAA,SACF;AAAA,QAGC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,IAAC,YAAA,EAAA,EAA2B,IAAA,EAAA,EAAT,IAAA,CAAK,EAAgB,CACzC,CAAA;AAAA,wBAGDA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,6BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY;AAAA;AAAA;AAAA,cAAA,EAGN,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKT,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA,UAAA;AAAA;AAIjB;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;ACtKO,SAAS,kBAAA,CAAmB;AAAA,EACjC,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,UAAA,EAAW;AACnC,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AAGvC,EAAA,IAAI,eAAe,QAAA,EAAU;AAC3B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,aAAa,aAAA,CAAc,IAAA;AAE/C,EAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,IAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAsB,CAAA;AAAA,EAC/C;AAEA,EAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAsB,CAAA;AACjD;;;ACxCA,IAAA,mBAAA,GAAA,EAAA;AAAA,UAAA,CAAA,mBAAA,EAAA,gBAAA,CAAA;;;AlDmBA,UAAA,CAAA,kBAAA,EAAc,mBAAA,CAAA","file":"chunk-GEAMOBF7.js","sourcesContent":["/**\n * bb-ui Primitives\n *\n * UI components organized by atomic design methodology:\n * - Atoms: Basic building blocks (buttons, inputs, badges)\n * - Molecules: Composite components (cards, toasts, stats)\n * - Organisms: Complex components (command palette, grids)\n * - UI: Radix UI primitive wrappers\n * - Three: Three.js/WebGL components\n * - Ambient: Background/atmospheric effects\n * - Environment: Atmospheric and environmental effects\n */\n\nexport * from \"./atoms/index.js\";\nexport * from \"./molecules/index.js\";\nexport * from \"./organisms/index.js\";\nexport * from \"./ui/index.js\";\nexport * from \"./three/index.js\";\nexport * from \"./ambient/index.js\";\nexport * from \"./environment/index.js\";\n","\"use client\";\n\nimport * as React from \"react\";\n\n// Status-driven color presets\nconst STATUS_COLORS: Record<string, string[]> = {\n active: ['#00ff88', '#00cc6a', '#00994d'],\n warning: ['#f2c96b', '#e5b84d', '#d4a42e'],\n error: ['#dc143c', '#b01030', '#8a0c26'],\n};\n\n// Status-driven speed presets\nconst STATUS_SPEEDS: Record<string, number> = {\n selected: 35,\n active: 50,\n warning: 25,\n error: 60,\n};\n\n/**\n * Derive color tints from a hex color.\n * Returns array of 3 colors: [base, darker, darkest]\n */\nfunction deriveColorTints(hex: string): string[] {\n // Remove # if present\n const cleanHex = hex.replace(/^#/, '');\n\n // Parse hex to RGB\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n // Create base + 2 darker variants (80% and 60% brightness)\n const toHex = (val: number) => Math.round(val).toString(16).padStart(2, '0');\n\n const base = `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n const darker = `#${toHex(r * 0.8)}${toHex(g * 0.8)}${toHex(b * 0.8)}`;\n const darkest = `#${toHex(r * 0.6)}${toHex(g * 0.6)}${toHex(b * 0.6)}`;\n\n return [base, darker, darkest];\n}\n\n// Pixel class for the canvas animation\nclass Pixel {\n width: number;\n height: number;\n ctx: CanvasRenderingContext2D;\n x: number;\n y: number;\n color: string;\n speed: number;\n size: number;\n sizeStep: number;\n minSize: number;\n maxSizeInteger: number;\n maxSize: number;\n delay: number;\n counter: number;\n counterStep: number;\n isIdle: boolean;\n isReverse: boolean;\n isShimmer: boolean;\n\n constructor(\n canvas: HTMLCanvasElement,\n context: CanvasRenderingContext2D,\n x: number,\n y: number,\n color: string,\n speed: number,\n delay: number\n ) {\n this.width = canvas.width;\n this.height = canvas.height;\n this.ctx = context;\n this.x = x;\n this.y = y;\n this.color = color;\n this.speed = this.getRandomValue(0.1, 0.9) * speed;\n this.size = 0;\n this.sizeStep = Math.random() * 0.4;\n this.minSize = 0.5;\n this.maxSizeInteger = 2;\n this.maxSize = this.getRandomValue(this.minSize, this.maxSizeInteger);\n this.delay = delay;\n this.counter = 0;\n this.counterStep = Math.random() * 4 + (this.width + this.height) * 0.01;\n this.isIdle = false;\n this.isReverse = false;\n this.isShimmer = false;\n }\n\n getRandomValue(min: number, max: number) {\n return Math.random() * (max - min) + min;\n }\n\n draw() {\n const centerOffset = this.maxSizeInteger * 0.5 - this.size * 0.5;\n this.ctx.fillStyle = this.color;\n this.ctx.fillRect(this.x + centerOffset, this.y + centerOffset, this.size, this.size);\n }\n\n appear() {\n this.isIdle = false;\n\n if (this.counter <= this.delay) {\n this.counter += this.counterStep;\n return;\n }\n\n if (this.size >= this.maxSize) {\n this.isShimmer = true;\n }\n\n if (this.isShimmer) {\n this.shimmer();\n } else {\n this.size += this.sizeStep;\n }\n\n this.draw();\n }\n\n disappear() {\n this.isShimmer = false;\n this.counter = 0;\n\n if (this.size <= 0) {\n this.isIdle = true;\n return;\n } else {\n this.size -= 0.1;\n }\n\n this.draw();\n }\n\n shimmer() {\n if (this.size >= this.maxSize) {\n this.isReverse = true;\n } else if (this.size <= this.minSize) {\n this.isReverse = false;\n }\n\n if (this.isReverse) {\n this.size -= this.speed;\n } else {\n this.size += this.speed;\n }\n }\n}\n\nexport interface PixelCanvasProps extends React.HTMLAttributes<HTMLDivElement> {\n gap?: number;\n speed?: number;\n colors?: string[];\n variant?: \"default\" | \"icon\";\n noFocus?: boolean;\n /** Manual activation control (bypasses hover) */\n active?: boolean;\n /** Status-driven presets for colors and speed */\n status?: 'selected' | 'active' | 'warning' | 'error';\n /** Theme color (used when status='selected') */\n themeColor?: string;\n}\n\nconst PixelCanvas = React.forwardRef<HTMLDivElement, PixelCanvasProps>(\n (\n {\n gap = 5,\n speed = 35,\n colors = [\"#f8fafc\", \"#f1f5f9\", \"#cbd5e1\"],\n variant = \"default\",\n noFocus = false,\n active,\n status,\n themeColor,\n className,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n const pixelsRef = React.useRef<Pixel[]>([]);\n const animationRef = React.useRef<number | null>(null);\n const timePreviousRef = React.useRef<number>(performance.now());\n const timeInterval = 1000 / 60;\n\n const reducedMotion =\n typeof window !== \"undefined\"\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\n : false;\n\n // Resolve colors based on status\n const resolvedColors = React.useMemo(() => {\n if (status === 'selected' && themeColor) {\n return deriveColorTints(themeColor);\n }\n if (status && STATUS_COLORS[status]) {\n return STATUS_COLORS[status];\n }\n return colors;\n }, [status, themeColor, colors]);\n\n // Resolve speed based on status\n const resolvedSpeed = React.useMemo(() => {\n if (status && STATUS_SPEEDS[status] !== undefined) {\n return STATUS_SPEEDS[status];\n }\n return speed;\n }, [status, speed]);\n\n const actualSpeed = reducedMotion ? 0 : Math.max(0, Math.min(100, resolvedSpeed)) * 0.001;\n const actualGap = Math.max(4, Math.min(50, gap));\n\n const getDistanceToCenter = React.useCallback(\n (x: number, y: number, width: number, height: number) => {\n const dx = x - width / 2;\n const dy = y - height / 2;\n return Math.sqrt(dx * dx + dy * dy);\n },\n []\n );\n\n const getDistanceToBottomLeft = React.useCallback((x: number, y: number, height: number) => {\n const dx = x;\n const dy = height - y;\n return Math.sqrt(dx * dx + dy * dy);\n }, []);\n\n const createPixels = React.useCallback(() => {\n const canvas = canvasRef.current;\n const ctx = canvas?.getContext(\"2d\");\n if (!canvas || !ctx) return;\n\n pixelsRef.current = [];\n\n for (let x = 0; x < canvas.width; x += actualGap) {\n for (let y = 0; y < canvas.height; y += actualGap) {\n const color = resolvedColors[Math.floor(Math.random() * resolvedColors.length)];\n let delay = 0;\n\n if (variant === \"icon\") {\n delay = reducedMotion ? 0 : getDistanceToCenter(x, y, canvas.width, canvas.height);\n } else {\n delay = reducedMotion ? 0 : getDistanceToBottomLeft(x, y, canvas.height);\n }\n\n pixelsRef.current.push(new Pixel(canvas, ctx, x, y, color, actualSpeed, delay));\n }\n }\n }, [\n actualGap,\n actualSpeed,\n resolvedColors,\n variant,\n reducedMotion,\n getDistanceToCenter,\n getDistanceToBottomLeft,\n ]);\n\n const drawStatic = React.useCallback(() => {\n const canvas = canvasRef.current;\n const ctx = canvas?.getContext(\"2d\");\n if (!canvas || !ctx) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n for (const pixel of pixelsRef.current) {\n pixel.isIdle = true;\n pixel.isReverse = false;\n pixel.isShimmer = false;\n pixel.size = pixel.maxSize;\n pixel.draw();\n }\n }, []);\n\n const handleResize = React.useCallback(() => {\n const container = containerRef.current;\n const canvas = canvasRef.current;\n const ctx = canvas?.getContext(\"2d\");\n if (!container || !canvas || !ctx) return;\n\n const rect = container.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return;\n\n const width = Math.floor(rect.width);\n const height = Math.floor(rect.height);\n\n const dpr = window.devicePixelRatio || 1;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.scale(dpr, dpr);\n\n createPixels();\n if (reducedMotion) {\n drawStatic();\n }\n }, [createPixels, reducedMotion, drawStatic]);\n\n const handleAnimation = React.useCallback(\n (name: \"appear\" | \"disappear\") => {\n if (reducedMotion) {\n return;\n }\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n\n const canvas = canvasRef.current;\n const ctx = canvas?.getContext(\"2d\");\n if (!canvas || !ctx) return;\n\n const animate = () => {\n animationRef.current = requestAnimationFrame(animate);\n\n const timeNow = performance.now();\n const timePassed = timeNow - timePreviousRef.current;\n\n if (timePassed < timeInterval) return;\n\n timePreviousRef.current = timeNow - (timePassed % timeInterval);\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n let allIdle = true;\n for (const pixel of pixelsRef.current) {\n pixel[name]();\n if (!pixel.isIdle) allIdle = false;\n }\n\n if (allIdle) {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n animationRef.current = null;\n }\n }\n };\n\n animate();\n },\n [reducedMotion, timeInterval]\n );\n\n React.useEffect(() => {\n handleResize();\n\n const ro = new ResizeObserver(() => {\n requestAnimationFrame(handleResize);\n });\n\n if (containerRef.current) {\n ro.observe(containerRef.current);\n }\n\n return () => {\n ro.disconnect();\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n };\n }, [handleResize]);\n\n // Handle hover/focus listeners (skip if active prop is provided)\n React.useEffect(() => {\n // If active prop is provided, skip hover control\n if (active !== undefined) return;\n\n const parent = containerRef.current?.parentElement;\n if (!parent) return;\n if (reducedMotion) return;\n\n const handleEnter = () => handleAnimation(\"appear\");\n const handleLeave = () => handleAnimation(\"disappear\");\n\n parent.addEventListener(\"mouseenter\", handleEnter);\n parent.addEventListener(\"mouseleave\", handleLeave);\n\n if (!noFocus) {\n parent.addEventListener(\"focus\", handleEnter, { capture: true });\n parent.addEventListener(\"blur\", handleLeave, { capture: true });\n }\n\n return () => {\n parent.removeEventListener(\"mouseenter\", handleEnter);\n parent.removeEventListener(\"mouseleave\", handleLeave);\n if (!noFocus) {\n parent.removeEventListener(\"focus\", handleEnter, { capture: true });\n parent.removeEventListener(\"blur\", handleLeave, { capture: true });\n }\n };\n }, [active, handleAnimation, noFocus, reducedMotion]);\n\n // Handle active prop changes for manual activation\n React.useEffect(() => {\n if (active === undefined) return; // Let hover control it\n if (active) {\n handleAnimation(\"appear\");\n } else {\n handleAnimation(\"disappear\");\n }\n }, [active, handleAnimation]);\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n }}\n {...props}\n >\n <canvas\n ref={canvasRef}\n style={{\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n }}\n />\n </div>\n );\n }\n);\n\nPixelCanvas.displayName = \"PixelCanvas\";\n\nexport { PixelCanvas };\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\nimport React, { useId } from \"react\";\n\nconst glowInputVariants = cva(\n \"flex h-10 w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-border focus-visible:border-cyan-neon focus-visible:shadow-neon-cyan/40\",\n error:\n \"border-destructive focus-visible:border-destructive focus-visible:shadow-[0_0_20px_hsl(var(--destructive))]\",\n success:\n \"border-emerald-neon focus-visible:border-emerald-neon focus-visible:shadow-neon-emerald/40\",\n },\n size: {\n default: \"h-10 px-3 py-2\",\n sm: \"h-9 px-3 py-2 text-sm\",\n lg: \"h-11 px-4 py-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst containerVariants = cva(\"space-y-2\", {\n variants: {\n size: {\n default: \"space-y-2\",\n sm: \"space-y-1.5\",\n lg: \"space-y-2.5\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n});\n\nexport interface GlowInputProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n | \"size\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof glowInputVariants> {\n /** Input label */\n label?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Left icon */\n leftIcon?: React.ReactNode;\n /** Right icon */\n rightIcon?: React.ReactNode;\n /** Disable glow animations */\n disableAnimations?: boolean;\n /** Container class name */\n containerClassName?: string;\n}\n\nexport function GlowInput({\n className,\n containerClassName,\n variant,\n size,\n label,\n description,\n error,\n leftIcon,\n rightIcon,\n disableAnimations = false,\n id,\n ...props\n}: GlowInputProps) {\n const inputId = useId();\n const finalId = id || inputId;\n const descriptionId = `${finalId}-description`;\n const errorId = `${finalId}-error`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n // Use error variant if error is present\n const finalVariant = error ? \"error\" : variant;\n\n return (\n <div className={cn(containerVariants({ size }), containerClassName)}>\n {/* Label */}\n {label && (\n <motion.label\n htmlFor={finalId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n initial={shouldAnimate ? { opacity: 0, y: -5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n </motion.label>\n )}\n\n {/* Input container */}\n <div className=\"relative\">\n {/* Left icon */}\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n {leftIcon}\n </div>\n )}\n\n {/* Input field */}\n <motion.input\n id={finalId}\n className={cn(\n glowInputVariants({ variant: finalVariant, size }),\n leftIcon && \"pl-10\",\n rightIcon && \"pr-10\",\n className\n )}\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-invalid={error ? \"true\" : undefined}\n initial={shouldAnimate ? { opacity: 0, scale: 0.98 } : {}}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.2, delay: 0.1 }}\n whileFocus={\n shouldAnimate\n ? {\n scale: 1.01,\n transition: { duration: 0.1 },\n }\n : {}\n }\n {...props}\n />\n\n {/* Right icon or error icon */}\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n {error ? (\n <motion.div\n initial={shouldAnimate ? { opacity: 0, scale: 0.8 } : {}}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.2 }}\n >\n <AlertCircle className=\"h-4 w-4 text-destructive\" />\n </motion.div>\n ) : (\n rightIcon\n )}\n </div>\n </div>\n\n {/* Description */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-sm text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n className=\"text-sm text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport React, { useMemo } from \"react\";\n\nexport interface GlassProgressBarProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value 0-1. Omit for indeterminate mode. */\n value?: number;\n /** Color theme */\n theme?: \"cyan\" | \"magenta\" | \"emerald\" | \"rainbow\";\n /** Bar size */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Show numeric value */\n showValue?: boolean;\n /** Value suffix (default \"%\") */\n suffix?: string;\n /** Transition duration in ms */\n animationDuration?: number;\n /** Disable all animations */\n disableAnimations?: boolean;\n /** Accessible label */\n label?: string;\n /** Label position */\n labelPosition?: \"top\" | \"inline\";\n /** Enable glow effect on fill */\n glow?: boolean;\n /** Enable diagonal stripe pattern */\n striped?: boolean;\n}\n\nconst sizeMap = {\n sm: \"h-1\",\n default: \"h-2\",\n lg: \"h-3\",\n} as const;\n\nfunction getThemeGradient(theme: NonNullable<GlassProgressBarProps[\"theme\"]>) {\n switch (theme) {\n case \"cyan\":\n return \"linear-gradient(90deg, #22d3ee, #34d399)\";\n case \"magenta\":\n return \"linear-gradient(90deg, #e879f9, #f472b6)\";\n case \"emerald\":\n return \"linear-gradient(90deg, #34d399, #22d3ee)\";\n case \"rainbow\":\n return \"linear-gradient(90deg, #22d3ee, #e879f9, #34d399)\";\n }\n}\n\nfunction getGlowShadow(theme: NonNullable<GlassProgressBarProps[\"theme\"]>) {\n switch (theme) {\n case \"cyan\":\n return \"0 0 8px rgba(34,211,238,0.6), 0 0 20px rgba(34,211,238,0.3)\";\n case \"magenta\":\n return \"0 0 8px rgba(232,121,249,0.6), 0 0 20px rgba(232,121,249,0.3)\";\n case \"emerald\":\n return \"0 0 8px rgba(52,211,153,0.6), 0 0 20px rgba(52,211,153,0.3)\";\n case \"rainbow\":\n return \"0 0 8px rgba(34,211,238,0.6), 0 0 20px rgba(232,121,249,0.3)\";\n }\n}\n\n/** Subtle leading-edge glow for the fill bar (always on) */\nfunction getLeadingEdgeGlow(theme: NonNullable<GlassProgressBarProps[\"theme\"]>) {\n switch (theme) {\n case \"cyan\":\n return \"0 0 8px rgba(34,211,238,0.4)\";\n case \"magenta\":\n return \"0 0 8px rgba(232,121,249,0.4)\";\n case \"emerald\":\n return \"0 0 8px rgba(52,211,153,0.4)\";\n case \"rainbow\":\n return \"0 0 8px rgba(34,211,238,0.4)\";\n }\n}\n\nconst STRIPE_BG =\n \"repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(255,255,255,0.1) 4px, rgba(255,255,255,0.1) 8px)\";\n\nexport function GlassProgressBar({\n value,\n theme = \"cyan\",\n size = \"default\",\n showValue = false,\n suffix = \"%\",\n animationDuration = 600,\n disableAnimations = false,\n label,\n labelPosition = \"top\",\n glow = false,\n striped = false,\n className,\n ...props\n}: GlassProgressBarProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const isIndeterminate = value === undefined || value === null;\n const clampedValue = useMemo(\n () => (isIndeterminate ? 0 : Math.max(0, Math.min(1, value!))),\n [isIndeterminate, value]\n );\n\n const displayPercent = Math.round(clampedValue * 100);\n const gradient = getThemeGradient(theme);\n const glowShadow = glow ? getGlowShadow(theme) : getLeadingEdgeGlow(theme);\n\n const isInline = labelPosition === \"inline\";\n\n const trackContent = (\n <div\n className={cn(\n \"relative w-full overflow-hidden rounded-full\",\n sizeMap[size]\n )}\n style={{\n background: \"rgba(2, 4, 10, 0.6)\",\n border: \"1px solid rgba(255, 255, 255, 0.06)\",\n boxShadow: \"inset 0 1px 0 rgba(255,255,255,0.02)\",\n }}\n >\n {isIndeterminate ? (\n /* Indeterminate sliding bar */\n <motion.div\n className={cn(\"absolute inset-y-0 rounded-full\", sizeMap[size])}\n style={{\n width: \"40%\",\n background: gradient,\n boxShadow: glowShadow,\n }}\n animate={\n shouldAnimate\n ? { left: [\"-40%\", \"100%\"] }\n : { left: \"0%\" }\n }\n transition={\n shouldAnimate\n ? {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeInOut\",\n }\n : undefined\n }\n />\n ) : (\n /* Determinate fill */\n <motion.div\n className={cn(\"h-full rounded-full\")}\n style={{\n background: gradient,\n boxShadow: glowShadow,\n transition: \"box-shadow 0.5s ease\",\n ...(striped\n ? { backgroundImage: STRIPE_BG, backgroundSize: \"16px 16px\" }\n : {}),\n }}\n initial={shouldAnimate ? { width: \"0%\" } : { width: `${clampedValue * 100}%` }}\n animate={{ width: `${clampedValue * 100}%` }}\n transition={{\n duration: shouldAnimate ? animationDuration / 1000 : 0,\n ease: \"easeOut\",\n }}\n />\n )}\n </div>\n );\n\n return (\n <div\n className={cn(\"w-full\", className)}\n role=\"progressbar\"\n aria-valuenow={isIndeterminate ? undefined : displayPercent}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label ?? (isIndeterminate ? \"Loading\" : `${displayPercent}${suffix}`)}\n {...props}\n >\n {/* Top label layout */}\n {label && !isInline && (\n <div className=\"flex items-center justify-between mb-1.5\">\n <span className=\"text-sm font-medium text-muted-foreground\">\n {label}\n </span>\n {showValue && !isIndeterminate && (\n <span className=\"text-sm tabular-nums text-muted-foreground\">\n {displayPercent}\n {suffix}\n </span>\n )}\n </div>\n )}\n\n {/* Inline label layout */}\n {isInline ? (\n <div className=\"flex items-center gap-3\">\n {label && (\n <span className=\"text-sm font-medium text-muted-foreground shrink-0\">\n {label}\n </span>\n )}\n <div className=\"flex-1\">{trackContent}</div>\n {showValue && !isIndeterminate && (\n <span className=\"text-sm tabular-nums text-muted-foreground shrink-0\">\n {displayPercent}\n {suffix}\n </span>\n )}\n </div>\n ) : (\n <>\n {trackContent}\n {/* Show value below if no label was provided */}\n {showValue && !isIndeterminate && !label && (\n <div className=\"flex justify-end mt-1\">\n <span className=\"text-sm tabular-nums text-muted-foreground\">\n {displayPercent}\n {suffix}\n </span>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn, formatNumber, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { Clock, Flame, Star, Target, Trophy, Zap, Shield, Box, Cpu } from \"lucide-react\";\nimport React from \"react\";\n\nconst statBadgeVariants = cva(\n \"inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-medium transition-all duration-200 border\",\n {\n variants: {\n variant: {\n // Original variants\n xp: \"bg-emerald-neon/10 text-emerald-neon border-emerald-neon/30 shadow-neon-emerald/20\",\n streak: \"bg-cyan-neon/10 text-cyan-neon border-cyan-neon/30 shadow-neon-cyan/20\",\n difficulty: \"bg-muted/50 text-muted-foreground border-border/50\",\n achievement:\n \"bg-magenta-neon/10 text-magenta-neon border-magenta-neon/30 shadow-neon-magenta/20\",\n time: \"bg-card/80 text-foreground border-border/40 shadow-glass\",\n score: \"bg-primary/10 text-primary border-primary/30\",\n // Backbay variants\n jobs: \"bg-cyan-neon/10 text-cyan-neon border-cyan-neon/30 shadow-neon-cyan/20\",\n receipts: \"bg-emerald-neon/10 text-emerald-neon border-emerald-neon/30 shadow-neon-emerald/20\",\n nodes: \"bg-amber-500/10 text-amber-400 border-amber-500/30\",\n trust: \"bg-yellow-500/10 text-yellow-400 border-yellow-500/30\",\n disputes: \"bg-rose-500/10 text-rose-400 border-rose-500/30\",\n },\n size: {\n sm: \"px-2 py-0.5 text-xs\",\n default: \"px-2.5 py-1 text-xs\",\n lg: \"px-3 py-1.5 text-sm\",\n },\n glow: {\n none: \"\",\n subtle: \"animate-soft-glow\",\n intense: \"shadow-glow animate-pulse\",\n },\n },\n defaultVariants: {\n variant: \"xp\",\n size: \"default\",\n glow: \"none\",\n },\n }\n);\n\nconst iconMap = {\n xp: Zap,\n streak: Flame,\n difficulty: Target,\n achievement: Trophy,\n time: Clock,\n score: Star,\n jobs: Cpu,\n receipts: Shield,\n nodes: Box,\n trust: Trophy,\n disputes: Flame,\n} as const;\n\nexport interface StatBadgeProps\n extends\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n | \"children\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof statBadgeVariants> {\n /** Stat value (number will be formatted) */\n value: number | string;\n /** Optional suffix (XP, days, %, etc.) */\n suffix?: string;\n /** Optional prefix */\n prefix?: string;\n /** Custom icon (overrides variant default) */\n icon?: React.ReactNode;\n /** Show icon */\n showIcon?: boolean;\n /** Animate value changes */\n animateValue?: boolean;\n /** Disable glow animations */\n disableAnimations?: boolean;\n}\n\nexport function StatBadge({\n className,\n variant = \"xp\",\n size,\n glow,\n value,\n suffix,\n prefix,\n icon,\n showIcon = true,\n animateValue = false,\n disableAnimations = false,\n ...props\n}: StatBadgeProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n // Get default icon for variant\n const DefaultIcon = iconMap[variant as keyof typeof iconMap];\n const displayIcon = icon || (DefaultIcon && <DefaultIcon className=\"h-3 w-3\" />);\n\n // Format value if it's a number\n const formattedValue = typeof value === \"number\" ? formatNumber(value) : value;\n const displayText = `${prefix || \"\"}${formattedValue}${suffix || \"\"}`;\n\n return (\n <motion.div\n className={cn(\n statBadgeVariants({\n variant,\n size,\n glow: shouldAnimate ? glow : \"none\",\n }),\n className\n )}\n initial={shouldAnimate ? { opacity: 0, scale: 0.9 } : {}}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.2 }}\n whileHover={\n shouldAnimate\n ? {\n scale: 1.05,\n transition: { duration: 0.1 },\n }\n : {}\n }\n {...props}\n >\n {/* Icon */}\n {showIcon && displayIcon && (\n <motion.div\n className=\"flex-shrink-0\"\n initial={shouldAnimate ? { opacity: 0, rotate: -10 } : {}}\n animate={{ opacity: 1, rotate: 0 }}\n transition={{ duration: 0.3, delay: 0.1 }}\n >\n {displayIcon}\n </motion.div>\n )}\n\n {/* Value */}\n <motion.span\n className=\"font-semibold tabular-nums\"\n initial={shouldAnimate && animateValue ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: showIcon ? 0.2 : 0.1 }}\n >\n {displayText}\n </motion.span>\n </motion.div>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\n\nconst iconPulseVariants = cva(\n \"inline-flex items-center justify-center transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"text-foreground hover:text-cyan-neon\",\n muted: \"text-muted-foreground hover:text-foreground\",\n accent: \"text-cyan-neon hover:text-cyan-neon/80\",\n success: \"text-emerald-neon hover:text-emerald-neon/80\",\n warning: \"text-yellow-500 hover:text-yellow-400\",\n danger: \"text-destructive hover:text-destructive/80\",\n },\n size: {\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n },\n intensity: {\n none: \"\",\n low: \"drop-shadow-[0_0_4px_currentColor]\",\n medium: \"drop-shadow-[0_0_8px_currentColor]\",\n high: \"drop-shadow-[0_0_16px_currentColor]\",\n },\n interactive: {\n none: \"\",\n hover: \"cursor-pointer hover:scale-110\",\n button: \"cursor-pointer hover:scale-110 active:scale-95\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n intensity: \"none\",\n interactive: \"none\",\n },\n }\n);\n\nexport interface IconPulseProps\n extends\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n | \"children\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof iconPulseVariants> {\n /** Icon element (usually from lucide-react) */\n icon: React.ReactNode;\n /** Pulse animation on hover/focus */\n pulse?: boolean;\n /** Continuous pulse animation */\n continuousPulse?: boolean;\n /** Disable all animations */\n disableAnimations?: boolean;\n /** Click handler (makes it interactive) */\n onClick?: () => void;\n /** ARIA label for accessibility */\n \"aria-label\"?: string;\n}\n\nexport function IconPulse({\n className,\n variant,\n size,\n intensity,\n interactive,\n icon,\n pulse = false,\n continuousPulse = false,\n disableAnimations = false,\n onClick,\n \"aria-label\": ariaLabel,\n ...props\n}: IconPulseProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n // Determine interactivity based on onClick or explicit interactive prop\n const finalInteractive = onClick ? \"button\" : interactive;\n\n const baseClassName = cn(\n iconPulseVariants({\n variant,\n size,\n intensity: shouldAnimate ? intensity : \"none\",\n interactive: shouldAnimate ? finalInteractive : \"none\",\n }),\n continuousPulse && shouldAnimate && \"animate-pulse\",\n className\n );\n\n if (onClick) {\n return (\n <motion.button\n className={baseClassName}\n onClick={onClick}\n aria-label={ariaLabel}\n type=\"button\"\n whileHover={\n shouldAnimate && pulse\n ? {\n scale: 1.1,\n filter: \"drop-shadow(0 0 12px currentColor)\",\n transition: { duration: 0.2 },\n }\n : shouldAnimate && finalInteractive !== \"none\"\n ? {\n scale: 1.05,\n transition: { duration: 0.1 },\n }\n : {}\n }\n whileTap={\n shouldAnimate\n ? {\n scale: 0.95,\n transition: { duration: 0.1 },\n }\n : {}\n }\n whileFocus={\n shouldAnimate && pulse\n ? {\n scale: 1.05,\n filter: \"drop-shadow(0 0 8px currentColor)\",\n transition: { duration: 0.2 },\n }\n : {}\n }\n animate={\n shouldAnimate && continuousPulse\n ? {\n scale: [1, 1.05, 1],\n opacity: [1, 0.8, 1],\n }\n : {}\n }\n transition={\n shouldAnimate && continuousPulse\n ? {\n duration: 2,\n repeat: Infinity,\n ease: \"easeInOut\",\n }\n : {}\n }\n >\n {/* Icon with potential glow wrapper */}\n <motion.div\n className=\"flex items-center justify-center\"\n initial={shouldAnimate ? { opacity: 0, rotate: -10 } : {}}\n animate={{ opacity: 1, rotate: 0 }}\n transition={{ duration: 0.3 }}\n >\n {icon}\n </motion.div>\n </motion.button>\n );\n }\n\n return (\n <motion.div\n className={baseClassName}\n aria-label={ariaLabel}\n whileHover={\n shouldAnimate && pulse\n ? {\n scale: 1.1,\n filter: \"drop-shadow(0 0 12px currentColor)\",\n transition: { duration: 0.2 },\n }\n : shouldAnimate && finalInteractive !== \"none\"\n ? {\n scale: 1.05,\n transition: { duration: 0.1 },\n }\n : {}\n }\n animate={\n shouldAnimate && continuousPulse\n ? {\n scale: [1, 1.05, 1],\n opacity: [1, 0.8, 1],\n }\n : {}\n }\n transition={\n shouldAnimate && continuousPulse\n ? {\n duration: 2,\n repeat: Infinity,\n ease: \"easeInOut\",\n }\n : {}\n }\n {...props}\n >\n {/* Icon with potential glow wrapper */}\n <motion.div\n className=\"flex items-center justify-center\"\n initial={shouldAnimate ? { opacity: 0, rotate: -10 } : {}}\n animate={{ opacity: 1, rotate: 0 }}\n transition={{ duration: 0.3 }}\n >\n {icon}\n </motion.div>\n </motion.div>\n );\n}\n","\"use client\";\nimport { useEffect, useRef, useState, useMemo, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\n\n/** Hook to detect reduced motion preference */\nfunction useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() => prefersReducedMotion());\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const handler = (e: MediaQueryListEvent) => setReduced(e.matches);\n\n mediaQuery.addEventListener(\"change\", handler);\n return () => mediaQuery.removeEventListener(\"change\", handler);\n }, []);\n\n return reduced;\n}\n\nexport interface VoiceCaptionsProps {\n /** The full text to display */\n text: string;\n /** Sync with audio playback state */\n isPlaying?: boolean;\n /** Words per second for timing sync (default ~2.5) */\n wordsPerSecond?: number;\n /** Callback when all text has been revealed and dissolved */\n onComplete?: () => void;\n /** Additional className for the container */\n className?: string;\n /** Max lines visible before older lines dissolve (default 3) */\n maxLines?: number;\n}\n\ninterface CaptionLine {\n id: number;\n words: string[];\n phase: \"entering\" | \"visible\" | \"exiting\";\n revealedCount: number;\n}\n\nconst WORD_STAGGER_MS = 60;\nconst GLOW_PULSE_MS = 200;\nconst LINGER_MS = 2000;\nconst DISSOLVE_MS = 400;\nconst WORDS_PER_LINE = 8;\n\nconst GOLDEN_COLOR = \"rgba(212, 168, 75, 0.95)\";\nconst GOLDEN_GLOW = \"0 0 12px #d4a84b\";\nconst GOLDEN_GLOW_INTENSE = \"0 0 20px #d4a84b, 0 0 32px #d4a84b\";\n\nexport const VoiceCaptions = ({\n text,\n isPlaying = true,\n wordsPerSecond = 2.5,\n onComplete,\n className,\n maxLines = 3,\n}: VoiceCaptionsProps) => {\n const reducedMotion = useReducedMotion();\n const [lines, setLines] = useState<CaptionLine[]>([]);\n const [currentWordIndex, setCurrentWordIndex] = useState(0);\n const [isComplete, setIsComplete] = useState(false);\n const hasCalledComplete = useRef(false);\n const lineIdCounter = useRef(0);\n\n const allWords = useMemo(() => {\n return text.trim().split(/\\s+/).filter(Boolean);\n }, [text]);\n\n // Reset state when text changes\n useEffect(() => {\n setLines([]);\n setCurrentWordIndex(0);\n setIsComplete(false);\n hasCalledComplete.current = false;\n lineIdCounter.current = 0;\n }, [text]);\n\n // Word reveal timing\n useEffect(() => {\n if (!isPlaying || isComplete || currentWordIndex >= allWords.length) return;\n\n const interval = reducedMotion\n ? 1000 / wordsPerSecond\n : WORD_STAGGER_MS;\n\n const timer = setTimeout(() => {\n setCurrentWordIndex((prev) => prev + 1);\n }, interval);\n\n return () => clearTimeout(timer);\n }, [isPlaying, currentWordIndex, allWords.length, isComplete, reducedMotion, wordsPerSecond]);\n\n // Manage lines based on current word index\n useEffect(() => {\n if (currentWordIndex === 0 && allWords.length > 0) {\n // Initialize first line\n const firstLineWords = allWords.slice(0, WORDS_PER_LINE);\n setLines([\n {\n id: lineIdCounter.current++,\n words: firstLineWords,\n phase: \"entering\",\n revealedCount: 0,\n },\n ]);\n return;\n }\n\n setLines((prevLines) => {\n const newLines = [...prevLines];\n let totalWordsInLines = 0;\n\n // Calculate revealed words per line\n for (let i = 0; i < newLines.length; i++) {\n const line = newLines[i];\n const lineStartIndex = i * WORDS_PER_LINE;\n const revealedInLine = Math.max(\n 0,\n Math.min(currentWordIndex - lineStartIndex, line.words.length)\n );\n newLines[i] = {\n ...line,\n revealedCount: revealedInLine,\n phase: revealedInLine > 0 ? \"visible\" : line.phase,\n };\n totalWordsInLines += line.words.length;\n }\n\n // Check if we need a new line\n if (currentWordIndex >= totalWordsInLines && currentWordIndex < allWords.length) {\n const newLineStartIndex = totalWordsInLines;\n const newLineWords = allWords.slice(\n newLineStartIndex,\n newLineStartIndex + WORDS_PER_LINE\n );\n\n if (newLineWords.length > 0) {\n newLines.push({\n id: lineIdCounter.current++,\n words: newLineWords,\n phase: \"entering\",\n revealedCount: 0,\n });\n\n // Mark oldest line for exit if we exceed maxLines\n if (newLines.length > maxLines) {\n newLines[0] = { ...newLines[0], phase: \"exiting\" };\n }\n }\n }\n\n return newLines;\n });\n }, [currentWordIndex, allWords, maxLines]);\n\n // Remove exited lines after animation\n const handleExitComplete = useCallback((lineId: number) => {\n setLines((prev) => prev.filter((line) => line.id !== lineId));\n }, []);\n\n // Handle completion with linger\n useEffect(() => {\n if (currentWordIndex >= allWords.length && allWords.length > 0 && !isComplete) {\n const lingerTimer = setTimeout(() => {\n setIsComplete(true);\n // Dissolve all remaining lines\n setLines((prev) =>\n prev.map((line) => ({ ...line, phase: \"exiting\" as const }))\n );\n }, LINGER_MS);\n\n return () => clearTimeout(lingerTimer);\n }\n }, [currentWordIndex, allWords.length, isComplete]);\n\n // Call onComplete when all lines have dissolved\n useEffect(() => {\n if (isComplete && lines.length === 0 && !hasCalledComplete.current) {\n hasCalledComplete.current = true;\n onComplete?.();\n }\n }, [isComplete, lines.length, onComplete]);\n\n // Reduced motion: instant reveal, simple fade\n if (reducedMotion) {\n return (\n <div\n className={cn(\n \"voice-captions-container text-center\",\n className\n )}\n style={{\n fontFamily: \"'Cormorant Garamond', serif\",\n fontSize: \"18px\",\n letterSpacing: \"0.05em\",\n color: GOLDEN_COLOR,\n }}\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Voice captions\"\n >\n <AnimatePresence mode=\"popLayout\">\n {lines.map((line) => (\n <motion.div\n key={line.id}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.3 }}\n onAnimationComplete={(definition) => {\n if (definition === \"exit\") {\n handleExitComplete(line.id);\n }\n }}\n className=\"caption-line\"\n >\n {line.words.slice(0, line.revealedCount).join(\" \")}\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"voice-captions-container text-center\",\n className\n )}\n style={{\n fontFamily: \"'Cormorant Garamond', serif\",\n fontSize: \"18px\",\n letterSpacing: \"0.05em\",\n color: GOLDEN_COLOR,\n }}\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Voice captions\"\n >\n <AnimatePresence mode=\"popLayout\">\n {lines.map((line) => (\n <CaptionLineComponent\n key={line.id}\n line={line}\n onExitComplete={() => handleExitComplete(line.id)}\n />\n ))}\n </AnimatePresence>\n </div>\n );\n};\n\ninterface CaptionLineComponentProps {\n line: CaptionLine;\n onExitComplete: () => void;\n}\n\nconst CaptionLineComponent = ({\n line,\n onExitComplete,\n}: CaptionLineComponentProps) => {\n return (\n <motion.div\n className=\"caption-line mb-1\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{\n opacity: 0,\n filter: \"blur(4px)\",\n textShadow: \"0 0 0px transparent\",\n }}\n transition={{\n duration: DISSOLVE_MS / 1000,\n ease: \"easeOut\",\n }}\n onAnimationComplete={(definition) => {\n if (definition === \"exit\") {\n onExitComplete();\n }\n }}\n >\n {line.words.map((word, wordIdx) => (\n <CaptionWord\n key={`${line.id}-${wordIdx}`}\n word={word}\n isRevealed={wordIdx < line.revealedCount}\n isLastRevealed={wordIdx === line.revealedCount - 1}\n />\n ))}\n </motion.div>\n );\n};\n\ninterface CaptionWordProps {\n word: string;\n isRevealed: boolean;\n isLastRevealed: boolean;\n}\n\nconst CaptionWord = ({ word, isRevealed, isLastRevealed }: CaptionWordProps) => {\n const [glowPhase, setGlowPhase] = useState<\"intense\" | \"settled\">(\"intense\");\n\n useEffect(() => {\n if (isLastRevealed) {\n setGlowPhase(\"intense\");\n const timer = setTimeout(() => {\n setGlowPhase(\"settled\");\n }, GLOW_PULSE_MS);\n return () => clearTimeout(timer);\n }\n }, [isLastRevealed]);\n\n return (\n <motion.span\n className=\"inline-block mr-[0.25em]\"\n initial={{ opacity: 0, y: 8, filter: \"blur(4px)\" }}\n animate={\n isRevealed\n ? {\n opacity: 1,\n y: 0,\n filter: \"blur(0px)\",\n textShadow:\n isLastRevealed && glowPhase === \"intense\"\n ? GOLDEN_GLOW_INTENSE\n : GOLDEN_GLOW,\n }\n : { opacity: 0, y: 8, filter: \"blur(4px)\" }\n }\n transition={{\n opacity: { duration: 0.15, ease: \"easeOut\" },\n y: { duration: 0.2, ease: \"easeOut\" },\n filter: { duration: 0.2, ease: \"easeOut\" },\n textShadow: {\n duration: glowPhase === \"intense\" ? 0.1 : GLOW_PULSE_MS / 1000,\n ease: \"easeOut\",\n },\n }}\n >\n {word}\n </motion.span>\n );\n};\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n > {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n (\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef\n ) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n }\n);\n\nCheckboxTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>(\n (props: ScopedProps<CheckboxProps>, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n }\n);\n\nCheckbox.displayName = CHECKBOX_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = React.forwardRef<CheckboxIndicatorElement, CheckboxIndicatorProps>(\n (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n }\n);\n\nCheckboxIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = React.forwardRef<HTMLInputElement, CheckboxBubbleInputProps>(\n ({ __scopeCheckbox, ...props }: ScopedProps<CheckboxBubbleInputProps>, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n }\n);\n\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useControlTokens, useColorTokens, useMotionTokens } from \"../../../theme/UiThemeProvider\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst checkboxSizeVariants = cva(\n \"shrink-0 rounded-[4px] border-[1.5px] flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"h-[14px] w-[14px]\",\n default: \"h-[18px] w-[18px]\",\n lg: \"h-[22px] w-[22px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst checkIconSizeMap = {\n sm: 10,\n default: 13,\n lg: 16,\n} as const;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassCheckboxProps\n extends Omit<React.ComponentProps<typeof CheckboxPrimitive.Root>, \"children\">,\n VariantProps<typeof checkboxSizeVariants> {\n label?: string;\n description?: string;\n error?: string;\n disableAnimations?: boolean;\n containerClassName?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const GlassCheckbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n GlassCheckboxProps\n>(function GlassCheckbox(\n {\n className,\n containerClassName,\n size = \"default\",\n label,\n description,\n error,\n disableAnimations = false,\n checked,\n defaultChecked,\n onCheckedChange,\n id,\n ...props\n },\n ref\n) {\n const controls = useControlTokens();\n const colors = useColorTokens();\n const motionTokens = useMotionTokens();\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const internalId = React.useId();\n const finalId = id || internalId;\n const descriptionId = `${finalId}-description`;\n const errorId = `${finalId}-error`;\n\n const iconSize = checkIconSizeMap[size || \"default\"];\n\n // Track internal checked state for animation\n const [internalChecked, setInternalChecked] = React.useState<\n CheckboxPrimitive.CheckedState\n >(defaultChecked ?? false);\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleCheckedChange = React.useCallback(\n (value: CheckboxPrimitive.CheckedState) => {\n if (checked === undefined) {\n setInternalChecked(value);\n }\n onCheckedChange?.(value);\n },\n [checked, onCheckedChange]\n );\n\n const isOn = isChecked === true || isChecked === \"indeterminate\";\n\n return (\n <div className={cn(\"flex flex-col gap-1\", containerClassName)}>\n <div className=\"flex items-start gap-2.5\">\n <CheckboxPrimitive.Root\n ref={ref}\n id={finalId}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={handleCheckedChange}\n className={cn(checkboxSizeVariants({ size }), className)}\n style={{\n backgroundColor: isOn\n ? controls.switch.track.bg.on\n : controls.switch.track.bg.off,\n borderColor: error\n ? colors.accent.destructive\n : isOn\n ? controls.switch.track.border.on\n : controls.switch.track.border.off,\n color: controls.switch.thumb.bg.on,\n boxShadow: isOn ? controls.switch.thumb.shadow.on : \"none\",\n } as React.CSSProperties}\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-invalid={error ? \"true\" : undefined}\n {...props}\n >\n <CheckboxPrimitive.Indicator forceMount asChild>\n <span className=\"flex items-center justify-center\">\n <AnimatePresence>\n {isOn && (\n <motion.svg\n key=\"check\"\n width={iconSize}\n height={iconSize}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n initial={shouldAnimate ? { scale: 0.5, opacity: 0 } : false}\n animate={{ scale: 1, opacity: 1 }}\n exit={shouldAnimate ? { scale: 0.5, opacity: 0 } : {}}\n transition={\n shouldAnimate\n ? { type: \"spring\", damping: motionTokens.spring.damping, stiffness: motionTokens.spring.stiffness }\n : { duration: 0 }\n }\n >\n <motion.path\n d=\"M3.5 8.5L6.5 11.5L12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n initial={shouldAnimate ? { pathLength: 0 } : false}\n animate={{ pathLength: 1 }}\n transition={\n shouldAnimate\n ? { type: \"spring\", damping: motionTokens.spring.damping, stiffness: motionTokens.spring.stiffness, delay: 0.05 }\n : { duration: 0 }\n }\n />\n </motion.svg>\n )}\n </AnimatePresence>\n </span>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5 pt-px\">\n {label && (\n <label\n htmlFor={finalId}\n className=\"text-sm font-medium leading-none cursor-pointer select-none\"\n style={{ color: colors.text.primary }}\n >\n {label}\n </label>\n )}\n {description && !error && (\n <p\n id={descriptionId}\n className=\"text-xs leading-relaxed\"\n style={{ color: colors.text.muted }}\n >\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs flex items-center gap-1 ml-[calc(18px+0.625rem)]\"\n style={{ color: colors.accent.destructive }}\n initial={shouldAnimate ? { opacity: 0, y: -4 } : false}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: motionTokens.fast.duration }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n );\n});\n\nGlassCheckbox.displayName = \"GlassCheckbox\";\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? form || !!button.closest('form') : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <RadioBubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n form={form}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'RadioBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface RadioBubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst RadioBubbleInput = React.forwardRef<HTMLInputElement, RadioBubbleInputProps>(\n (\n {\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }: ScopedProps<RadioBubbleInputProps>,\n forwardedRef\n ) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <Primitive.input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n }\n);\n\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './radio';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContext, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n disabled: boolean;\n value: string | null;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: React.ComponentPropsWithoutRef<typeof Radio>['required'];\n disabled?: React.ComponentPropsWithoutRef<typeof Radio>['disabled'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: string | null;\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange as (value: string | null) => void,\n caller: RADIO_GROUP_NAME,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n disabled={disabled}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-required={required}\n aria-orientation={orientation}\n data-disabled={disabled ? '' : undefined}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ComponentRef<typeof Radio>;\ntype RadioProps = React.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ComponentRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!isDisabled}\n active={checked}\n >\n <Radio\n disabled={isDisabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ComponentRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = React.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useControlTokens, useColorTokens, useMotionTokens } from \"../../../theme/UiThemeProvider\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst radioItemSizeVariants = cva(\n \"shrink-0 rounded-full border-[1.5px] flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"h-[14px] w-[14px]\",\n default: \"h-[18px] w-[18px]\",\n lg: \"h-[22px] w-[22px]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nconst dotSizeMap = {\n sm: 6,\n default: 8,\n lg: 10,\n} as const;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassRadioGroupProps\n extends Omit<React.ComponentProps<typeof RadioGroupPrimitive.Root>, \"children\"> {\n children: React.ReactNode;\n label?: string;\n error?: string;\n direction?: \"vertical\" | \"horizontal\";\n className?: string;\n}\n\nexport interface GlassRadioGroupItemProps\n extends Omit<React.ComponentProps<typeof RadioGroupPrimitive.Item>, \"children\">,\n VariantProps<typeof radioItemSizeVariants> {\n label: string;\n description?: string;\n disableAnimations?: boolean;\n}\n\n// ============================================================================\n// CONTEXT (for sharing group-level state with items)\n// ============================================================================\n\ninterface RadioGroupContextValue {\n value: string | undefined;\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContextValue>({\n value: undefined,\n});\n\n// ============================================================================\n// GROUP COMPONENT\n// ============================================================================\n\nexport const GlassRadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n GlassRadioGroupProps\n>(function GlassRadioGroup(\n {\n className,\n children,\n label,\n error,\n direction = \"vertical\",\n value,\n defaultValue,\n onValueChange,\n ...props\n },\n ref\n) {\n const colors = useColorTokens();\n const motionTokens = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !reducedMotion;\n\n // Track internal value for item styling\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n defaultValue\n );\n const currentValue = value !== undefined ? (value ?? undefined) : internalValue;\n\n const handleValueChange = React.useCallback(\n (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n },\n [value, onValueChange]\n );\n\n const internalId = React.useId();\n const errorId = `${internalId}-error`;\n\n return (\n <RadioGroupContext.Provider value={{ value: currentValue }}>\n <div className=\"flex flex-col gap-2\">\n {label && (\n <span\n className=\"text-sm font-medium leading-none\"\n style={{ color: colors.text.primary }}\n >\n {label}\n </span>\n )}\n\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\n direction === \"vertical\" ? \"grid gap-3\" : \"flex flex-wrap gap-4\",\n className\n )}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleValueChange}\n aria-describedby={error ? errorId : undefined}\n aria-invalid={error ? \"true\" : undefined}\n {...props}\n >\n {children}\n </RadioGroupPrimitive.Root>\n\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs flex items-center gap-1\"\n style={{ color: colors.accent.destructive }}\n initial={shouldAnimate ? { opacity: 0, y: -4 } : false}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: motionTokens.fast.duration }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n </RadioGroupContext.Provider>\n );\n});\n\nGlassRadioGroup.displayName = \"GlassRadioGroup\";\n\n// ============================================================================\n// ITEM COMPONENT\n// ============================================================================\n\nexport const GlassRadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n GlassRadioGroupItemProps\n>(function GlassRadioGroupItem(\n {\n className,\n size = \"default\",\n label,\n description,\n disableAnimations = false,\n value,\n id,\n ...props\n },\n ref\n) {\n const controls = useControlTokens();\n const colors = useColorTokens();\n const motionTokens = useMotionTokens();\n\n const { value: groupValue } = React.useContext(RadioGroupContext);\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const internalId = React.useId();\n const finalId = id || internalId;\n\n const isSelected = groupValue === value;\n const dotSize = dotSizeMap[size || \"default\"];\n\n return (\n <div className=\"flex items-start gap-2.5\">\n <RadioGroupPrimitive.Item\n ref={ref}\n id={finalId}\n value={value}\n className={cn(radioItemSizeVariants({ size }), className)}\n style={{\n backgroundColor: isSelected\n ? controls.switch.track.bg.on\n : controls.switch.track.bg.off,\n borderColor: isSelected\n ? controls.switch.track.border.on\n : controls.switch.track.border.off,\n boxShadow: isSelected ? controls.switch.thumb.shadow.on : \"none\",\n \"--tw-ring-offset-color\": \"transparent\",\n \"--tw-ring-color\": colors.ring,\n } as React.CSSProperties}\n {...props}\n >\n <RadioGroupPrimitive.Indicator forceMount asChild>\n <span className=\"flex items-center justify-center\">\n <AnimatePresence>\n {isSelected && (\n <motion.span\n key=\"dot\"\n className=\"block rounded-full\"\n style={{\n width: dotSize,\n height: dotSize,\n backgroundColor: controls.switch.thumb.bg.on,\n }}\n initial={shouldAnimate ? { scale: 0, opacity: 0 } : false}\n animate={{ scale: 1, opacity: 1 }}\n exit={shouldAnimate ? { scale: 0, opacity: 0 } : {}}\n transition={\n shouldAnimate\n ? { type: \"spring\", damping: motionTokens.spring.damping, stiffness: motionTokens.spring.stiffness }\n : { duration: 0 }\n }\n />\n )}\n </AnimatePresence>\n </span>\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5 pt-px\">\n <label\n htmlFor={finalId}\n className=\"text-sm font-medium leading-none cursor-pointer select-none\"\n style={{ color: colors.text.primary }}\n >\n {label}\n </label>\n {description && (\n <p\n className=\"text-xs leading-relaxed\"\n style={{ color: colors.text.muted }}\n >\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n );\n});\n\nGlassRadioGroupItem.displayName = \"GlassRadioGroupItem\";\n","import * as React from 'react';\nimport { clamp } from '@radix-ui/number';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { createCollection } from '@radix-ui/react-collection';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst PAGE_KEYS = ['PageUp', 'PageDown'];\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype SlideDirection = 'from-left' | 'from-right' | 'from-bottom' | 'from-top';\nconst BACK_KEYS: Record<SlideDirection, string[]> = {\n 'from-left': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-right': ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n 'from-bottom': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-top': ['Home', 'PageDown', 'ArrowUp', 'ArrowLeft'],\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Slider\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLIDER_NAME = 'Slider';\n\nconst [Collection, useCollection, createCollectionScope] =\n createCollection<SliderThumbElement>(SLIDER_NAME);\n\ntype ScopedProps<P> = P & { __scopeSlider?: Scope };\nconst [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n createCollectionScope,\n]);\n\ntype SliderContextValue = {\n name: string | undefined;\n disabled: boolean | undefined;\n min: number;\n max: number;\n values: number[];\n valueIndexToChangeRef: React.MutableRefObject<number>;\n thumbs: Set<SliderThumbElement>;\n orientation: SliderProps['orientation'];\n form: string | undefined;\n};\n\nconst [SliderProvider, useSliderContext] = createSliderContext<SliderContextValue>(SLIDER_NAME);\n\ntype SliderElement = SliderHorizontalElement | SliderVerticalElement;\ninterface SliderProps\n extends Omit<\n SliderHorizontalProps | SliderVerticalProps,\n keyof SliderOrientationPrivateProps | 'defaultValue'\n > {\n name?: string;\n disabled?: boolean;\n orientation?: React.AriaAttributes['aria-orientation'];\n dir?: Direction;\n min?: number;\n max?: number;\n step?: number;\n minStepsBetweenThumbs?: number;\n value?: number[];\n defaultValue?: number[];\n onValueChange?(value: number[]): void;\n onValueCommit?(value: number[]): void;\n inverted?: boolean;\n form?: string;\n}\n\nconst Slider = React.forwardRef<SliderElement, SliderProps>(\n (props: ScopedProps<SliderProps>, forwardedRef) => {\n const {\n name,\n min = 0,\n max = 100,\n step = 1,\n orientation = 'horizontal',\n disabled = false,\n minStepsBetweenThumbs = 0,\n defaultValue = [min],\n value,\n onValueChange = () => {},\n onValueCommit = () => {},\n inverted = false,\n form,\n ...sliderProps\n } = props;\n const thumbRefs = React.useRef<SliderContextValue['thumbs']>(new Set());\n const valueIndexToChangeRef = React.useRef<number>(0);\n const isHorizontal = orientation === 'horizontal';\n const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n\n const [values = [], setValues] = useControllableState({\n prop: value,\n defaultProp: defaultValue,\n onChange: (value) => {\n const thumbs = [...thumbRefs.current];\n thumbs[valueIndexToChangeRef.current]?.focus();\n onValueChange(value);\n },\n });\n const valuesBeforeSlideStartRef = React.useRef(values);\n\n function handleSlideStart(value: number) {\n const closestIndex = getClosestValueIndex(values, value);\n updateValues(value, closestIndex);\n }\n\n function handleSlideMove(value: number) {\n updateValues(value, valueIndexToChangeRef.current);\n }\n\n function handleSlideEnd() {\n const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const nextValue = values[valueIndexToChangeRef.current];\n const hasChanged = nextValue !== prevValue;\n if (hasChanged) onValueCommit(values);\n }\n\n function updateValues(value: number, atIndex: number, { commit } = { commit: false }) {\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value - min) / step) * step + min, decimalCount);\n const nextValue = clamp(snapToStep, [min, max]);\n\n setValues((prevValues = []) => {\n const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prevValues);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prevValues;\n } else {\n return prevValues;\n }\n });\n }\n\n return (\n <SliderProvider\n scope={props.__scopeSlider}\n name={name}\n disabled={disabled}\n min={min}\n max={max}\n valueIndexToChangeRef={valueIndexToChangeRef}\n thumbs={thumbRefs.current}\n values={values}\n orientation={orientation}\n form={form}\n >\n <Collection.Provider scope={props.__scopeSlider}>\n <Collection.Slot scope={props.__scopeSlider}>\n <SliderOrientation\n aria-disabled={disabled}\n data-disabled={disabled ? '' : undefined}\n {...sliderProps}\n ref={forwardedRef}\n onPointerDown={composeEventHandlers(sliderProps.onPointerDown, () => {\n if (!disabled) valuesBeforeSlideStartRef.current = values;\n })}\n min={min}\n max={max}\n inverted={inverted}\n onSlideStart={disabled ? undefined : handleSlideStart}\n onSlideMove={disabled ? undefined : handleSlideMove}\n onSlideEnd={disabled ? undefined : handleSlideEnd}\n onHomeKeyDown={() => !disabled && updateValues(min, 0, { commit: true })}\n onEndKeyDown={() =>\n !disabled && updateValues(max, values.length - 1, { commit: true })\n }\n onStepKeyDown={({ event, direction: stepDirection }) => {\n if (!disabled) {\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || (event.shiftKey && ARROW_KEYS.includes(event.key));\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const value = values[atIndex]!;\n const stepInDirection = step * multiplier * stepDirection;\n updateValues(value + stepInDirection, atIndex, { commit: true });\n }\n }}\n />\n </Collection.Slot>\n </Collection.Provider>\n </SliderProvider>\n );\n }\n);\n\nSlider.displayName = SLIDER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderHorizontal\n * -----------------------------------------------------------------------------------------------*/\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\nconst [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext<{\n startEdge: Side;\n endEdge: Side;\n size: keyof NonNullable<ReturnType<typeof useSize>>;\n direction: number;\n}>(SLIDER_NAME, {\n startEdge: 'left',\n endEdge: 'right',\n size: 'width',\n direction: 1,\n});\n\ntype SliderOrientationPrivateProps = {\n min: number;\n max: number;\n inverted: boolean;\n onSlideStart?(value: number): void;\n onSlideMove?(value: number): void;\n onSlideEnd?(): void;\n onHomeKeyDown(event: React.KeyboardEvent): void;\n onEndKeyDown(event: React.KeyboardEvent): void;\n onStepKeyDown(step: { event: React.KeyboardEvent; direction: number }): void;\n};\ninterface SliderOrientationProps\n extends Omit<SliderImplProps, keyof SliderImplPrivateProps>,\n SliderOrientationPrivateProps {}\n\ntype SliderHorizontalElement = SliderImplElement;\ninterface SliderHorizontalProps extends SliderOrientationProps {\n dir?: Direction;\n}\n\nconst SliderHorizontal = React.forwardRef<SliderHorizontalElement, SliderHorizontalProps>(\n (props: ScopedProps<SliderHorizontalProps>, forwardedRef) => {\n const {\n min,\n max,\n dir,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const [slider, setSlider] = React.useState<SliderImplElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setSlider(node));\n const rectRef = React.useRef<DOMRect>(undefined);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === 'ltr';\n const isSlidingFromLeft = (isDirectionLTR && !inverted) || (!isDirectionLTR && inverted);\n\n function getValueFromPointer(pointerPosition: number) {\n const rect = rectRef.current || slider!.getBoundingClientRect();\n const input: [number, number] = [0, rect.width];\n const output: [number, number] = isSlidingFromLeft ? [min, max] : [max, min];\n const value = linearScale(input, output);\n\n rectRef.current = rect;\n return value(pointerPosition - rect.left);\n }\n\n return (\n <SliderOrientationProvider\n scope={props.__scopeSlider}\n startEdge={isSlidingFromLeft ? 'left' : 'right'}\n endEdge={isSlidingFromLeft ? 'right' : 'left'}\n direction={isSlidingFromLeft ? 1 : -1}\n size=\"width\"\n >\n <SliderImpl\n dir={direction}\n data-orientation=\"horizontal\"\n {...sliderProps}\n ref={composedRefs}\n style={{\n ...sliderProps.style,\n ['--radix-slider-thumb-transform' as any]: 'translateX(-50%)',\n }}\n onSlideStart={(event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideStart?.(value);\n }}\n onSlideMove={(event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideMove?.(value);\n }}\n onSlideEnd={() => {\n rectRef.current = undefined;\n onSlideEnd?.();\n }}\n onStepKeyDown={(event) => {\n const slideDirection = isSlidingFromLeft ? 'from-left' : 'from-right';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }}\n />\n </SliderOrientationProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderVertical\n * -----------------------------------------------------------------------------------------------*/\n\ntype SliderVerticalElement = SliderImplElement;\ninterface SliderVerticalProps extends SliderOrientationProps {}\n\nconst SliderVertical = React.forwardRef<SliderVerticalElement, SliderVerticalProps>(\n (props: ScopedProps<SliderVerticalProps>, forwardedRef) => {\n const {\n min,\n max,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const sliderRef = React.useRef<SliderImplElement>(null);\n const ref = useComposedRefs(forwardedRef, sliderRef);\n const rectRef = React.useRef<DOMRect>(undefined);\n const isSlidingFromBottom = !inverted;\n\n function getValueFromPointer(pointerPosition: number) {\n const rect = rectRef.current || sliderRef.current!.getBoundingClientRect();\n const input: [number, number] = [0, rect.height];\n const output: [number, number] = isSlidingFromBottom ? [max, min] : [min, max];\n const value = linearScale(input, output);\n\n rectRef.current = rect;\n return value(pointerPosition - rect.top);\n }\n\n return (\n <SliderOrientationProvider\n scope={props.__scopeSlider}\n startEdge={isSlidingFromBottom ? 'bottom' : 'top'}\n endEdge={isSlidingFromBottom ? 'top' : 'bottom'}\n size=\"height\"\n direction={isSlidingFromBottom ? 1 : -1}\n >\n <SliderImpl\n data-orientation=\"vertical\"\n {...sliderProps}\n ref={ref}\n style={{\n ...sliderProps.style,\n ['--radix-slider-thumb-transform' as any]: 'translateY(50%)',\n }}\n onSlideStart={(event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideStart?.(value);\n }}\n onSlideMove={(event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideMove?.(value);\n }}\n onSlideEnd={() => {\n rectRef.current = undefined;\n onSlideEnd?.();\n }}\n onStepKeyDown={(event) => {\n const slideDirection = isSlidingFromBottom ? 'from-bottom' : 'from-top';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }}\n />\n </SliderOrientationProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderImpl\n * -----------------------------------------------------------------------------------------------*/\n\ntype SliderImplElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ntype SliderImplPrivateProps = {\n onSlideStart(event: React.PointerEvent): void;\n onSlideMove(event: React.PointerEvent): void;\n onSlideEnd(event: React.PointerEvent): void;\n onHomeKeyDown(event: React.KeyboardEvent): void;\n onEndKeyDown(event: React.KeyboardEvent): void;\n onStepKeyDown(event: React.KeyboardEvent): void;\n};\ninterface SliderImplProps extends PrimitiveDivProps, SliderImplPrivateProps {}\n\nconst SliderImpl = React.forwardRef<SliderImplElement, SliderImplProps>(\n (props: ScopedProps<SliderImplProps>, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n\n return (\n <Primitive.span\n {...sliderProps}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Home') {\n onHomeKeyDown(event);\n // Prevent scrolling to page start\n event.preventDefault();\n } else if (event.key === 'End') {\n onEndKeyDown(event);\n // Prevent scrolling to page end\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event);\n // Prevent scrolling for directional key presses\n event.preventDefault();\n }\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target as HTMLElement;\n target.setPointerCapture(event.pointerId);\n // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault();\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (context.thumbs.has(target)) {\n target.focus();\n } else {\n onSlideStart(event);\n }\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n })}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n onSlideEnd(event);\n }\n })}\n />\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderTrack\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRACK_NAME = 'SliderTrack';\n\ntype SliderTrackElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface SliderTrackProps extends PrimitiveSpanProps {}\n\nconst SliderTrack = React.forwardRef<SliderTrackElement, SliderTrackProps>(\n (props: ScopedProps<SliderTrackProps>, forwardedRef) => {\n const { __scopeSlider, ...trackProps } = props;\n const context = useSliderContext(TRACK_NAME, __scopeSlider);\n return (\n <Primitive.span\n data-disabled={context.disabled ? '' : undefined}\n data-orientation={context.orientation}\n {...trackProps}\n ref={forwardedRef}\n />\n );\n }\n);\n\nSliderTrack.displayName = TRACK_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderRange\n * -----------------------------------------------------------------------------------------------*/\n\nconst RANGE_NAME = 'SliderRange';\n\ntype SliderRangeElement = React.ComponentRef<typeof Primitive.span>;\ninterface SliderRangeProps extends PrimitiveSpanProps {}\n\nconst SliderRange = React.forwardRef<SliderRangeElement, SliderRangeProps>(\n (props: ScopedProps<SliderRangeProps>, forwardedRef) => {\n const { __scopeSlider, ...rangeProps } = props;\n const context = useSliderContext(RANGE_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n const ref = React.useRef<HTMLSpanElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const valuesCount = context.values.length;\n const percentages = context.values.map((value) =>\n convertValueToPercentage(value, context.min, context.max)\n );\n const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n const offsetEnd = 100 - Math.max(...percentages);\n\n return (\n <Primitive.span\n data-orientation={context.orientation}\n data-disabled={context.disabled ? '' : undefined}\n {...rangeProps}\n ref={composedRefs}\n style={{\n ...props.style,\n [orientation.startEdge]: offsetStart + '%',\n [orientation.endEdge]: offsetEnd + '%',\n }}\n />\n );\n }\n);\n\nSliderRange.displayName = RANGE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'SliderThumb';\n\ntype SliderThumbElement = SliderThumbImplElement;\ninterface SliderThumbProps extends Omit<SliderThumbImplProps, 'index'> {}\n\nconst SliderThumb = React.forwardRef<SliderThumbElement, SliderThumbProps>(\n (props: ScopedProps<SliderThumbProps>, forwardedRef) => {\n const getItems = useCollection(props.__scopeSlider);\n const [thumb, setThumb] = React.useState<SliderThumbImplElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n const index = React.useMemo(\n () => (thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1),\n [getItems, thumb]\n );\n return <SliderThumbImpl {...props} ref={composedRefs} index={index} />;\n }\n);\n\ntype SliderThumbImplElement = React.ComponentRef<typeof Primitive.span>;\ninterface SliderThumbImplProps extends PrimitiveSpanProps {\n index: number;\n name?: string;\n}\n\nconst SliderThumbImpl = React.forwardRef<SliderThumbImplElement, SliderThumbImplProps>(\n (props: ScopedProps<SliderThumbImplProps>, forwardedRef) => {\n const { __scopeSlider, index, name, ...thumbProps } = props;\n const context = useSliderContext(THUMB_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n const [thumb, setThumb] = React.useState<HTMLSpanElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = thumb ? context.form || !!thumb.closest('form') : true;\n const size = useSize(thumb);\n // We cast because index could be `-1` which would return undefined\n const value = context.values[index] as number | undefined;\n const percent =\n value === undefined ? 0 : convertValueToPercentage(value, context.min, context.max);\n const label = getLabel(index, context.values.length);\n const orientationSize = size?.[orientation.size];\n const thumbInBoundsOffset = orientationSize\n ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction)\n : 0;\n\n React.useEffect(() => {\n if (thumb) {\n context.thumbs.add(thumb);\n return () => {\n context.thumbs.delete(thumb);\n };\n }\n }, [thumb, context.thumbs]);\n\n return (\n <span\n style={{\n transform: 'var(--radix-slider-thumb-transform)',\n position: 'absolute',\n [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`,\n }}\n >\n <Collection.ItemSlot scope={props.__scopeSlider}>\n <Primitive.span\n role=\"slider\"\n aria-label={props['aria-label'] || label}\n aria-valuemin={context.min}\n aria-valuenow={value}\n aria-valuemax={context.max}\n aria-orientation={context.orientation}\n data-orientation={context.orientation}\n data-disabled={context.disabled ? '' : undefined}\n tabIndex={context.disabled ? undefined : 0}\n {...thumbProps}\n ref={composedRefs}\n /**\n * There will be no value on initial render while we work out the index so we hide thumbs\n * without a value, otherwise SSR will render them in the wrong position before they\n * snap into the correct position during hydration which would be visually jarring for\n * slower connections.\n */\n style={value === undefined ? { display: 'none' } : props.style}\n onFocus={composeEventHandlers(props.onFocus, () => {\n context.valueIndexToChangeRef.current = index;\n })}\n />\n </Collection.ItemSlot>\n\n {isFormControl && (\n <SliderBubbleInput\n key={index}\n name={\n name ??\n (context.name ? context.name + (context.values.length > 1 ? '[]' : '') : undefined)\n }\n form={context.form}\n value={value}\n />\n )}\n </span>\n );\n }\n);\n\nSliderThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'RadioBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface SliderBubbleInputProps extends InputProps {}\n\nconst SliderBubbleInput = React.forwardRef<HTMLInputElement, SliderBubbleInputProps>(\n ({ __scopeSlider, value, ...props }: ScopedProps<SliderBubbleInputProps>, forwardedRef) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevValue = usePrevious(value);\n\n // Bubble value change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'value') as PropertyDescriptor;\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event('input', { bubbles: true });\n setValue.call(input, value);\n input.dispatchEvent(event);\n }\n }, [prevValue, value]);\n\n /**\n * We purposefully do not use `type=\"hidden\"` here otherwise forms that\n * wrap it will not be able to access its value via the FormData API.\n *\n * We purposefully do not add the `value` attribute here to allow the value\n * to be set programmatically and bubble to any parent form `onChange` event.\n * Adding the `value` will cause React to consider the programmatic\n * dispatch a duplicate and it will get swallowed.\n */\n return (\n <Primitive.input\n style={{ display: 'none' }}\n {...props}\n ref={composedRefs}\n defaultValue={value}\n />\n );\n }\n);\n\nSliderBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\n\nfunction convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, [0, 100]);\n}\n\n/**\n * Returns a label for each thumb when there are two or more thumbs\n */\nfunction getLabel(index: number, totalValues: number) {\n if (totalValues > 2) {\n return `Value ${index + 1} of ${totalValues}`;\n } else if (totalValues === 2) {\n return ['Minimum', 'Maximum'][index];\n } else {\n return undefined;\n }\n}\n\n/**\n * Given a `values` array and a `nextValue`, determine which value in\n * the array is closest to `nextValue` and return its index.\n *\n * @example\n * // returns 1\n * getClosestValueIndex([10, 30], 25);\n */\nfunction getClosestValueIndex(values: number[], nextValue: number) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\n/**\n * Offsets the thumb centre point while sliding to ensure it remains\n * within the bounds of the slider when reaching the edges\n */\nfunction getThumbInBoundsOffset(width: number, left: number, direction: number) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\n\n/**\n * Gets an array of steps between each value.\n *\n * @example\n * // returns [1, 9]\n * getStepsBetweenValues([10, 11, 20]);\n */\nfunction getStepsBetweenValues(values: number[]) {\n return values.slice(0, -1).map((value, index) => values[index + 1]! - value);\n}\n\n/**\n * Verifies the minimum steps between all values is greater than or equal\n * to the expected minimum steps.\n *\n * @example\n * // returns false\n * hasMinStepsBetweenValues([1,2,3], 2);\n *\n * @example\n * // returns true\n * hasMinStepsBetweenValues([1,2,3], 1);\n */\nfunction hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\nfunction getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nfunction roundValue(value: number, decimalCount: number) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\n\nconst Root = Slider;\nconst Track = SliderTrack;\nconst Range = SliderRange;\nconst Thumb = SliderThumb;\n\nexport {\n createSliderScope,\n //\n Slider,\n SliderTrack,\n SliderRange,\n SliderThumb,\n //\n Root,\n Track,\n Range,\n Thumb,\n};\nexport type { SliderProps, SliderTrackProps, SliderRangeProps, SliderThumbProps };\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport React from \"react\";\nimport { useControlTokens, useColorTokens, useMotionTokens } from \"../../../theme/UiThemeProvider\";\n\n// ---------------------------------------------------------------------------\n// Variants\n// ---------------------------------------------------------------------------\n\nconst trackVariants = cva(\"relative w-full grow overflow-hidden rounded-full\", {\n variants: {\n size: {\n sm: \"h-[4px]\",\n default: \"h-[6px]\",\n lg: \"h-[8px]\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\nconst thumbVariants = cva(\n \"block rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"h-[14px] w-[14px]\",\n default: \"h-[18px] w-[18px]\",\n lg: \"h-[22px] w-[22px]\",\n },\n },\n defaultVariants: { size: \"default\" },\n }\n);\n\n// ---------------------------------------------------------------------------\n// Accent color map\n// ---------------------------------------------------------------------------\n\nconst accentFillMap = {\n default: undefined, // uses theme token fill\n accent: \"linear-gradient(90deg, #8B5CF6, #a78bfa)\",\n success: \"linear-gradient(90deg, #10B981, #34d399)\",\n} as const;\n\nconst accentThumbMap = {\n default: undefined,\n accent: \"#8B5CF6\",\n success: \"#10B981\",\n} as const;\n\nconst accentShadowMap = {\n default: undefined,\n accent: \"0 0 8px rgba(139, 92, 246, 0.5)\",\n success: \"0 0 8px rgba(16, 185, 129, 0.5)\",\n} as const;\n\nconst accentHoverShadowMap = {\n default: \"0 0 12px rgba(34,211,238,0.5)\",\n accent: \"0 0 12px rgba(139, 92, 246, 0.6)\",\n success: \"0 0 12px rgba(16, 185, 129, 0.6)\",\n} as const;\n\nconst accentFocusShadowMap = {\n default: \"0 0 16px rgba(34,211,238,0.7), 0 0 4px rgba(34,211,238,0.3)\",\n accent: \"0 0 16px rgba(139, 92, 246, 0.7), 0 0 4px rgba(139, 92, 246, 0.3)\",\n success: \"0 0 16px rgba(16, 185, 129, 0.7), 0 0 4px rgba(16, 185, 129, 0.3)\",\n} as const;\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface GlassSliderProps\n extends Omit<React.ComponentProps<typeof SliderPrimitive.Root>, \"children\">,\n VariantProps<typeof trackVariants> {\n variant?: \"default\" | \"accent\" | \"success\";\n showTooltip?: boolean;\n formatValue?: (value: number) => string;\n label?: string;\n showRange?: boolean;\n showValue?: boolean;\n disableAnimations?: boolean;\n className?: string;\n containerClassName?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function GlassSlider({\n className,\n containerClassName,\n variant = \"default\",\n size = \"default\",\n showTooltip = false,\n formatValue = (v) => String(v),\n label,\n showRange = false,\n showValue = false,\n disableAnimations = false,\n defaultValue,\n ...props\n}: GlassSliderProps) {\n const controls = useControlTokens();\n const colors = useColorTokens();\n const motionTokens = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const [internalValue, setInternalValue] = React.useState<number[]>(\n (props.value as number[]) ?? (defaultValue as number[]) ?? [0]\n );\n const [isDragging, setIsDragging] = React.useState(false);\n const [activeThumb, setActiveThumb] = React.useState<number | null>(null);\n\n const currentValue = (props.value as number[] | undefined) ?? internalValue;\n\n const handleValueChange = React.useCallback(\n (value: number[]) => {\n setInternalValue(value);\n props.onValueChange?.(value);\n },\n [props.onValueChange]\n );\n\n const fillGradient = accentFillMap[variant];\n const fillColor = fillGradient ?? controls.slider.fill;\n const thumbBg = accentThumbMap[variant] ?? controls.slider.thumb.bg;\n const thumbShadow = accentShadowMap[variant] ?? controls.slider.thumb.shadow;\n const thumbHoverShadow = accentHoverShadowMap[variant];\n const thumbFocusShadow = accentFocusShadowMap[variant];\n\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n const labelId = label ? `glass-slider-label-${React.useId()}` : undefined;\n\n return (\n <div className={cn(\"w-full\", containerClassName)}>\n {/* Label + value row */}\n {(label || showValue) && (\n <div className=\"flex items-center justify-between mb-2\">\n {label && (\n <span\n id={labelId}\n className=\"text-sm font-medium\"\n style={{ color: colors.text.muted }}\n >\n {label}\n </span>\n )}\n {showValue && (\n <span\n className=\"text-sm tabular-nums font-medium\"\n style={{ color: colors.text.primary }}\n >\n {currentValue.map(formatValue).join(\" - \")}\n </span>\n )}\n </div>\n )}\n\n <SliderPrimitive.Root\n data-slot=\"glass-slider\"\n defaultValue={defaultValue}\n aria-labelledby={labelId}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n onValueChange={handleValueChange}\n onPointerDown={() => setIsDragging(true)}\n onPointerUp={() => {\n setIsDragging(false);\n setActiveThumb(null);\n }}\n {...props}\n >\n {/* Track */}\n <SliderPrimitive.Track\n className={cn(trackVariants({ size }))}\n style={{\n background: \"rgba(2, 4, 10, 0.6)\",\n border: `1px solid rgba(255, 255, 255, 0.06)`,\n boxShadow: \"inset 0 1px 0 rgba(255,255,255,0.02)\",\n }}\n >\n {/* Fill (Range) */}\n <SliderPrimitive.Range\n className=\"absolute h-full rounded-full\"\n style={{\n background: fillGradient ?? fillColor,\n boxShadow: \"0 0 6px rgba(34,211,238,0.3)\",\n }}\n />\n </SliderPrimitive.Track>\n\n {/* Thumb(s) */}\n {(currentValue).map((val, i) => (\n <SliderPrimitive.Thumb key={i} asChild>\n <motion.span\n className={cn(thumbVariants({ size }))}\n style={{\n background: thumbBg,\n boxShadow: thumbShadow,\n border: \"1px solid rgba(255,255,255,0.1)\",\n transition: \"box-shadow 0.2s ease\",\n }}\n whileHover={\n shouldAnimate\n ? {\n scale: 1.15,\n boxShadow: thumbHoverShadow,\n transition: { duration: motionTokens.fast.duration },\n }\n : undefined\n }\n whileTap={\n shouldAnimate\n ? {\n scale: 0.95,\n boxShadow: thumbFocusShadow,\n transition: { duration: motionTokens.fast.duration },\n }\n : undefined\n }\n whileFocus={\n shouldAnimate\n ? { boxShadow: thumbFocusShadow }\n : undefined\n }\n onPointerDown={() => setActiveThumb(i)}\n onPointerUp={() => setActiveThumb(null)}\n >\n {/* Tooltip */}\n <AnimatePresence>\n {showTooltip && isDragging && activeThumb === i && shouldAnimate && (\n <motion.div\n initial={{ opacity: 0, y: 4, scale: 0.9 }}\n animate={{ opacity: 1, y: -8, scale: 1 }}\n exit={{ opacity: 0, y: 4, scale: 0.9 }}\n transition={{ duration: motionTokens.fast.duration }}\n className=\"absolute bottom-full left-1/2 -translate-x-1/2 mb-1 px-2 py-0.5 rounded text-xs font-medium whitespace-nowrap pointer-events-none\"\n style={{\n background: colors.bg.elevated,\n color: colors.text.primary,\n border: `1px solid ${colors.border}`,\n }}\n >\n {formatValue(val)}\n </motion.div>\n )}\n </AnimatePresence>\n </motion.span>\n </SliderPrimitive.Thumb>\n ))}\n </SliderPrimitive.Root>\n\n {/* Range labels */}\n {showRange && (\n <div className=\"flex items-center justify-between mt-1.5\">\n <span\n className=\"text-xs\"\n style={{ color: colors.text.soft }}\n >\n {formatValue(min)}\n </span>\n <span\n className=\"text-xs\"\n style={{ color: colors.text.soft }}\n >\n {formatValue(max)}\n </span>\n </div>\n )}\n </div>\n );\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef<CollapsibleElement, CollapsibleProps>(\n (props: ScopedProps<CollapsibleProps>, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef<CollapsibleTriggerElement, CollapsibleTriggerProps>(\n (props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.contentId}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef<CollapsibleContentElement, CollapsibleContentProps>(\n (props: ScopedProps<CollapsibleContentProps>, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport { createCollapsibleScope } from '@radix-ui/react-collapsible';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport { useDirection } from '@radix-ui/react-direction';\n\ntype Direction = 'ltr' | 'rtl';\n\n/* -------------------------------------------------------------------------------------------------\n * Accordion\n * -----------------------------------------------------------------------------------------------*/\n\nconst ACCORDION_NAME = 'Accordion';\nconst ACCORDION_KEYS = ['Home', 'End', 'ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'];\n\nconst [Collection, useCollection, createCollectionScope] =\n createCollection<AccordionTriggerElement>(ACCORDION_NAME);\n\ntype ScopedProps<P> = P & { __scopeAccordion?: Scope };\nconst [createAccordionContext, createAccordionScope] = createContextScope(ACCORDION_NAME, [\n createCollectionScope,\n createCollapsibleScope,\n]);\nconst useCollapsibleScope = createCollapsibleScope();\n\ntype AccordionElement = AccordionImplMultipleElement | AccordionImplSingleElement;\ninterface AccordionSingleProps extends AccordionImplSingleProps {\n type: 'single';\n}\ninterface AccordionMultipleProps extends AccordionImplMultipleProps {\n type: 'multiple';\n}\n\nconst Accordion = React.forwardRef<AccordionElement, AccordionSingleProps | AccordionMultipleProps>(\n (props: ScopedProps<AccordionSingleProps | AccordionMultipleProps>, forwardedRef) => {\n const { type, ...accordionProps } = props;\n const singleProps = accordionProps as AccordionImplSingleProps;\n const multipleProps = accordionProps as AccordionImplMultipleProps;\n return (\n <Collection.Provider scope={props.__scopeAccordion}>\n {type === 'multiple' ? (\n <AccordionImplMultiple {...multipleProps} ref={forwardedRef} />\n ) : (\n <AccordionImplSingle {...singleProps} ref={forwardedRef} />\n )}\n </Collection.Provider>\n );\n }\n);\n\nAccordion.displayName = ACCORDION_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionValueContextValue = {\n value: string[];\n onItemOpen(value: string): void;\n onItemClose(value: string): void;\n};\n\nconst [AccordionValueProvider, useAccordionValueContext] =\n createAccordionContext<AccordionValueContextValue>(ACCORDION_NAME);\n\nconst [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccordionContext(\n ACCORDION_NAME,\n { collapsible: false }\n);\n\ntype AccordionImplSingleElement = AccordionImplElement;\ninterface AccordionImplSingleProps extends AccordionImplProps {\n /**\n * The controlled stateful value of the accordion item whose content is expanded.\n */\n value?: string;\n /**\n * The value of the item whose content is expanded when the accordion is initially rendered. Use\n * `defaultValue` if you do not need to control the state of an accordion.\n */\n defaultValue?: string;\n /**\n * The callback that fires when the state of the accordion changes.\n */\n onValueChange?(value: string): void;\n /**\n * Whether an accordion item can be collapsed after it has been opened.\n * @default false\n */\n collapsible?: boolean;\n}\n\nconst AccordionImplSingle = React.forwardRef<AccordionImplSingleElement, AccordionImplSingleProps>(\n (props: ScopedProps<AccordionImplSingleProps>, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {},\n collapsible = false,\n ...accordionSingleProps\n } = props;\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? '',\n onChange: onValueChange,\n caller: ACCORDION_NAME,\n });\n\n return (\n <AccordionValueProvider\n scope={props.__scopeAccordion}\n value={React.useMemo(() => (value ? [value] : []), [value])}\n onItemOpen={setValue}\n onItemClose={React.useCallback(() => collapsible && setValue(''), [collapsible, setValue])}\n >\n <AccordionCollapsibleProvider scope={props.__scopeAccordion} collapsible={collapsible}>\n <AccordionImpl {...accordionSingleProps} ref={forwardedRef} />\n </AccordionCollapsibleProvider>\n </AccordionValueProvider>\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionImplMultipleElement = AccordionImplElement;\ninterface AccordionImplMultipleProps extends AccordionImplProps {\n /**\n * The controlled stateful value of the accordion items whose contents are expanded.\n */\n value?: string[];\n /**\n * The value of the items whose contents are expanded when the accordion is initially rendered. Use\n * `defaultValue` if you do not need to control the state of an accordion.\n */\n defaultValue?: string[];\n /**\n * The callback that fires when the state of the accordion changes.\n */\n onValueChange?(value: string[]): void;\n}\n\nconst AccordionImplMultiple = React.forwardRef<\n AccordionImplMultipleElement,\n AccordionImplMultipleProps\n>((props: ScopedProps<AccordionImplMultipleProps>, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {},\n ...accordionMultipleProps\n } = props;\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n caller: ACCORDION_NAME,\n });\n\n const handleItemOpen = React.useCallback(\n (itemValue: string) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n\n const handleItemClose = React.useCallback(\n (itemValue: string) =>\n setValue((prevValue = []) => prevValue.filter((value) => value !== itemValue)),\n [setValue]\n );\n\n return (\n <AccordionValueProvider\n scope={props.__scopeAccordion}\n value={value}\n onItemOpen={handleItemOpen}\n onItemClose={handleItemClose}\n >\n <AccordionCollapsibleProvider scope={props.__scopeAccordion} collapsible={true}>\n <AccordionImpl {...accordionMultipleProps} ref={forwardedRef} />\n </AccordionCollapsibleProvider>\n </AccordionValueProvider>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionImplContextValue = {\n disabled?: boolean;\n direction: AccordionImplProps['dir'];\n orientation: AccordionImplProps['orientation'];\n};\n\nconst [AccordionImplProvider, useAccordionContext] =\n createAccordionContext<AccordionImplContextValue>(ACCORDION_NAME);\n\ntype AccordionImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface AccordionImplProps extends PrimitiveDivProps {\n /**\n * Whether or not an accordion is disabled from user interaction.\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * The layout in which the Accordion operates.\n * @default vertical\n */\n orientation?: React.AriaAttributes['aria-orientation'];\n /**\n * The language read direction.\n */\n dir?: Direction;\n}\n\nconst AccordionImpl = React.forwardRef<AccordionImplElement, AccordionImplProps>(\n (props: ScopedProps<AccordionImplProps>, forwardedRef) => {\n const { __scopeAccordion, disabled, dir, orientation = 'vertical', ...accordionProps } = props;\n const accordionRef = React.useRef<AccordionImplElement>(null);\n const composedRefs = useComposedRefs(accordionRef, forwardedRef);\n const getItems = useCollection(__scopeAccordion);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === 'ltr';\n\n const handleKeyDown = composeEventHandlers(props.onKeyDown, (event) => {\n if (!ACCORDION_KEYS.includes(event.key)) return;\n const target = event.target as HTMLElement;\n const triggerCollection = getItems().filter((item) => !item.ref.current?.disabled);\n const triggerIndex = triggerCollection.findIndex((item) => item.ref.current === target);\n const triggerCount = triggerCollection.length;\n\n if (triggerIndex === -1) return;\n\n // Prevents page scroll while user is navigating\n event.preventDefault();\n\n let nextIndex = triggerIndex;\n const homeIndex = 0;\n const endIndex = triggerCount - 1;\n\n const moveNext = () => {\n nextIndex = triggerIndex + 1;\n if (nextIndex > endIndex) {\n nextIndex = homeIndex;\n }\n };\n\n const movePrev = () => {\n nextIndex = triggerIndex - 1;\n if (nextIndex < homeIndex) {\n nextIndex = endIndex;\n }\n };\n\n switch (event.key) {\n case 'Home':\n nextIndex = homeIndex;\n break;\n case 'End':\n nextIndex = endIndex;\n break;\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) {\n moveNext();\n } else {\n movePrev();\n }\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n moveNext();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) {\n movePrev();\n } else {\n moveNext();\n }\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n movePrev();\n }\n break;\n }\n\n const clampedIndex = nextIndex % triggerCount;\n triggerCollection[clampedIndex]!.ref.current?.focus();\n });\n\n return (\n <AccordionImplProvider\n scope={__scopeAccordion}\n disabled={disabled}\n direction={dir}\n orientation={orientation}\n >\n <Collection.Slot scope={__scopeAccordion}>\n <Primitive.div\n {...accordionProps}\n data-orientation={orientation}\n ref={composedRefs}\n onKeyDown={disabled ? undefined : handleKeyDown}\n />\n </Collection.Slot>\n </AccordionImplProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'AccordionItem';\n\ntype AccordionItemContextValue = { open?: boolean; disabled?: boolean; triggerId: string };\nconst [AccordionItemProvider, useAccordionItemContext] =\n createAccordionContext<AccordionItemContextValue>(ITEM_NAME);\n\ntype AccordionItemElement = React.ComponentRef<typeof CollapsiblePrimitive.Root>;\ntype CollapsibleProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root>;\ninterface AccordionItemProps\n extends Omit<CollapsibleProps, 'open' | 'defaultOpen' | 'onOpenChange'> {\n /**\n * Whether or not an accordion item is disabled from user interaction.\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * A string value for the accordion item. All items within an accordion should use a unique value.\n */\n value: string;\n}\n\n/**\n * `AccordionItem` contains all of the parts of a collapsible section inside of an `Accordion`.\n */\nconst AccordionItem = React.forwardRef<AccordionItemElement, AccordionItemProps>(\n (props: ScopedProps<AccordionItemProps>, forwardedRef) => {\n const { __scopeAccordion, value, ...accordionItemProps } = props;\n const accordionContext = useAccordionContext(ITEM_NAME, __scopeAccordion);\n const valueContext = useAccordionValueContext(ITEM_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n const triggerId = useId();\n const open = (value && valueContext.value.includes(value)) || false;\n const disabled = accordionContext.disabled || props.disabled;\n\n return (\n <AccordionItemProvider\n scope={__scopeAccordion}\n open={open}\n disabled={disabled}\n triggerId={triggerId}\n >\n <CollapsiblePrimitive.Root\n data-orientation={accordionContext.orientation}\n data-state={getState(open)}\n {...collapsibleScope}\n {...accordionItemProps}\n ref={forwardedRef}\n disabled={disabled}\n open={open}\n onOpenChange={(open) => {\n if (open) {\n valueContext.onItemOpen(value);\n } else {\n valueContext.onItemClose(value);\n }\n }}\n />\n </AccordionItemProvider>\n );\n }\n);\n\nAccordionItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst HEADER_NAME = 'AccordionHeader';\n\ntype AccordionHeaderElement = React.ComponentRef<typeof Primitive.h3>;\ntype PrimitiveHeading3Props = React.ComponentPropsWithoutRef<typeof Primitive.h3>;\ninterface AccordionHeaderProps extends PrimitiveHeading3Props {}\n\n/**\n * `AccordionHeader` contains the content for the parts of an `AccordionItem` that will be visible\n * whether or not its content is collapsed.\n */\nconst AccordionHeader = React.forwardRef<AccordionHeaderElement, AccordionHeaderProps>(\n (props: ScopedProps<AccordionHeaderProps>, forwardedRef) => {\n const { __scopeAccordion, ...headerProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(HEADER_NAME, __scopeAccordion);\n return (\n <Primitive.h3\n data-orientation={accordionContext.orientation}\n data-state={getState(itemContext.open)}\n data-disabled={itemContext.disabled ? '' : undefined}\n {...headerProps}\n ref={forwardedRef}\n />\n );\n }\n);\n\nAccordionHeader.displayName = HEADER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'AccordionTrigger';\n\ntype AccordionTriggerElement = React.ComponentRef<typeof CollapsiblePrimitive.Trigger>;\ntype CollapsibleTriggerProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>;\ninterface AccordionTriggerProps extends CollapsibleTriggerProps {}\n\n/**\n * `AccordionTrigger` is the trigger that toggles the collapsed state of an `AccordionItem`. It\n * should always be nested inside of an `AccordionHeader`.\n */\nconst AccordionTrigger = React.forwardRef<AccordionTriggerElement, AccordionTriggerProps>(\n (props: ScopedProps<AccordionTriggerProps>, forwardedRef) => {\n const { __scopeAccordion, ...triggerProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(TRIGGER_NAME, __scopeAccordion);\n const collapsibleContext = useAccordionCollapsibleContext(TRIGGER_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n return (\n <Collection.ItemSlot scope={__scopeAccordion}>\n <CollapsiblePrimitive.Trigger\n aria-disabled={(itemContext.open && !collapsibleContext.collapsible) || undefined}\n data-orientation={accordionContext.orientation}\n id={itemContext.triggerId}\n {...collapsibleScope}\n {...triggerProps}\n ref={forwardedRef}\n />\n </Collection.ItemSlot>\n );\n }\n);\n\nAccordionTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'AccordionContent';\n\ntype AccordionContentElement = React.ComponentRef<typeof CollapsiblePrimitive.Content>;\ntype CollapsibleContentProps = React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>;\ninterface AccordionContentProps extends CollapsibleContentProps {}\n\n/**\n * `AccordionContent` contains the collapsible content for an `AccordionItem`.\n */\nconst AccordionContent = React.forwardRef<AccordionContentElement, AccordionContentProps>(\n (props: ScopedProps<AccordionContentProps>, forwardedRef) => {\n const { __scopeAccordion, ...contentProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(CONTENT_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n return (\n <CollapsiblePrimitive.Content\n role=\"region\"\n aria-labelledby={itemContext.triggerId}\n data-orientation={accordionContext.orientation}\n {...collapsibleScope}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ['--radix-accordion-content-height' as any]: 'var(--radix-collapsible-content-height)',\n ['--radix-accordion-content-width' as any]: 'var(--radix-collapsible-content-width)',\n ...props.style,\n }}\n />\n );\n }\n);\n\nAccordionContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Accordion;\nconst Item = AccordionItem;\nconst Header = AccordionHeader;\nconst Trigger = AccordionTrigger;\nconst Content = AccordionContent;\n\nexport {\n createAccordionScope,\n //\n Accordion,\n AccordionItem,\n AccordionHeader,\n AccordionTrigger,\n AccordionContent,\n //\n Root,\n Item,\n Header,\n Trigger,\n Content,\n};\nexport type {\n AccordionSingleProps,\n AccordionMultipleProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n};\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport React from \"react\";\nimport { useGlassTokens, useColorTokens, useMotionTokens } from \"../../../theme/UiThemeProvider\";\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface GlassAccordionProps {\n children: React.ReactNode;\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n value?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n collapsible?: boolean;\n variant?: \"default\" | \"card\" | \"flush\";\n disableAnimations?: boolean;\n className?: string;\n}\n\nexport interface GlassAccordionItemProps {\n value: string;\n trigger: React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n disabled?: boolean;\n className?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Internal: AnimatedContent\n// ---------------------------------------------------------------------------\n\nfunction AnimatedContent({\n children,\n shouldAnimate,\n motionDuration,\n}: {\n children: React.ReactNode;\n shouldAnimate: boolean;\n motionDuration: number;\n}) {\n if (!shouldAnimate) {\n return <div>{children}</div>;\n }\n\n return (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: motionDuration, ease: \"easeOut\" }}\n >\n {children}\n </motion.div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// GlassAccordionItem\n// ---------------------------------------------------------------------------\n\nconst GlassAccordionItemContext = React.createContext<{\n variant: \"default\" | \"card\" | \"flush\";\n disableAnimations: boolean;\n}>({ variant: \"default\", disableAnimations: false });\n\nexport function GlassAccordionItem({\n value,\n trigger,\n icon,\n children,\n disabled = false,\n className,\n}: GlassAccordionItemProps) {\n const { variant, disableAnimations } = React.useContext(GlassAccordionItemContext);\n const glass = useGlassTokens();\n const colors = useColorTokens();\n const motionTokens = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const itemStyle: React.CSSProperties =\n variant === \"card\"\n ? {\n borderBottom: `1px solid ${glass.cardBorder}`,\n }\n : variant === \"flush\"\n ? {\n borderBottom: `1px solid ${glass.cardBorder}`,\n }\n : {\n background: glass.cardBg,\n border: `1px solid ${glass.cardBorder}`,\n borderRadius: 8,\n backdropFilter: \"blur(6px)\",\n WebkitBackdropFilter: \"blur(6px)\",\n boxShadow: \"inset 0 1px 0 rgba(255,255,255,0.02)\",\n };\n\n return (\n <AccordionPrimitive.Item\n value={value}\n disabled={disabled}\n className={cn(\n \"overflow-hidden transition-colors\",\n disabled && \"opacity-50 pointer-events-none\",\n className\n )}\n style={itemStyle}\n >\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n \"flex flex-1 items-center gap-3 py-3 px-4 text-sm font-medium transition-colors cursor-pointer\",\n \"rounded-[inherit]\",\n \"group\"\n )}\n style={{ color: colors.text.primary }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background = \"rgba(255,255,255,0.03)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.background = \"transparent\";\n }}\n >\n {icon && (\n <span\n className=\"flex-shrink-0\"\n style={{ color: colors.text.muted }}\n >\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left text-[var(--glia-color-text-primary,#CBD5E1)]\">{trigger}</span>\n {shouldAnimate ? (\n <motion.span\n className=\"flex-shrink-0 transition-colors duration-200 group-data-[state=open]:text-cyan-400\"\n style={{ color: colors.text.soft }}\n >\n <ChevronDown className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-180\" />\n </motion.span>\n ) : (\n <span\n className=\"transition-colors duration-200 group-data-[state=open]:text-cyan-400\"\n style={{ color: colors.text.soft }}\n >\n <ChevronDown className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-180\" />\n </span>\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n\n <AccordionPrimitive.Content\n className=\"overflow-hidden data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n >\n <div\n className=\"px-4 pb-3 text-sm text-[var(--glia-color-text-soft,#64748B)]\"\n style={{ color: colors.text.muted }}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n );\n}\n\n// ---------------------------------------------------------------------------\n// GlassAccordion\n// ---------------------------------------------------------------------------\n\nexport function GlassAccordion({\n children,\n type = \"single\",\n defaultValue,\n value,\n onValueChange,\n collapsible = true,\n variant = \"default\",\n disableAnimations = false,\n className,\n}: GlassAccordionProps) {\n const glass = useGlassTokens();\n\n const wrapperStyle: React.CSSProperties =\n variant === \"card\"\n ? {\n background: glass.cardBg,\n border: `1px solid ${glass.cardBorder}`,\n borderRadius: 12,\n overflow: \"hidden\",\n backdropFilter: \"blur(8px)\",\n WebkitBackdropFilter: \"blur(8px)\",\n boxShadow: \"inset 0 1px 0 rgba(255,255,255,0.02)\",\n }\n : {};\n\n // Build Radix props based on type\n const rootProps =\n type === \"multiple\"\n ? {\n type: \"multiple\" as const,\n defaultValue: (defaultValue as string[] | undefined) ?? [],\n value: value as string[] | undefined,\n onValueChange: onValueChange as ((value: string[]) => void) | undefined,\n }\n : {\n type: \"single\" as const,\n collapsible,\n defaultValue: (defaultValue as string | undefined) ?? \"\",\n value: value as string | undefined,\n onValueChange: onValueChange as ((value: string) => void) | undefined,\n };\n\n return (\n <GlassAccordionItemContext.Provider value={{ variant, disableAnimations }}>\n <div style={wrapperStyle}>\n <AccordionPrimitive.Root\n className={cn(\n variant === \"default\" && \"flex flex-col gap-2\",\n variant === \"flush\" && \"w-full\",\n className\n )}\n {...rootProps}\n >\n {children}\n </AccordionPrimitive.Root>\n </div>\n </GlassAccordionItemContext.Provider>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useColorTokens } from \"../../../theme/UiThemeProvider\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface StreamingTextProps {\n /** The text content to stream/display */\n text: string;\n /** Streaming mode. Default: \"character\" */\n mode?: \"character\" | \"word\" | \"instant\";\n /** Speed in ms per token (character or word). Default: 30 */\n speed?: number;\n /** Show blinking cursor at end of text. Default: true while streaming */\n showCursor?: boolean;\n /** Cursor character. Default: \"\\u258B\" (block cursor) */\n cursorChar?: string;\n /** Whether streaming is complete (hides cursor, shows full text). Default: false */\n isComplete?: boolean;\n /** Called when all text has been revealed */\n onComplete?: () => void;\n /** Disable animation (show all text instantly). Respects prefers-reduced-motion. */\n disableAnimations?: boolean;\n /** Additional className */\n className?: string;\n /** Render function for custom text wrapping (e.g., markdown rendering) */\n renderText?: (visibleText: string) => React.ReactNode;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const StreamingText = React.forwardRef<HTMLSpanElement, StreamingTextProps>(\n function StreamingText(\n {\n text,\n mode = \"character\",\n speed = 30,\n showCursor: showCursorProp,\n cursorChar = \"\\u258B\",\n isComplete = false,\n onComplete,\n disableAnimations = false,\n className,\n renderText,\n },\n ref\n ) {\n const colors = useColorTokens();\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion && !isComplete;\n\n const [visibleLength, setVisibleLength] = React.useState(0);\n const prevTextRef = React.useRef(text);\n const hasCompletedRef = React.useRef(false);\n\n // Tokenize text based on mode\n const totalTokens = React.useMemo(() => {\n if (mode === \"word\") {\n return text.split(/(\\s+)/).length;\n }\n return text.length;\n }, [text, mode]);\n\n // Reset if text completely changes (new message), but not if it just grew (streaming)\n React.useEffect(() => {\n if (text !== prevTextRef.current) {\n if (!text.startsWith(prevTextRef.current)) {\n // New text entirely -- reset\n setVisibleLength(0);\n hasCompletedRef.current = false;\n }\n prevTextRef.current = text;\n }\n }, [text]);\n\n // Animation interval\n React.useEffect(() => {\n if (!shouldAnimate || visibleLength >= totalTokens) return;\n\n const interval = setInterval(() => {\n setVisibleLength((prev) => {\n const next = prev + 1;\n if (next >= totalTokens) {\n clearInterval(interval);\n }\n return Math.min(next, totalTokens);\n });\n }, speed);\n\n return () => clearInterval(interval);\n }, [shouldAnimate, speed, totalTokens, visibleLength]);\n\n // Skip animation when it should not animate\n React.useEffect(() => {\n if (!shouldAnimate) {\n setVisibleLength(totalTokens);\n }\n }, [shouldAnimate, totalTokens]);\n\n // Completion callback\n React.useEffect(() => {\n if (visibleLength >= totalTokens && !hasCompletedRef.current && totalTokens > 0) {\n hasCompletedRef.current = true;\n onComplete?.();\n }\n }, [visibleLength, totalTokens, onComplete]);\n\n // Compute visible text\n const visibleText = React.useMemo(() => {\n if (mode === \"word\") {\n const tokens = text.split(/(\\s+)/);\n return tokens.slice(0, visibleLength).join(\"\");\n }\n return text.slice(0, visibleLength);\n }, [mode, visibleLength, text]);\n\n const isStreaming = visibleLength < totalTokens && shouldAnimate;\n const cursorVisible = showCursorProp ?? isStreaming;\n\n const content = renderText ? renderText(visibleText) : visibleText;\n\n return (\n <span ref={ref} className={cn(\"inline\", className)}>\n {content}\n {cursorVisible && (\n <span\n className=\"animate-pulse\"\n aria-hidden=\"true\"\n style={{\n display: \"inline-block\",\n marginLeft: \"1px\",\n color: colors.accent.primary,\n }}\n >\n {cursorChar}\n </span>\n )}\n </span>\n );\n }\n);\n\nStreamingText.displayName = \"StreamingText\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport { useGlassTokens, useColorTokens } from \"../../../theme/UiThemeProvider\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface CodeBlockProps {\n /** The code string to display */\n code: string;\n /** Programming language for syntax highlighting. Default: \"text\" */\n language?: string;\n /** Title/filename to show in header. If set, shows a header bar. */\n title?: string;\n /** Show line numbers. Default: false */\n showLineNumbers?: boolean;\n /** Show copy-to-clipboard button. Default: true */\n showCopyButton?: boolean;\n /** Highlight specific line numbers (1-indexed) */\n highlightLines?: number[];\n /** Maximum height before scrolling */\n maxHeight?: number | string;\n /** Whether to wrap long lines. Default: false */\n wordWrap?: boolean;\n /** Disable animations */\n disableAnimations?: boolean;\n /** Additional className */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// ICONS (inline SVG, 16x16)\n// ============================================================================\n\nconst CopyIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\">\n <rect x=\"5\" y=\"5\" width=\"9\" height=\"9\" rx=\"1.5\" />\n <path d=\"M5 11H3.5A1.5 1.5 0 012 9.5V3.5A1.5 1.5 0 013.5 2h6A1.5 1.5 0 0111 3.5V5\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M3 8l3.5 3.5L13 5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// ============================================================================\n// SHIKI HOOK\n// ============================================================================\n\nfunction useHighlightedCode(code: string, language: string) {\n const [html, setHtml] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n let cancelled = false;\n (async () => {\n try {\n const shiki = await import(\"shiki\");\n const result = await shiki.codeToHtml(code, {\n lang: language,\n theme: \"github-dark\",\n });\n if (!cancelled) setHtml(result);\n } catch {\n // shiki not available or language not supported\n }\n })();\n return () => { cancelled = true; };\n }, [code, language]);\n\n return html;\n}\n\n// ============================================================================\n// LINE ROW (shared between fallback and shiki overlay)\n// ============================================================================\n\ntype ColorTokens = ReturnType<typeof useColorTokens>;\n\nfunction LineGutter({ lineNum, colorTokens }: { lineNum: number; colorTokens: ColorTokens }) {\n return (\n <span\n className=\"inline-block text-right select-none shrink-0 pr-4 pl-4\"\n style={{\n width: \"3.5rem\",\n color: colorTokens.text.soft,\n fontSize: 12,\n fontFamily: \"monospace\",\n borderRight: `1px solid ${colorTokens.text.soft}22`,\n }}\n >\n {lineNum}\n </span>\n );\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const CodeBlock = React.forwardRef<HTMLDivElement, CodeBlockProps>(\n function CodeBlock(\n {\n code,\n language = \"text\",\n title,\n showLineNumbers = false,\n showCopyButton = true,\n highlightLines,\n maxHeight,\n wordWrap = false,\n className,\n style,\n },\n ref\n ) {\n const glassTokens = useGlassTokens();\n const colorTokens = useColorTokens();\n const [copied, setCopied] = React.useState(false);\n\n const highlightedHtml = useHighlightedCode(code, language);\n const lines = code.split(\"\\n\");\n const highlightSet = React.useMemo(() => new Set(highlightLines), [highlightLines]);\n\n const handleCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch { /* clipboard API unavailable */ }\n }, [code]);\n\n const showHeader = title || showCopyButton;\n const wrapCls = wordWrap ? \"[&_pre]:whitespace-pre-wrap [&_pre]:break-words\" : \"\";\n const maxHPx = maxHeight != null\n ? typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight\n : undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\"relative rounded-lg overflow-hidden\", className)}\n style={{\n background: glassTokens.cardBg,\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: glassTokens.cardBorder,\n ...style,\n }}\n >\n {/* Header */}\n {showHeader && (\n <div\n className=\"flex items-center justify-between px-4 py-2 border-b\"\n style={{ background: glassTokens.headerGradient, borderColor: glassTokens.cardBorder }}\n >\n <span\n className=\"text-xs font-mono truncate\"\n style={{ color: title ? colorTokens.text.muted : \"transparent\" }}\n >\n {title || \"\\u00A0\"}\n </span>\n {showCopyButton && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"flex items-center gap-1.5 text-xs font-mono transition-colors duration-150 ml-4 shrink-0\"\n style={{ color: copied ? colorTokens.accent.primary : colorTokens.text.soft }}\n aria-label={copied ? \"Copied\" : \"Copy code\"}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n <span>{copied ? \"Copied\" : \"Copy\"}</span>\n </button>\n )}\n </div>\n )}\n\n {/* Code area */}\n <div style={{ maxHeight: maxHPx, overflow: \"auto\" }}>\n {highlightedHtml && !showLineNumbers && highlightSet.size === 0 ? (\n <div\n className={cn(\"p-4 text-[13px]\", wrapCls)}\n style={{ overflowX: wordWrap ? undefined : \"auto\" }}\n dangerouslySetInnerHTML={{ __html: highlightedHtml }}\n />\n ) : highlightedHtml ? (\n <div className=\"relative\">\n <div\n className={cn(\"p-4 text-[13px]\", showLineNumbers && \"pl-[4.5rem]\", wrapCls)}\n dangerouslySetInnerHTML={{ __html: highlightedHtml }}\n />\n <ShikiLineOverlay\n lines={lines}\n showLineNumbers={showLineNumbers}\n highlightSet={highlightSet}\n colorTokens={colorTokens}\n />\n </div>\n ) : (\n <FallbackRenderer\n code={code}\n lines={lines}\n showLineNumbers={showLineNumbers}\n highlightSet={highlightSet}\n wordWrap={wordWrap}\n colorTokens={colorTokens}\n />\n )}\n </div>\n\n {/* Language badge */}\n {language && language !== \"text\" && (\n <span\n className=\"absolute bottom-2 right-3 text-[10px] font-mono uppercase tracking-wider select-none pointer-events-none\"\n style={{ color: colorTokens.text.soft }}\n >\n {language}\n </span>\n )}\n </div>\n );\n }\n);\n\nCodeBlock.displayName = \"CodeBlock\";\n\n// ============================================================================\n// SHIKI LINE OVERLAY (line numbers + highlights over shiki output)\n// ============================================================================\n\nfunction ShikiLineOverlay({\n lines,\n showLineNumbers,\n highlightSet,\n colorTokens,\n}: {\n lines: string[];\n showLineNumbers: boolean;\n highlightSet: Set<number | undefined>;\n colorTokens: ColorTokens;\n}) {\n return (\n <div className=\"absolute inset-0 pointer-events-none\" style={{ paddingTop: 16 }}>\n {lines.map((_, i) => {\n const n = i + 1;\n return (\n <div\n key={i}\n className=\"flex items-center\"\n style={{\n height: 20,\n background: highlightSet.has(n) ? `${colorTokens.accent.primary}14` : undefined,\n }}\n >\n {showLineNumbers && (\n <span\n className=\"inline-block text-right select-none shrink-0 pr-3 pl-2\"\n style={{ width: \"3.5rem\", color: colorTokens.text.soft, fontSize: 12, fontFamily: \"monospace\" }}\n >\n {n}\n </span>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ============================================================================\n// FALLBACK RENDERER (plain text, no shiki)\n// ============================================================================\n\nfunction FallbackRenderer({\n code, lines, showLineNumbers, highlightSet, wordWrap, colorTokens,\n}: {\n code: string;\n lines: string[];\n showLineNumbers: boolean;\n highlightSet: Set<number | undefined>;\n wordWrap: boolean;\n colorTokens: ColorTokens;\n}) {\n const preStyle: React.CSSProperties = {\n overflowX: wordWrap ? undefined : \"auto\",\n whiteSpace: wordWrap ? \"pre-wrap\" : \"pre\",\n wordBreak: wordWrap ? \"break-all\" : undefined,\n };\n\n if (!showLineNumbers && highlightSet.size === 0) {\n return (\n <pre className=\"p-4 m-0\" style={preStyle}>\n <code className=\"text-[13px] font-mono\" style={{ color: colorTokens.text.primary }}>\n {code}\n </code>\n </pre>\n );\n }\n\n return (\n <pre className=\"p-0 m-0\" style={preStyle}>\n <code className=\"text-[13px] font-mono block\">\n {lines.map((line, i) => {\n const n = i + 1;\n return (\n <div\n key={i}\n className=\"flex\"\n style={{ background: highlightSet.has(n) ? `${colorTokens.accent.primary}14` : undefined }}\n >\n {showLineNumbers && <LineGutter lineNum={n} colorTokens={colorTokens} />}\n <span className=\"flex-1 px-4\" style={{ color: colorTokens.text.primary }}>\n {line || \"\\n\"}\n </span>\n </div>\n );\n })}\n </code>\n </pre>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport * as React from \"react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface HUDLoaderProps {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n label?: string;\n progress?: number;\n variant?: \"default\" | \"minimal\" | \"elaborate\";\n className?: string;\n}\n\n// ============================================================================\n// SIZE MAP\n// ============================================================================\n\nconst sizeMap: Record<NonNullable<HUDLoaderProps[\"size\"]>, number> = {\n sm: 24,\n md: 48,\n lg: 80,\n xl: 120,\n};\n\n// ============================================================================\n// KEYFRAMES (injected once)\n// ============================================================================\n\nconst STYLE_ID = \"hud-loader-keyframes\";\n\nfunction ensureKeyframes() {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n@keyframes hud-spin-cw { to { transform: rotate(360deg); } }\n@keyframes hud-spin-ccw { to { transform: rotate(-360deg); } }\n@keyframes hud-pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }\n`;\n document.head.appendChild(style);\n}\n\n// ============================================================================\n// HUD LOADER\n// ============================================================================\n\nexport function HUDLoader({\n size = \"md\",\n label,\n progress,\n variant = \"default\",\n className,\n}: HUDLoaderProps) {\n const px = sizeMap[size];\n const reducedMotion = prefersReducedMotion();\n const filterId = React.useId();\n\n React.useEffect(() => {\n ensureKeyframes();\n }, []);\n\n // Ring geometry\n const center = px / 2;\n const outerR = px * 0.45;\n const middleR = px * 0.33;\n const innerR = px * 0.2;\n const strokeW = Math.max(2, px * 0.06);\n\n // Arc lengths via stroke-dasharray\n const outerCirc = 2 * Math.PI * outerR;\n const outerArc = outerCirc * (270 / 360);\n\n const middleCirc = 2 * Math.PI * middleR;\n const middleArc = middleCirc * (180 / 360);\n\n const innerCirc = 2 * Math.PI * innerR;\n const innerArc = innerCirc * (120 / 360);\n\n const showProgress = progress != null;\n const showLabel = label != null;\n const isElaborate = variant === \"elaborate\";\n const isMinimal = variant === \"minimal\";\n\n // Font size based on ring size\n const fontSize = Math.max(8, px * 0.18);\n const labelFontSize = Math.max(8, Math.min(10, px * 0.1));\n\n return (\n <div\n className={cn(\"inline-flex flex-col items-center justify-center gap-1.5\", className)}\n role=\"status\"\n aria-label={label ?? (showProgress ? `Loading ${Math.round(progress! * 100)}%` : \"Loading\")}\n >\n <svg\n width={px}\n height={px}\n viewBox={`0 0 ${px} ${px}`}\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <defs>\n <filter id={`glow-${filterId}`}>\n <feGaussianBlur stdDeviation={Math.max(1, px * 0.03)} result=\"blur\" />\n <feMerge>\n <feMergeNode in=\"blur\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n\n {/* Outer ring: cyan, clockwise */}\n <circle\n cx={center}\n cy={center}\n r={outerR}\n stroke=\"#22D3EE\"\n strokeWidth={strokeW}\n strokeLinecap=\"round\"\n strokeDasharray={`${outerArc} ${outerCirc - outerArc}`}\n filter={`url(#glow-${filterId})`}\n style={\n reducedMotion\n ? {}\n : {\n transformOrigin: `${center}px ${center}px`,\n animation: \"hud-spin-cw 2s linear infinite\",\n }\n }\n />\n\n {/* Middle ring: magenta, counter-clockwise */}\n {!isMinimal && (\n <circle\n cx={center}\n cy={center}\n r={middleR}\n stroke=\"#F43F5E\"\n strokeWidth={strokeW * 0.8}\n strokeLinecap=\"round\"\n strokeDasharray={`${middleArc} ${middleCirc - middleArc}`}\n filter={`url(#glow-${filterId})`}\n style={\n reducedMotion\n ? {}\n : {\n transformOrigin: `${center}px ${center}px`,\n animation: \"hud-spin-ccw 3s linear infinite\",\n }\n }\n />\n )}\n\n {/* Elaborate: inner emerald ring */}\n {isElaborate && (\n <circle\n cx={center}\n cy={center}\n r={innerR}\n stroke=\"#10B981\"\n strokeWidth={strokeW * 0.6}\n strokeLinecap=\"round\"\n strokeDasharray={`${innerArc} ${innerCirc - innerArc}`}\n filter={`url(#glow-${filterId})`}\n style={\n reducedMotion\n ? {}\n : {\n transformOrigin: `${center}px ${center}px`,\n animation: \"hud-spin-cw 4s linear infinite\",\n }\n }\n />\n )}\n\n {/* Center content: progress text or pulsing dot */}\n {showProgress ? (\n <text\n x={center}\n y={center}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fill=\"#22D3EE\"\n fontFamily=\"monospace\"\n fontSize={fontSize}\n fontWeight=\"bold\"\n >\n {Math.round(progress! * 100)}\n </text>\n ) : (\n !isMinimal && (\n <circle\n cx={center}\n cy={center}\n r={Math.max(1.5, px * 0.03)}\n fill=\"#22D3EE\"\n style={\n reducedMotion\n ? {}\n : { animation: \"hud-pulse 1.5s ease-in-out infinite\" }\n }\n />\n )\n )}\n </svg>\n\n {/* Label */}\n {showLabel && (\n <span\n className=\"text-white/60\"\n style={{\n fontFamily: \"monospace\",\n fontSize: labelFontSize,\n textTransform: \"uppercase\",\n letterSpacing: \"0.12em\",\n }}\n aria-hidden=\"true\"\n >\n {label}\n </span>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 56,\n xl: 80,\n} as const;\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full\",\n {\n variants: {\n size: {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-14 w-14\",\n xl: \"h-20 w-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst fallbackFontSize = {\n xs: \"text-[8px]\",\n sm: \"text-[10px]\",\n md: \"text-xs\",\n lg: \"text-sm\",\n xl: \"text-base\",\n} as const;\n\n// ============================================================================\n// STATUS DOT\n// ============================================================================\n\nconst statusColors = {\n online: \"bg-emerald-400\",\n offline: \"bg-neutral-600\",\n busy: \"bg-red-400\",\n away: \"bg-yellow-400\",\n} as const;\n\nfunction StatusDot({\n status,\n size,\n}: {\n status: \"online\" | \"offline\" | \"busy\" | \"away\";\n size: keyof typeof sizeMap;\n}) {\n const reducedMotion = prefersReducedMotion();\n const dotSize = size === \"xs\" || size === \"sm\" ? \"h-2 w-2\" : \"h-3 w-3\";\n const offset = size === \"xs\" || size === \"sm\" ? \"-right-0 -bottom-0\" : \"-right-0.5 -bottom-0.5\";\n\n return (\n <span\n className={cn(\n \"absolute rounded-full border-2 border-[rgba(2,4,10,0.95)]\",\n dotSize,\n offset,\n statusColors[status]\n )}\n style={\n status === \"online\" && !reducedMotion\n ? {\n boxShadow: \"0 0 6px rgba(52,211,153,0.7), 0 0 12px rgba(52,211,153,0.4)\",\n animation: \"glass-avatar-breathe 2s ease-in-out infinite\",\n }\n : undefined\n }\n />\n );\n}\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport type AvatarSize = keyof typeof sizeMap;\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nexport interface GlassAvatarProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\">,\n VariantProps<typeof avatarVariants> {\n /** Image source URL */\n src?: string;\n /** Alt text for image */\n alt?: string;\n /** Fallback text (e.g. initials) */\n fallback?: string;\n /** Online status indicator */\n status?: AvatarStatus;\n /** Show neon ring border */\n showRing?: boolean;\n /** Ring glow color */\n ringColor?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const GlassAvatar = React.forwardRef<HTMLSpanElement, GlassAvatarProps>(\n function GlassAvatar(\n {\n className,\n size = \"md\",\n src,\n alt = \"\",\n fallback,\n status,\n showRing = false,\n ringColor,\n style,\n ...props\n },\n ref\n ) {\n const effectiveSize = size ?? \"md\";\n const ringStyle = showRing\n ? {\n boxShadow: `0 0 0 2px rgba(2,4,10,0.95), 0 0 0 3px ${ringColor ?? \"hsl(var(--cyan-neon))\"}, 0 0 12px ${ringColor ?? \"hsl(var(--cyan-neon))\"}40`,\n }\n : undefined;\n\n return (\n <span\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n style={style}\n {...props}\n >\n <AvatarPrimitive.Root\n className={cn(avatarVariants({ size }))}\n style={{\n ...ringStyle,\n background: \"rgba(2,4,10,0.85)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n }}\n >\n <AvatarPrimitive.Image\n src={src}\n alt={alt}\n className=\"h-full w-full rounded-full object-cover\"\n />\n <AvatarPrimitive.Fallback\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full font-mono uppercase tracking-[0.12em]\",\n fallbackFontSize[effectiveSize],\n \"bg-[rgba(2,4,10,0.85)] text-[hsl(var(--cyan-neon))]\"\n )}\n delayMs={src ? 600 : 0}\n >\n {fallback ?? alt?.charAt(0)?.toUpperCase() ?? \"?\"}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n {status && <StatusDot status={status} size={effectiveSize} />}\n <style>{`\n @keyframes glass-avatar-breathe {\n 0%, 100% { box-shadow: 0 0 6px rgba(52,211,153,0.7), 0 0 12px rgba(52,211,153,0.4); }\n 50% { box-shadow: 0 0 10px rgba(52,211,153,0.9), 0 0 20px rgba(52,211,153,0.6); }\n }\n `}</style>\n </span>\n );\n }\n);\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst glassBadgeVariants = cva(\n \"inline-flex items-center gap-1.5 rounded-full font-mono uppercase tracking-[0.12em] border transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"bg-cyan-neon/10 text-cyan-neon border-cyan-neon/30\",\n success:\n \"bg-emerald-neon/10 text-emerald-neon border-emerald-neon/30\",\n warning:\n \"bg-yellow-500/10 text-yellow-400 border-yellow-500/30\",\n error:\n \"bg-red-500/10 text-red-400 border-red-500/30\",\n info:\n \"bg-violet-500/10 text-violet-400 border-violet-500/30\",\n },\n size: {\n sm: \"px-2 py-0.5 text-[9px]\",\n md: \"px-2.5 py-1 text-[10px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassBadgeProps\n extends Omit<\n React.HTMLAttributes<HTMLSpanElement>,\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof glassBadgeVariants> {\n /** Badge content */\n children: React.ReactNode;\n /** Show pulse animation */\n pulse?: boolean;\n /** Leading icon */\n icon?: React.ReactNode;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function GlassBadge({\n className,\n variant,\n size,\n children,\n pulse = false,\n icon,\n ...props\n}: GlassBadgeProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldPulse = pulse && !reducedMotion;\n\n return (\n <motion.span\n className={cn(glassBadgeVariants({ variant, size }), className)}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{\n opacity: 1,\n scale: 1,\n ...(shouldPulse ? { boxShadow: [\"0 0 0 0 currentColor\", \"0 0 0 4px transparent\"] } : {}),\n }}\n transition={{\n duration: 0.2,\n ...(shouldPulse\n ? {\n boxShadow: {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeOut\",\n },\n }\n : {}),\n }}\n {...props}\n >\n {icon && <span className=\"flex-shrink-0 [&>svg]:h-3 [&>svg]:w-3\">{icon}</span>}\n {children}\n {shouldPulse && (\n <span className=\"relative flex h-1.5 w-1.5\">\n <span className=\"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-75\" />\n <span className=\"relative inline-flex h-1.5 w-1.5 rounded-full bg-current\" />\n </span>\n )}\n </motion.span>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst glassTextareaVariants = cva(\n [\n \"flex w-full rounded-md border bg-[rgba(2,4,10,0.85)] backdrop-blur-xl px-3 py-2\",\n \"text-sm font-mono text-foreground placeholder:text-muted-foreground/60\",\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\",\n \"ring-offset-background transition-all duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"resize-none\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default:\n \"border-white/[0.06] focus-visible:border-cyan-neon focus-visible:ring-cyan-neon/30 focus-visible:shadow-[0_0_20px_hsl(var(--cyan-neon)/0.15)]\",\n error:\n \"border-destructive/60 focus-visible:border-destructive focus-visible:ring-destructive/30 focus-visible:shadow-[0_0_20px_hsl(var(--destructive)/0.15)]\",\n success:\n \"border-emerald-neon/40 focus-visible:border-emerald-neon focus-visible:ring-emerald-neon/30 focus-visible:shadow-[0_0_20px_hsl(var(--emerald-neon)/0.15)]\",\n },\n size: {\n default: \"min-h-[80px] px-3 py-2 text-sm\",\n sm: \"min-h-[60px] px-3 py-1.5 text-xs\",\n lg: \"min-h-[120px] px-4 py-3 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassTextareaProps\n extends Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof glassTextareaVariants> {\n /** Textarea label */\n label?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Enable auto-resize based on content */\n autoResize?: boolean;\n /** Show character count */\n showCount?: boolean;\n /** Disable glow animations */\n disableAnimations?: boolean;\n /** Container class name */\n containerClassName?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const GlassTextarea = React.forwardRef<\n HTMLTextAreaElement,\n GlassTextareaProps\n>(function GlassTextarea(\n {\n className,\n containerClassName,\n variant,\n size,\n label,\n description,\n error,\n autoResize = false,\n showCount = false,\n maxLength,\n disableAnimations = false,\n id,\n onChange,\n value,\n defaultValue,\n ...props\n },\n ref\n) {\n const internalRef = React.useRef<HTMLTextAreaElement | null>(null);\n const internalId = React.useId();\n const finalId = id || internalId;\n const descriptionId = `${finalId}-description`;\n const errorId = `${finalId}-error`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const finalVariant = error ? \"error\" : variant;\n\n const [charCount, setCharCount] = React.useState(() => {\n const initial = (value ?? defaultValue ?? \"\") as string;\n return initial.length;\n });\n\n const handleAutoResize = React.useCallback((el: HTMLTextAreaElement) => {\n el.style.height = \"auto\";\n el.style.height = `${el.scrollHeight}px`;\n }, []);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (showCount || maxLength) {\n setCharCount(e.target.value.length);\n }\n if (autoResize) {\n handleAutoResize(e.target);\n }\n onChange?.(e);\n },\n [onChange, autoResize, showCount, maxLength, handleAutoResize]\n );\n\n // Sync charCount with controlled value\n React.useEffect(() => {\n if (value !== undefined) {\n setCharCount(String(value).length);\n }\n }, [value]);\n\n // Auto-resize on mount if content exists\n React.useEffect(() => {\n if (autoResize && internalRef.current) {\n handleAutoResize(internalRef.current);\n }\n }, [autoResize, handleAutoResize]);\n\n const setRefs = React.useCallback(\n (el: HTMLTextAreaElement | null) => {\n internalRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = el;\n }\n },\n [ref]\n );\n\n return (\n <div className={cn(\"space-y-2\", containerClassName)}>\n {/* Label */}\n {label && (\n <motion.label\n htmlFor={finalId}\n className=\"text-xs font-medium uppercase tracking-widest text-muted-foreground font-mono\"\n initial={shouldAnimate ? { opacity: 0, y: -5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n </motion.label>\n )}\n\n {/* Textarea */}\n <motion.textarea\n ref={setRefs}\n id={finalId}\n className={cn(\n glassTextareaVariants({ variant: finalVariant, size }),\n autoResize && \"overflow-hidden\",\n className\n )}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n onChange={handleChange}\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-invalid={error ? \"true\" : undefined}\n initial={shouldAnimate ? { opacity: 0, scale: 0.98 } : {}}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.2, delay: 0.1 }}\n whileFocus={\n shouldAnimate\n ? { scale: 1.005, transition: { duration: 0.1 } }\n : {}\n }\n {...props}\n />\n\n {/* Footer row: description/error + count */}\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1\">\n {/* Description */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-xs text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n\n {/* Character count */}\n {showCount && (\n <motion.span\n className={cn(\n \"text-xs tabular-nums font-mono\",\n maxLength && charCount >= maxLength\n ? \"text-destructive\"\n : \"text-muted-foreground/60\"\n )}\n initial={shouldAnimate ? { opacity: 0 } : {}}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2, delay: 0.3 }}\n >\n {charCount}\n {maxLength ? `/${maxLength}` : \"\"}\n </motion.span>\n )}\n </div>\n </div>\n );\n});\n\nGlassTextarea.displayName = \"GlassTextarea\";\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\nimport React, { createContext, useContext, useId } from \"react\";\n\ninterface FormFieldContextValue {\n fieldId: string;\n error?: string;\n disabled?: boolean;\n descriptionId: string;\n errorId: string;\n}\n\nexport const FormFieldContext = createContext<FormFieldContextValue | null>(null);\n\nexport function useFormField() {\n const ctx = useContext(FormFieldContext);\n if (!ctx) {\n throw new Error(\"useFormField must be used within a <FormField>\");\n }\n return ctx;\n}\n\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Field label text */\n label?: string;\n /** Explicit htmlFor override (defaults to auto-generated ID) */\n htmlFor?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Show required asterisk */\n required?: boolean;\n /** Disable the field */\n disabled?: boolean;\n /** Disable entrance animations */\n disableAnimations?: boolean;\n /** Field size */\n size?: \"default\" | \"sm\" | \"lg\";\n /** Field content (control slot) */\n children: React.ReactNode;\n}\n\nconst sizeSpacing: Record<NonNullable<FormFieldProps[\"size\"]>, string> = {\n sm: \"space-y-1\",\n default: \"space-y-1.5\",\n lg: \"space-y-2\",\n};\n\nexport function FormField({\n label,\n htmlFor,\n description,\n error,\n required = false,\n disabled = false,\n disableAnimations = false,\n size = \"default\",\n children,\n className,\n ...props\n}: FormFieldProps) {\n const autoId = useId();\n const fieldId = htmlFor || autoId;\n const descriptionId = `${fieldId}-description`;\n const errorId = `${fieldId}-error`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n return (\n <FormFieldContext.Provider\n value={{ fieldId, error, disabled, descriptionId, errorId }}\n >\n <div\n className={cn(sizeSpacing[size], disabled && \"opacity-60\", className)}\n {...props}\n >\n {/* Label */}\n {label && (\n <motion.label\n htmlFor={fieldId}\n className={cn(\n \"text-sm font-medium leading-none\",\n disabled && \"cursor-not-allowed\"\n )}\n initial={shouldAnimate ? { opacity: 0, y: -4 } : undefined}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n {required && (\n <span\n className=\"ml-0.5 text-destructive\"\n aria-hidden=\"true\"\n >\n *\n </span>\n )}\n </motion.label>\n )}\n\n {/* Control slot */}\n {children}\n\n {/* Description (hidden when error is shown) */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-sm text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 4 } : undefined}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.1 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n role=\"alert\"\n className=\"text-sm text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 4 } : undefined}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.1 }}\n >\n <AlertCircle className=\"h-3 w-3 shrink-0\" />\n {error}\n </motion.p>\n )}\n </div>\n </FormFieldContext.Provider>\n );\n}\n","\"use client\";\n\nimport { cn, formatNumber, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, useMotionValue, useTransform, animate } from \"framer-motion\";\nimport { Minus, TrendingDown, TrendingUp } from \"lucide-react\";\nimport React, { useEffect, useRef } from \"react\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst glassDataCardVariants = cva(\n \"relative flex flex-col justify-between rounded-xl border backdrop-blur-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-card/30 border-border/30\",\n success: \"bg-emerald-400/5 border-emerald-400/20\",\n warning: \"bg-yellow-500/5 border-yellow-500/20\",\n danger: \"bg-destructive/5 border-destructive/20\",\n accent: \"bg-cyan-400/5 border-cyan-400/20\",\n },\n size: {\n compact: \"p-3 min-h-[100px]\",\n default: \"p-4 min-h-[130px]\",\n expanded: \"p-6 min-h-[160px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// GLOW COLOR MAP\n// ============================================================================\n\nconst glowColorMap: Record<string, string> = {\n default: \"rgba(34,211,238,0.15)\",\n success: \"rgba(52,211,153,0.15)\",\n warning: \"rgba(234,179,8,0.15)\",\n danger: \"rgba(239,68,68,0.15)\",\n accent: \"rgba(34,211,238,0.15)\",\n};\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassDataCardProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n | \"children\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof glassDataCardVariants> {\n /** Card label */\n label: string;\n /** Display value (e.g. \"$45.2K\") */\n value: string;\n /** Numeric value for counting animation */\n numericValue?: number;\n /** Value prefix for animated counting */\n prefix?: string;\n /** Value suffix for animated counting */\n suffix?: string;\n /** Trend percentage (positive = up, negative = down, 0 = neutral) */\n trend?: number;\n /** Sparkline data points */\n sparklineData?: number[];\n /** Loading state */\n loading?: boolean;\n /** Disable animations */\n disableAnimations?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\n// ============================================================================\n// SPARKLINE\n// ============================================================================\n\nfunction Sparkline({ data, variant }: { data: number[]; variant?: string | null }) {\n if (data.length < 2) return null;\n\n const width = 80;\n const height = 28;\n const max = Math.max(...data);\n const min = Math.min(...data);\n const range = max - min || 1;\n\n const points = data.map((point, index) => {\n const x = (index / (data.length - 1)) * width;\n const y = height - ((point - min) / range) * (height - 4) - 2;\n return `${x},${y}`;\n });\n\n const path = `M ${points.join(\" L \")}`;\n const strokeColor =\n variant === \"success\"\n ? \"text-emerald-neon/60\"\n : variant === \"danger\"\n ? \"text-destructive/60\"\n : \"text-cyan-neon/60\";\n\n const lastY = height - ((data[data.length - 1] - min) / range) * (height - 4) - 2;\n\n return (\n <svg width={width} height={height} className={strokeColor}>\n <path\n d={path}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx={width} cy={lastY} r=\"2\" fill=\"currentColor\" />\n </svg>\n );\n}\n\n// ============================================================================\n// ANIMATED VALUE\n// ============================================================================\n\nfunction AnimatedValue({\n numericValue,\n prefix,\n suffix,\n displayValue,\n shouldAnimate,\n}: {\n numericValue?: number;\n prefix?: string;\n suffix?: string;\n displayValue: string;\n shouldAnimate: boolean;\n}) {\n const motionVal = useMotionValue(0);\n const rounded = useTransform(motionVal, (v) => {\n if (numericValue === undefined) return displayValue;\n return `${prefix ?? \"\"}${formatNumber(Math.round(v))}${suffix ?? \"\"}`;\n });\n const ref = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (!shouldAnimate || numericValue === undefined) return;\n const controls = animate(motionVal, numericValue, {\n duration: 1.2,\n ease: [0.22, 1, 0.36, 1],\n });\n return () => controls.stop();\n }, [numericValue, shouldAnimate, motionVal]);\n\n if (!shouldAnimate || numericValue === undefined) {\n return <span>{displayValue}</span>;\n }\n\n return <motion.span ref={ref}>{rounded}</motion.span>;\n}\n\n// ============================================================================\n// GLASS DATA CARD\n// ============================================================================\n\nexport function GlassDataCard({\n className,\n variant,\n size,\n label,\n value,\n numericValue,\n prefix,\n suffix,\n trend,\n sparklineData,\n loading = false,\n disableAnimations = false,\n onClick,\n ...props\n}: GlassDataCardProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const trendDirection =\n trend !== undefined\n ? trend > 0\n ? \"up\"\n : trend < 0\n ? \"down\"\n : \"neutral\"\n : null;\n\n const TrendIcon =\n trendDirection === \"up\"\n ? TrendingUp\n : trendDirection === \"down\"\n ? TrendingDown\n : Minus;\n\n const trendColor =\n trendDirection === \"up\"\n ? \"text-emerald-neon\"\n : trendDirection === \"down\"\n ? \"text-destructive\"\n : \"text-cyan-neon\";\n\n const variantKey = variant ?? \"default\";\n\n return (\n <motion.div\n className={cn(\n glassDataCardVariants({ variant, size }),\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\",\n onClick && \"cursor-pointer\",\n className\n )}\n onClick={onClick}\n initial={shouldAnimate ? { opacity: 0, y: 20 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n whileHover={\n shouldAnimate\n ? {\n boxShadow: `0 0 20px ${glowColorMap[variantKey]}, inset 0 1px 0 rgba(255,255,255,0.02)`,\n scale: onClick ? 1.02 : 1,\n transition: { duration: 0.2 },\n }\n : {}\n }\n {...props}\n >\n {/* Label */}\n <motion.span\n className=\"text-[10px] font-mono uppercase tracking-[0.12em] text-muted-foreground leading-none\"\n initial={shouldAnimate ? { opacity: 0, x: -10 } : {}}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3, delay: 0.1 }}\n >\n {label}\n </motion.span>\n\n {/* Value + Trend row */}\n <div className=\"flex items-end justify-between flex-1 mt-2\">\n <motion.div\n className=\"space-y-1\"\n initial={shouldAnimate ? { opacity: 0, y: 10 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: 0.2 }}\n >\n {loading ? (\n <div className=\"h-8 w-24 bg-muted/20 rounded animate-pulse\" />\n ) : (\n <div className=\"text-3xl font-bold text-foreground tabular-nums leading-none\">\n <AnimatedValue\n numericValue={numericValue}\n prefix={prefix}\n suffix={suffix}\n displayValue={value}\n shouldAnimate={shouldAnimate}\n />\n </div>\n )}\n </motion.div>\n\n {/* Trend indicator */}\n {trendDirection && !loading && (\n <motion.div\n className={cn(\"flex items-center gap-1 text-xs\", trendColor)}\n initial={shouldAnimate ? { opacity: 0, x: 10 } : {}}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3, delay: 0.3 }}\n >\n <TrendIcon className=\"h-3 w-3\" />\n <span className=\"font-medium tabular-nums\">\n {Math.abs(trend!).toFixed(1)}%\n </span>\n </motion.div>\n )}\n </div>\n\n {/* Sparkline */}\n {sparklineData && sparklineData.length > 1 && !loading && (\n <motion.div\n className=\"flex justify-end mt-2\"\n initial={shouldAnimate ? { opacity: 0, scaleX: 0 } : {}}\n animate={{ opacity: 1, scaleX: 1 }}\n transition={{ duration: 0.5, delay: 0.4 }}\n >\n <Sparkline data={sparklineData} variant={variant} />\n </motion.div>\n )}\n\n {/* Loading shimmer */}\n {loading && shouldAnimate && (\n <motion.div\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-foreground/5 to-transparent rounded-xl\"\n animate={{ x: [-100, 100] }}\n transition={{ duration: 1.5, repeat: Infinity, ease: \"easeInOut\" }}\n />\n )}\n </motion.div>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { Check } from \"lucide-react\";\nimport React from \"react\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst glassStepsVariants = cva(\"flex\", {\n variants: {\n layout: {\n horizontal: \"flex-row items-start\",\n vertical: \"flex-col items-start\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n },\n});\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassStep {\n /** Step label */\n label: string;\n /** Optional description */\n description?: string;\n /** Optional custom icon (React node) */\n icon?: React.ReactNode;\n}\n\nexport interface GlassStepsProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n | \"children\"\n | \"onDrag\"\n | \"onDragEnd\"\n | \"onDragEnter\"\n | \"onDragExit\"\n | \"onDragLeave\"\n | \"onDragOver\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onAnimationStart\"\n | \"onAnimationEnd\"\n | \"onAnimationIteration\"\n >,\n VariantProps<typeof glassStepsVariants> {\n /** Step definitions */\n steps: GlassStep[];\n /** Currently active step (0-indexed) */\n activeStep: number;\n /** Callback when a step is clicked */\n onStepClick?: (index: number) => void;\n /** Disable animations */\n disableAnimations?: boolean;\n}\n\n// ============================================================================\n// STEP INDICATOR\n// ============================================================================\n\nfunction StepIndicator({\n step,\n index,\n status,\n shouldAnimate,\n onClick,\n}: {\n step: GlassStep;\n index: number;\n status: \"completed\" | \"active\" | \"upcoming\";\n shouldAnimate: boolean;\n onClick?: () => void;\n}) {\n const isCompleted = status === \"completed\";\n const isActive = status === \"active\";\n\n return (\n <motion.button\n type=\"button\"\n className={cn(\n \"flex flex-col items-center gap-2 bg-transparent border-none outline-none\",\n onClick ? \"cursor-pointer\" : \"cursor-default\"\n )}\n onClick={onClick}\n initial={shouldAnimate ? { opacity: 0, y: 10 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: index * 0.1 }}\n aria-current={isActive ? \"step\" : undefined}\n >\n {/* Circle */}\n <div className=\"relative flex items-center justify-center\">\n {/* Pulsing ring for active step */}\n {isActive && shouldAnimate && (\n <motion.div\n className=\"absolute inset-0 rounded-full border-2 border-cyan-neon/40\"\n animate={{\n scale: [1, 1.4, 1],\n opacity: [0.6, 0, 0.6],\n }}\n transition={{\n duration: 2.5,\n repeat: Infinity,\n ease: \"easeInOut\",\n }}\n style={{ width: 36, height: 36, top: -2, left: -2 }}\n />\n )}\n\n <div\n className={cn(\n \"relative flex items-center justify-center w-8 h-8 rounded-full transition-all duration-200\",\n isCompleted &&\n \"bg-cyan-neon/20 border-2 border-cyan-neon shadow-[0_0_12px_rgba(34,211,238,0.3)]\",\n isActive &&\n \"bg-cyan-neon/10 border-2 border-cyan-neon\",\n !isCompleted &&\n !isActive &&\n \"bg-transparent border-2 border-white/[0.1]\"\n )}\n >\n {isCompleted ? (\n step.icon ?? (\n <Check className=\"h-4 w-4 text-cyan-neon\" />\n )\n ) : isActive ? (\n step.icon ?? (\n <span className=\"text-xs font-bold text-cyan-neon tabular-nums\">\n {index + 1}\n </span>\n )\n ) : (\n step.icon ?? (\n <span className=\"text-xs font-medium text-muted-foreground/50 tabular-nums\">\n {index + 1}\n </span>\n )\n )}\n </div>\n </div>\n\n {/* Label */}\n <span\n className={cn(\n \"text-[10px] font-mono uppercase tracking-[0.12em] leading-tight text-center max-w-[80px]\",\n isCompleted && \"text-cyan-neon/80\",\n isActive && \"text-foreground font-bold\",\n !isCompleted && !isActive && \"text-muted-foreground/50\"\n )}\n >\n {step.label}\n </span>\n\n {/* Description */}\n {step.description && (\n <span\n className={cn(\n \"text-[9px] text-center max-w-[80px] leading-tight\",\n isActive ? \"text-muted-foreground\" : \"text-muted-foreground/40\"\n )}\n >\n {step.description}\n </span>\n )}\n </motion.button>\n );\n}\n\n// ============================================================================\n// VERTICAL STEP INDICATOR\n// ============================================================================\n\nfunction VerticalStepIndicator({\n step,\n index,\n status,\n shouldAnimate,\n isLast,\n onClick,\n}: {\n step: GlassStep;\n index: number;\n status: \"completed\" | \"active\" | \"upcoming\";\n shouldAnimate: boolean;\n isLast: boolean;\n onClick?: () => void;\n}) {\n const isCompleted = status === \"completed\";\n const isActive = status === \"active\";\n\n return (\n <motion.div\n className=\"flex flex-row items-start gap-3\"\n initial={shouldAnimate ? { opacity: 0, x: -10 } : {}}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.3, delay: index * 0.1 }}\n >\n {/* Circle + connector column */}\n <div className=\"flex flex-col items-center\">\n {/* Circle */}\n <motion.button\n type=\"button\"\n className={cn(\n \"relative flex items-center justify-center bg-transparent border-none outline-none\",\n onClick ? \"cursor-pointer\" : \"cursor-default\"\n )}\n onClick={onClick}\n aria-current={isActive ? \"step\" : undefined}\n >\n {isActive && shouldAnimate && (\n <motion.div\n className=\"absolute rounded-full border-2 border-cyan-neon/40\"\n animate={{\n scale: [1, 1.4, 1],\n opacity: [0.6, 0, 0.6],\n }}\n transition={{\n duration: 2.5,\n repeat: Infinity,\n ease: \"easeInOut\",\n }}\n style={{ width: 36, height: 36, top: -2, left: -2 }}\n />\n )}\n <div\n className={cn(\n \"relative flex items-center justify-center w-8 h-8 rounded-full transition-all duration-200\",\n isCompleted &&\n \"bg-cyan-neon/20 border-2 border-cyan-neon shadow-[0_0_12px_rgba(34,211,238,0.3)]\",\n isActive && \"bg-cyan-neon/10 border-2 border-cyan-neon\",\n !isCompleted &&\n !isActive &&\n \"bg-transparent border-2 border-white/[0.1]\"\n )}\n >\n {isCompleted ? (\n step.icon ?? <Check className=\"h-4 w-4 text-cyan-neon\" />\n ) : isActive ? (\n step.icon ?? (\n <span className=\"text-xs font-bold text-cyan-neon tabular-nums\">\n {index + 1}\n </span>\n )\n ) : (\n step.icon ?? (\n <span className=\"text-xs font-medium text-muted-foreground/50 tabular-nums\">\n {index + 1}\n </span>\n )\n )}\n </div>\n </motion.button>\n\n {/* Vertical connector */}\n {!isLast && (\n <div\n className={cn(\n \"w-[2px] h-8 my-1 rounded-full\",\n isCompleted\n ? \"bg-gradient-to-b from-cyan-neon/60 to-cyan-neon/30\"\n : \"bg-white/[0.06]\"\n )}\n />\n )}\n </div>\n\n {/* Label + description */}\n <div className=\"flex flex-col gap-0.5 pt-1\">\n <span\n className={cn(\n \"text-[10px] font-mono uppercase tracking-[0.12em] leading-tight\",\n isCompleted && \"text-cyan-neon/80\",\n isActive && \"text-foreground font-bold\",\n !isCompleted && !isActive && \"text-muted-foreground/50\"\n )}\n >\n {step.label}\n </span>\n {step.description && (\n <span\n className={cn(\n \"text-[9px] leading-tight\",\n isActive ? \"text-muted-foreground\" : \"text-muted-foreground/40\"\n )}\n >\n {step.description}\n </span>\n )}\n </div>\n </motion.div>\n );\n}\n\n// ============================================================================\n// CONNECTING LINE (horizontal)\n// ============================================================================\n\nfunction ConnectingLine({\n completed,\n shouldAnimate,\n index,\n}: {\n completed: boolean;\n shouldAnimate: boolean;\n index: number;\n}) {\n return (\n <motion.div\n className=\"flex-1 flex items-center mx-1 mt-4\"\n initial={shouldAnimate ? { opacity: 0, scaleX: 0 } : {}}\n animate={{ opacity: 1, scaleX: 1 }}\n transition={{ duration: 0.3, delay: index * 0.1 + 0.05 }}\n >\n <div\n className={cn(\n \"h-[2px] w-full rounded-full\",\n completed\n ? \"bg-gradient-to-r from-cyan-neon/60 to-cyan-neon/30\"\n : \"bg-white/[0.06]\"\n )}\n />\n </motion.div>\n );\n}\n\n// ============================================================================\n// GLASS STEPS\n// ============================================================================\n\nexport function GlassSteps({\n className,\n layout,\n steps,\n activeStep,\n onStepClick,\n disableAnimations = false,\n ...props\n}: GlassStepsProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n const isVertical = layout === \"vertical\";\n\n const getStatus = (index: number): \"completed\" | \"active\" | \"upcoming\" => {\n if (index < activeStep) return \"completed\";\n if (index === activeStep) return \"active\";\n return \"upcoming\";\n };\n\n if (isVertical) {\n return (\n <div\n className={cn(glassStepsVariants({ layout }), className)}\n role=\"list\"\n aria-label=\"Progress steps\"\n {...props}\n >\n {steps.map((step, i) => (\n <VerticalStepIndicator\n key={i}\n step={step}\n index={i}\n status={getStatus(i)}\n shouldAnimate={shouldAnimate}\n isLast={i === steps.length - 1}\n onClick={onStepClick ? () => onStepClick(i) : undefined}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n className={cn(glassStepsVariants({ layout }), className)}\n role=\"list\"\n aria-label=\"Progress steps\"\n {...props}\n >\n {steps.map((step, i) => (\n <React.Fragment key={i}>\n <StepIndicator\n step={step}\n index={i}\n status={getStatus(i)}\n shouldAnimate={shouldAnimate}\n onClick={onStepClick ? () => onStepClick(i) : undefined}\n />\n {i < steps.length - 1 && (\n <ConnectingLine\n completed={i < activeStep}\n shouldAnimate={shouldAnimate}\n index={i}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * ToolCallCard -- Displays an AI tool/function call with its name,\n * arguments, execution status, and optional result.\n *\n * @example\n * <ToolCallCard\n * name=\"searchDatabase\"\n * args={{ query: \"user preferences\", limit: 10 }}\n * status=\"running\"\n * />\n *\n * @example\n * <ToolCallCard\n * name=\"generateImage\"\n * args={{ prompt: \"A sunset over mountains\" }}\n * status=\"complete\"\n * result={{ url: \"https://...\" }}\n * duration={2340}\n * />\n */\n\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport {\n useGlassTokens,\n useColorTokens,\n useMotionTokens,\n} from \"../../../theme/UiThemeProvider\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type ToolCallStatus = \"pending\" | \"running\" | \"complete\" | \"error\";\n\nexport interface ToolCallProps {\n /** Tool/function name */\n name: string;\n /** Tool arguments (will be displayed as formatted JSON) */\n args?: Record<string, unknown>;\n /** Execution status */\n status: ToolCallStatus;\n /** Result data (shown when status is 'complete') */\n result?: unknown;\n /** Error message (shown when status is 'error') */\n error?: string;\n /** Execution duration in ms (shown when complete/error) */\n duration?: number;\n /** Tool call ID (for display) */\n id?: string;\n /** Whether the args/result sections start expanded. Default: false */\n defaultExpanded?: boolean;\n /** Disable animations */\n disableAnimations?: boolean;\n /** Additional className */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n}\n\n// ---------------------------------------------------------------------------\n// Icons (inline SVGs, 16x16)\n// ---------------------------------------------------------------------------\n\nfunction ToolIcon({ color }: { color: string }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{ flexShrink: 0 }}\n >\n <path\n d=\"M8.5 1L2 9h5.5L7 15l6.5-8H8L8.5 1Z\"\n stroke={color}\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction ChevronIcon({\n expanded,\n color,\n}: {\n expanded: boolean;\n color: string;\n}) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{\n flexShrink: 0,\n transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 150ms ease\",\n }}\n >\n <path\n d=\"M6 4l4 4-4 4\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst JSON_TRUNCATE_LIMIT = 500;\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nfunction StatusDot({\n status,\n colors,\n}: {\n status: ToolCallStatus;\n colors: { pending: string; running: string; complete: string; error: string };\n}) {\n const color = colors[status];\n const isPulsing = status === \"running\";\n\n return (\n <span\n style={{\n display: \"inline-block\",\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n backgroundColor: color,\n flexShrink: 0,\n }}\n className={cn(isPulsing && \"animate-pulse\")}\n />\n );\n}\n\nconst STATUS_LABEL: Record<ToolCallStatus, string> = {\n pending: \"Pending\",\n running: \"Running...\",\n complete: \"Complete\",\n error: \"Error\",\n};\n\n// ---------------------------------------------------------------------------\n// CollapsibleSection\n// ---------------------------------------------------------------------------\n\nfunction CollapsibleSection({\n label,\n defaultExpanded,\n badge,\n children,\n borderColor,\n hoverBg,\n textColor,\n softColor,\n}: {\n label: string;\n defaultExpanded: boolean;\n badge?: React.ReactNode;\n children: React.ReactNode;\n borderColor: string;\n hoverBg: string;\n textColor: string;\n softColor: string;\n}) {\n const [expanded, setExpanded] = React.useState(defaultExpanded);\n\n return (\n <div>\n <button\n type=\"button\"\n onClick={() => setExpanded((v) => !v)}\n className=\"flex w-full items-center gap-2 px-3 py-2 text-xs\"\n style={{\n color: textColor,\n borderTop: `1px solid ${borderColor}`,\n background: \"transparent\",\n cursor: \"pointer\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background = hoverBg;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.background = \"transparent\";\n }}\n >\n <ChevronIcon expanded={expanded} color={softColor} />\n <span className=\"font-medium\">{label}</span>\n {badge && <span className=\"ml-auto\">{badge}</span>}\n </button>\n {expanded && (\n <div className=\"px-3 pb-3\">\n {children}\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// JsonBlock — renders truncated JSON in a <pre>\n// ---------------------------------------------------------------------------\n\nfunction JsonBlock({\n value,\n textColor,\n bgColor,\n borderColor,\n}: {\n value: unknown;\n textColor: string;\n bgColor: string;\n borderColor: string;\n}) {\n const [showFull, setShowFull] = React.useState(false);\n const raw = JSON.stringify(value, null, 2);\n const isTruncated = raw.length > JSON_TRUNCATE_LIMIT;\n const display = !showFull && isTruncated ? raw.slice(0, JSON_TRUNCATE_LIMIT) + \"\\u2026\" : raw;\n\n return (\n <div>\n <pre\n className=\"font-mono overflow-x-auto rounded-md p-2 text-xs leading-relaxed\"\n style={{\n color: textColor,\n background: bgColor,\n border: `1px solid ${borderColor}`,\n margin: 0,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n }}\n >\n {display}\n </pre>\n {isTruncated && (\n <button\n type=\"button\"\n onClick={() => setShowFull((v) => !v)}\n className=\"mt-1 text-xs font-medium\"\n style={{ color: textColor, cursor: \"pointer\", background: \"none\", border: \"none\", padding: 0 }}\n >\n {showFull ? \"Show less\" : \"Show more\"}\n </button>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ToolCallCard\n// ---------------------------------------------------------------------------\n\nexport function ToolCallCard({\n name,\n args,\n status,\n result,\n error,\n duration,\n id,\n defaultExpanded = false,\n disableAnimations = false,\n className,\n style,\n}: ToolCallProps) {\n const glass = useGlassTokens();\n const colors = useColorTokens();\n const motion = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const statusColors = {\n pending: colors.text.soft,\n running: colors.accent.primary,\n complete: colors.accent.positive,\n error: colors.accent.destructive,\n };\n\n const statusColor = statusColors[status];\n\n // Inner bg for JSON blocks: slightly darker than card bg\n const jsonBg = \"rgba(0,0,0,0.2)\";\n\n return (\n <div\n className={cn(\"rounded-lg overflow-hidden\", className)}\n style={{\n background: glass.cardBg,\n border: `1px solid ${glass.cardBorder}`,\n backdropFilter: \"blur(12px)\",\n WebkitBackdropFilter: \"blur(12px)\",\n transition: shouldAnimate ? `border-color ${motion.fast.duration}s ease` : undefined,\n ...style,\n }}\n >\n {/* Header */}\n <div\n className=\"flex items-center gap-2 px-3 py-2.5\"\n >\n <ToolIcon color={colors.accent.primary} />\n <span\n className=\"font-mono text-sm truncate flex-1\"\n style={{ color: colors.text.primary }}\n title={name}\n >\n {name}\n </span>\n {duration != null && (status === \"complete\" || status === \"error\") && (\n <span\n className=\"rounded-full px-2 py-0.5 text-[10px] font-mono\"\n style={{\n color: colors.text.soft,\n background: \"rgba(255,255,255,0.06)\",\n }}\n >\n {formatDuration(duration)}\n </span>\n )}\n <div className=\"flex items-center gap-1.5\">\n <StatusDot status={status} colors={statusColors} />\n <span\n className=\"text-xs font-medium\"\n style={{ color: statusColor }}\n >\n {STATUS_LABEL[status]}\n </span>\n </div>\n </div>\n\n {/* ID row (if provided) */}\n {id && (\n <div\n className=\"px-3 pb-1 font-mono text-[10px] truncate\"\n style={{\n color: colors.text.soft,\n borderTop: `1px solid ${glass.cardBorder}`,\n paddingTop: 4,\n }}\n >\n id: {id}\n </div>\n )}\n\n {/* Arguments section */}\n {args && Object.keys(args).length > 0 && (\n <CollapsibleSection\n label=\"Arguments\"\n defaultExpanded={defaultExpanded}\n borderColor={glass.cardBorder}\n hoverBg={glass.hoverBg}\n textColor={colors.text.muted}\n softColor={colors.text.soft}\n >\n <JsonBlock\n value={args}\n textColor={colors.text.muted}\n bgColor={jsonBg}\n borderColor={glass.cardBorder}\n />\n </CollapsibleSection>\n )}\n\n {/* Result section (when complete) */}\n {status === \"complete\" && result !== undefined && (\n <CollapsibleSection\n label=\"Result\"\n defaultExpanded={defaultExpanded}\n borderColor={glass.cardBorder}\n hoverBg={glass.hoverBg}\n textColor={colors.text.muted}\n softColor={colors.text.soft}\n >\n <JsonBlock\n value={result}\n textColor={colors.text.muted}\n bgColor={jsonBg}\n borderColor={glass.cardBorder}\n />\n </CollapsibleSection>\n )}\n\n {/* Error section */}\n {status === \"error\" && error && (\n <div\n className=\"px-3 py-2 text-xs font-mono\"\n style={{\n color: colors.accent.destructive,\n borderTop: `1px solid ${glass.cardBorder}`,\n background: \"rgba(255,0,0,0.04)\",\n }}\n >\n {error}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport { ToolCallCard, type ToolCallProps } from \"./ToolCallCard\";\n\nexport interface ToolCallListProps {\n /** Array of tool calls to display */\n calls: ToolCallProps[];\n /** Gap between cards. Default: 8 */\n gap?: number;\n /** Additional className */\n className?: string;\n}\n\nexport function ToolCallList({ calls, gap = 8, className }: ToolCallListProps) {\n return (\n <div className={cn(\"flex flex-col\", className)} style={{ gap }}>\n {calls.map((call, i) => (\n <ToolCallCard key={call.id ?? i} {...call} />\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport React from \"react\";\nimport { GlowButton } from \"../../atoms/GlowButton\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassEmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Large centered icon */\n icon: React.ReactNode;\n /** Monospace uppercase title */\n title: string;\n /** Description text */\n description?: string;\n /** CTA callback */\n action?: () => void;\n /** CTA label */\n actionLabel?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function GlassEmptyState({\n icon,\n title,\n description,\n action,\n actionLabel,\n className,\n ...props\n}: GlassEmptyStateProps) {\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !reducedMotion;\n\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-4 rounded-xl px-8 py-12 text-center\",\n className\n )}\n style={{\n background: \"rgba(2,4,10,0.6)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n backdropFilter: \"blur(16px)\",\n WebkitBackdropFilter: \"blur(16px)\",\n }}\n {...props}\n >\n {/* Floating icon */}\n <motion.div\n className=\"flex items-center justify-center text-[var(--glia-color-text-soft,#64748B)] [&>svg]:h-12 [&>svg]:w-12 opacity-40\"\n animate={\n shouldAnimate\n ? { y: [0, -6, 0] }\n : undefined\n }\n transition={\n shouldAnimate\n ? { duration: 3, repeat: Infinity, ease: \"easeInOut\" }\n : undefined\n }\n >\n {icon}\n </motion.div>\n\n {/* Title */}\n <h3 className=\"font-mono text-xs uppercase tracking-[0.12em] text-[var(--glia-color-text-primary,#CBD5E1)]\">\n {title}\n </h3>\n\n {/* Description */}\n {description && (\n <p className=\"max-w-sm text-sm text-[var(--glia-color-text-soft,#64748B)]\">\n {description}\n </p>\n )}\n\n {/* CTA */}\n {action && actionLabel && (\n <GlowButton variant=\"outline\" size=\"sm\" onClick={action}>\n {actionLabel}\n </GlowButton>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { AlertCircle, Check, ChevronDown, ChevronUp } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst triggerVariants = cva(\n [\n \"flex w-full items-center justify-between rounded-md border px-3 py-2\",\n \"bg-[rgba(2,4,10,0.85)] backdrop-blur-xl\",\n \"text-sm font-mono text-foreground\",\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\",\n \"ring-offset-background transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"placeholder:text-muted-foreground/60\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default:\n \"border-white/[0.06] focus:border-cyan-neon focus:ring-cyan-neon/30 focus:shadow-[0_0_20px_hsl(var(--cyan-neon)/0.15)]\",\n error:\n \"border-destructive/60 focus:border-destructive focus:ring-destructive/30\",\n },\n size: {\n default: \"h-10\",\n sm: \"h-9 text-xs\",\n lg: \"h-11 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassSelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface GlassSelectGroup {\n label: string;\n options: GlassSelectOption[];\n}\n\nexport interface GlassSelectProps extends VariantProps<typeof triggerVariants> {\n /** Select label */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Flat options list */\n options?: GlassSelectOption[];\n /** Grouped options */\n groups?: GlassSelectGroup[];\n /** Controlled value */\n value?: string;\n /** Default value */\n defaultValue?: string;\n /** Change handler */\n onValueChange?: (value: string) => void;\n /** Disabled state */\n disabled?: boolean;\n /** Disable glow animations */\n disableAnimations?: boolean;\n /** Container class name */\n containerClassName?: string;\n /** Trigger class name */\n className?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function GlassSelect({\n className,\n containerClassName,\n variant,\n size,\n label,\n placeholder = \"Select...\",\n description,\n error,\n options,\n groups,\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n disableAnimations = false,\n}: GlassSelectProps) {\n const internalId = React.useId();\n const descriptionId = `${internalId}-description`;\n const errorId = `${internalId}-error`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const finalVariant = error ? \"error\" : variant;\n\n return (\n <div className={cn(\"space-y-2\", containerClassName)}>\n {/* Label */}\n {label && (\n <motion.label\n className=\"text-xs font-medium uppercase tracking-widest text-muted-foreground font-mono\"\n initial={shouldAnimate ? { opacity: 0, y: -5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n </motion.label>\n )}\n\n <SelectPrimitive.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n className={cn(triggerVariants({ variant: finalVariant, size }), className)}\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-invalid={error ? \"true\" : undefined}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 text-muted-foreground/60 shrink-0\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={cn(\n \"relative z-50 max-h-72 min-w-[8rem] overflow-hidden rounded-md border\",\n \"border-white/[0.06] bg-[rgba(2,4,10,0.95)] backdrop-blur-xl\",\n \"shadow-[0_8px_32px_rgba(0,0,0,0.5),inset_0_1px_0_rgba(255,255,255,0.02)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\"\n )}\n position=\"popper\"\n sideOffset={4}\n >\n <SelectPrimitive.ScrollUpButton className=\"flex h-6 cursor-default items-center justify-center\">\n <ChevronUp className=\"h-4 w-4 text-muted-foreground/60\" />\n </SelectPrimitive.ScrollUpButton>\n\n <SelectPrimitive.Viewport className=\"p-1\">\n {/* Flat options */}\n {options?.map((option) => (\n <GlassSelectItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </GlassSelectItem>\n ))}\n\n {/* Grouped options */}\n {groups?.map((group, i) => (\n <SelectPrimitive.Group key={group.label}>\n {i > 0 && (\n <SelectPrimitive.Separator className=\"mx-1 my-1 h-px bg-white/[0.06]\" />\n )}\n <SelectPrimitive.Label className=\"px-2 py-1.5 text-[10px] font-semibold uppercase tracking-widest text-muted-foreground/60 font-mono\">\n {group.label}\n </SelectPrimitive.Label>\n {group.options.map((option) => (\n <GlassSelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </GlassSelectItem>\n ))}\n </SelectPrimitive.Group>\n ))}\n </SelectPrimitive.Viewport>\n\n <SelectPrimitive.ScrollDownButton className=\"flex h-6 cursor-default items-center justify-center\">\n <ChevronDown className=\"h-4 w-4 text-muted-foreground/60\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n\n {/* Description */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-xs text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n );\n}\n\n// ============================================================================\n// SELECT ITEM\n// ============================================================================\n\nfunction GlassSelectItem({\n children,\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2\",\n \"text-sm font-mono text-foreground/90 outline-none\",\n \"focus:bg-cyan-neon/10 focus:text-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-40\",\n \"transition-colors duration-100\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-3.5 w-3.5 text-cyan-neon\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion } from \"framer-motion\";\nimport { AlertCircle, Calendar } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst dateInputVariants = cva(\n [\n \"flex w-full items-center rounded-md border px-3 py-2\",\n \"bg-[rgba(2,4,10,0.85)] backdrop-blur-xl\",\n \"text-sm font-mono text-foreground tabular-nums\",\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\",\n \"ring-offset-background transition-all duration-200\",\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-offset-2\",\n \"[&:has(:disabled)]:cursor-not-allowed [&:has(:disabled)]:opacity-50\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default:\n \"border-white/[0.06] focus-within:border-cyan-neon focus-within:ring-cyan-neon/30 focus-within:shadow-[0_0_20px_hsl(var(--cyan-neon)/0.15)]\",\n error:\n \"border-destructive/60 focus-within:border-destructive focus-within:ring-destructive/30\",\n success:\n \"border-emerald-neon/40 focus-within:border-emerald-neon focus-within:ring-emerald-neon/30\",\n },\n size: {\n default: \"h-10\",\n sm: \"h-9 text-xs\",\n lg: \"h-11\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassDatePickerProps\n extends VariantProps<typeof dateInputVariants> {\n /** Input label */\n label?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Date value (YYYY-MM-DD) */\n value?: string;\n /** Default date value */\n defaultValue?: string;\n /** Change handler */\n onChange?: (value: string) => void;\n /** Min date (YYYY-MM-DD) */\n min?: string;\n /** Max date (YYYY-MM-DD) */\n max?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Input type: date or date range */\n mode?: \"single\" | \"range\";\n /** Range end value (YYYY-MM-DD), only used when mode=\"range\" */\n endValue?: string;\n /** Default end value */\n defaultEndValue?: string;\n /** Range end change handler */\n onEndChange?: (value: string) => void;\n /** Disable glow animations */\n disableAnimations?: boolean;\n /** Container class name */\n containerClassName?: string;\n /** Input class name */\n className?: string;\n /** HTML id */\n id?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function GlassDatePicker({\n className,\n containerClassName,\n variant,\n size,\n label,\n description,\n error,\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabled = false,\n mode = \"single\",\n endValue,\n defaultEndValue,\n onEndChange,\n disableAnimations = false,\n id,\n}: GlassDatePickerProps) {\n const internalId = React.useId();\n const finalId = id || internalId;\n const descriptionId = `${finalId}-description`;\n const errorId = `${finalId}-error`;\n const endId = `${finalId}-end`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const finalVariant = error ? \"error\" : variant;\n\n return (\n <div className={cn(\"space-y-2\", containerClassName)}>\n {/* Label */}\n {label && (\n <motion.label\n htmlFor={finalId}\n className=\"text-xs font-medium uppercase tracking-widest text-muted-foreground font-mono\"\n initial={shouldAnimate ? { opacity: 0, y: -5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n </motion.label>\n )}\n\n {/* Date input(s) */}\n <motion.div\n className=\"flex items-center gap-2\"\n initial={shouldAnimate ? { opacity: 0, scale: 0.98 } : {}}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.2, delay: 0.1 }}\n >\n <div\n className={cn(\n dateInputVariants({ variant: finalVariant, size }),\n \"gap-2\",\n className\n )}\n >\n <Calendar className=\"h-4 w-4 text-muted-foreground/60 shrink-0\" />\n <input\n id={finalId}\n type=\"date\"\n value={value}\n defaultValue={defaultValue}\n min={min}\n max={max}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.value)}\n className={cn(\n \"w-full bg-transparent outline-none font-mono tabular-nums\",\n \"text-foreground placeholder:text-muted-foreground/60\",\n \"[color-scheme:dark]\",\n \"disabled:cursor-not-allowed\"\n )}\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-invalid={error ? \"true\" : undefined}\n />\n </div>\n\n {mode === \"range\" && (\n <>\n <span className=\"text-xs text-muted-foreground/60 font-mono uppercase tracking-wider shrink-0\">\n to\n </span>\n <div\n className={cn(\n dateInputVariants({ variant: finalVariant, size }),\n \"gap-2\"\n )}\n >\n <Calendar className=\"h-4 w-4 text-muted-foreground/60 shrink-0\" />\n <input\n id={endId}\n type=\"date\"\n value={endValue}\n defaultValue={defaultEndValue}\n min={min}\n max={max}\n disabled={disabled}\n onChange={(e) => onEndChange?.(e.target.value)}\n className={cn(\n \"w-full bg-transparent outline-none font-mono tabular-nums\",\n \"text-foreground placeholder:text-muted-foreground/60\",\n \"[color-scheme:dark]\",\n \"disabled:cursor-not-allowed\"\n )}\n aria-label=\"End date\"\n />\n </div>\n </>\n )}\n </motion.div>\n\n {/* Description */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-xs text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { AlertCircle } from \"lucide-react\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 B\";\n const units = [\"B\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const size = bytes / Math.pow(1024, i);\n return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n}\n\n// ============================================================================\n// INLINE SVG ICONS\n// ============================================================================\n\nfunction ArrowUpIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M12 17V3\" />\n <path d=\"m6 8 6-6 6 6\" />\n <path d=\"M2 21h20\" />\n </svg>\n );\n}\n\nfunction XIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nfunction FileIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n );\n}\n\n// ============================================================================\n// VARIANTS\n// ============================================================================\n\nconst dropZoneVariants = cva(\n [\n \"relative flex flex-col items-center justify-center rounded-md border-2 border-dashed\",\n \"bg-[rgba(2,4,10,0.85)] backdrop-blur-xl\",\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\",\n \"ring-offset-background transition-all duration-200\",\n \"cursor-pointer select-none\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default:\n \"border-white/[0.06] hover:border-white/[0.12] focus-visible:border-cyan-neon focus-visible:ring-cyan-neon/30\",\n error:\n \"border-destructive/60 focus-visible:border-destructive focus-visible:ring-destructive/30\",\n active:\n \"border-cyan-neon/60 bg-[rgba(2,4,10,0.75)] shadow-[0_0_30px_hsl(var(--cyan-neon)/0.1)]\",\n },\n size: {\n default: \"min-h-[160px] px-6 py-8 gap-3\",\n sm: \"min-h-[120px] px-4 py-6 gap-2\",\n lg: \"min-h-[200px] px-8 py-10 gap-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassFileUploadProps\n extends VariantProps<typeof dropZoneVariants> {\n /** Accepted file types (e.g. \"image/*,.pdf\") */\n accept?: string;\n /** Allow multiple files */\n multiple?: boolean;\n /** Maximum file size in bytes */\n maxSize?: number;\n /** Callback when files change */\n onFilesChange?: (files: File[]) => void;\n /** Controlled file list */\n files?: File[];\n /** Disabled state */\n disabled?: boolean;\n /** Upload zone label */\n label?: string;\n /** Helper description text */\n description?: string;\n /** Error message */\n error?: string;\n /** Disable glow animations */\n disableAnimations?: boolean;\n /** Container class name */\n containerClassName?: string;\n /** Drop zone class name */\n className?: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const GlassFileUpload = React.forwardRef<\n HTMLDivElement,\n GlassFileUploadProps\n>(function GlassFileUpload(\n {\n className,\n containerClassName,\n variant,\n size,\n accept,\n multiple = false,\n maxSize,\n onFilesChange,\n files: controlledFiles,\n disabled = false,\n label,\n description,\n error,\n disableAnimations = false,\n },\n ref\n) {\n const internalId = React.useId();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const descriptionId = `${internalId}-description`;\n const errorId = `${internalId}-error`;\n\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const [isDragOver, setIsDragOver] = React.useState(false);\n const [internalFiles, setInternalFiles] = React.useState<File[]>([]);\n\n const files = controlledFiles ?? internalFiles;\n const isControlled = controlledFiles !== undefined;\n\n const finalVariant = error ? \"error\" : isDragOver ? \"active\" : variant;\n\n // ---- File handling ----\n\n const addFiles = React.useCallback(\n (incoming: FileList | File[]) => {\n const newFiles = Array.from(incoming);\n const filtered = newFiles.filter((f) => {\n if (maxSize && f.size > maxSize) return false;\n return true;\n });\n\n const updated = multiple ? [...files, ...filtered] : filtered.slice(0, 1);\n\n if (!isControlled) {\n setInternalFiles(updated);\n }\n onFilesChange?.(updated);\n },\n [files, isControlled, maxSize, multiple, onFilesChange]\n );\n\n const removeFile = React.useCallback(\n (index: number) => {\n const updated = files.filter((_, i) => i !== index);\n if (!isControlled) {\n setInternalFiles(updated);\n }\n onFilesChange?.(updated);\n },\n [files, isControlled, onFilesChange]\n );\n\n // ---- Drag handlers ----\n\n const handleDragOver = React.useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) setIsDragOver(true);\n },\n [disabled]\n );\n\n const handleDragLeave = React.useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n },\n []\n );\n\n const handleDrop = React.useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n if (disabled) return;\n if (e.dataTransfer.files?.length) {\n addFiles(e.dataTransfer.files);\n }\n },\n [disabled, addFiles]\n );\n\n // ---- Click / keyboard ----\n\n const handleClick = React.useCallback(() => {\n if (!disabled) inputRef.current?.click();\n }, [disabled]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (!disabled && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n inputRef.current?.click();\n }\n },\n [disabled]\n );\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files?.length) {\n addFiles(e.target.files);\n }\n // Reset so same file can be re-selected\n e.target.value = \"\";\n },\n [addFiles]\n );\n\n return (\n <div ref={ref} className={cn(\"space-y-2\", containerClassName)}>\n {/* Label */}\n {label && (\n <motion.label\n className=\"text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground font-mono\"\n initial={shouldAnimate ? { opacity: 0, y: -5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2 }}\n >\n {label}\n </motion.label>\n )}\n\n {/* Hidden file input */}\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleInputChange}\n className=\"sr-only\"\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n\n {/* Drop zone */}\n <motion.div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n dropZoneVariants({ variant: finalVariant, size }),\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n aria-label=\"File upload drop zone\"\n aria-describedby={\n description || error\n ? `${description ? descriptionId : \"\"} ${error ? errorId : \"\"}`.trim()\n : undefined\n }\n aria-disabled={disabled || undefined}\n initial={shouldAnimate ? { opacity: 0, scale: 0.98 } : {}}\n animate={{\n opacity: 1,\n scale: 1,\n }}\n transition={{ duration: 0.2, delay: 0.1 }}\n >\n {/* Upload icon */}\n <motion.div\n animate={\n shouldAnimate && isDragOver\n ? { y: -4, scale: 1.1 }\n : { y: 0, scale: 1 }\n }\n transition={{ type: \"spring\", stiffness: 400, damping: 20 }}\n >\n <ArrowUpIcon\n className={cn(\n \"h-8 w-8 transition-colors duration-200\",\n isDragOver ? \"text-cyan-neon\" : \"text-muted-foreground/40\"\n )}\n />\n </motion.div>\n\n {/* Primary text */}\n <span\n className={cn(\n \"text-sm font-mono uppercase tracking-[0.12em] transition-colors duration-200\",\n isDragOver ? \"text-cyan-neon\" : \"text-muted-foreground/60\"\n )}\n >\n Drop files here\n </span>\n\n {/* Secondary text */}\n <span className=\"text-xs text-muted-foreground/40 font-mono\">\n or click to browse\n </span>\n </motion.div>\n\n {/* File list */}\n <AnimatePresence mode=\"popLayout\">\n {files.length > 0 && (\n <motion.ul\n className=\"space-y-1\"\n initial={shouldAnimate ? { opacity: 0 } : {}}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2, delay: 0.15 }}\n role=\"list\"\n aria-label=\"Uploaded files\"\n >\n {files.map((file, index) => (\n <motion.li\n key={`${file.name}-${file.size}-${index}`}\n className={cn(\n \"flex items-center gap-2 rounded-md border px-3 py-2\",\n \"border-white/[0.06] bg-[rgba(2,4,10,0.85)] backdrop-blur-xl\",\n \"shadow-[inset_0_1px_0_rgba(255,255,255,0.02)]\"\n )}\n initial={shouldAnimate ? { opacity: 0, x: -10 } : {}}\n animate={{ opacity: 1, x: 0 }}\n exit={shouldAnimate ? { opacity: 0, x: 10 } : {}}\n transition={{ duration: 0.15 }}\n layout={shouldAnimate}\n >\n <FileIcon className=\"h-4 w-4 shrink-0 text-cyan-neon/60\" />\n <span className=\"flex-1 truncate text-xs font-mono text-foreground/80\">\n {file.name}\n </span>\n <span className=\"shrink-0 text-[10px] font-mono uppercase tracking-[0.12em] text-muted-foreground/40 tabular-nums\">\n {formatFileSize(file.size)}\n </span>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n removeFile(index);\n }}\n disabled={disabled}\n className={cn(\n \"shrink-0 rounded p-0.5 transition-colors duration-150\",\n \"text-muted-foreground/40 hover:text-destructive hover:bg-destructive/10\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-destructive/30\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n aria-label={`Remove ${file.name}`}\n >\n <XIcon className=\"h-3.5 w-3.5\" />\n </button>\n </motion.li>\n ))}\n </motion.ul>\n )}\n </AnimatePresence>\n\n {/* Description */}\n {description && !error && (\n <motion.p\n id={descriptionId}\n className=\"text-xs text-muted-foreground\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n {description}\n </motion.p>\n )}\n\n {/* Error message */}\n {error && (\n <motion.p\n id={errorId}\n className=\"text-xs text-destructive flex items-center gap-1\"\n initial={shouldAnimate ? { opacity: 0, y: 5 } : {}}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.2, delay: 0.2 }}\n >\n <AlertCircle className=\"h-3 w-3\" />\n {error}\n </motion.p>\n )}\n </div>\n );\n});\n\nGlassFileUpload.displayName = \"GlassFileUpload\";\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useElevationTokens, useGlassTokens } from \"../../../theme\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassNavigationItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface GlassNavigationProps {\n brand?: React.ReactNode;\n items: GlassNavigationItem[];\n activeId?: string;\n onItemClick?: (id: string) => void;\n actions?: React.ReactNode;\n sticky?: boolean;\n className?: string;\n}\n\n// ============================================================================\n// GLASS NAVIGATION\n// ============================================================================\n\nexport function GlassNavigation({\n brand,\n items,\n activeId,\n onItemClick,\n actions,\n sticky = false,\n className,\n}: GlassNavigationProps) {\n const glassTokens = useGlassTokens();\n const elevationTokens = useElevationTokens();\n const reducedMotion = prefersReducedMotion();\n\n return (\n <nav\n className={cn(\n \"relative flex w-full items-center select-none z-10\",\n sticky && \"sticky top-0\",\n className,\n )}\n style={{\n backdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n WebkitBackdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n background: glassTokens.panelBg,\n borderBottom: `1px solid ${glassTokens.panelBorder}`,\n boxShadow: `inset 0 1px 0 rgba(255,255,255,0.02), ${elevationTokens.softDrop}`,\n }}\n role=\"navigation\"\n >\n {/* Brand area */}\n {brand && (\n <div className=\"flex-shrink-0 flex items-center px-5 h-12\">\n {brand}\n </div>\n )}\n\n {/* Nav items */}\n <div className=\"relative flex items-center gap-1 h-12 px-2\" role=\"menubar\">\n {items.map((item) => {\n const isActive = item.id === activeId;\n return (\n <button\n key={item.id}\n type=\"button\"\n role=\"menuitem\"\n onClick={() => {\n item.onClick?.();\n onItemClick?.(item.id);\n }}\n className={cn(\n \"relative flex items-center gap-2 px-3 h-full text-sm transition-colors\",\n \"font-mono uppercase tracking-[0.06em] text-[11px]\",\n isActive\n ? \"text-[var(--glia-color-text-primary,#CBD5E1)]\"\n : \"text-[var(--glia-color-text-soft,#64748B)] hover:text-[var(--glia-color-text-primary,#CBD5E1)]\",\n )}\n style={{\n background: isActive ? undefined : undefined,\n }}\n aria-current={isActive ? \"page\" : undefined}\n >\n {item.icon && (\n <span className=\"flex-shrink-0 flex items-center justify-center w-4 h-4\">\n {item.icon}\n </span>\n )}\n <span>{item.label}</span>\n\n {/* Active indicator — animated underline */}\n {isActive && (\n <motion.div\n layoutId=\"glass-nav-active-indicator\"\n className=\"absolute bottom-0 left-2 right-2 h-[2px]\"\n style={{\n background: glassTokens.activeBorder,\n boxShadow: `0 0 8px ${glassTokens.activeBorder}, 0 0 16px ${glassTokens.activeBorder}`,\n }}\n transition={\n reducedMotion\n ? { duration: 0 }\n : { type: \"spring\", stiffness: 400, damping: 30 }\n }\n />\n )}\n </button>\n );\n })}\n </div>\n\n {/* Spacer */}\n <div className=\"flex-1\" />\n\n {/* Actions area */}\n {actions && (\n <div className=\"flex-shrink-0 flex items-center gap-2 px-4 h-12\">\n {actions}\n </div>\n )}\n </nav>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Panel,\n PanelGroup,\n PanelResizeHandle,\n type PanelGroupProps,\n type PanelProps,\n type PanelResizeHandleProps,\n} from \"react-resizable-panels\";\nimport { cn } from \"../../../lib/utils\";\nimport { useColorTokens, useGlassTokens } from \"../../../theme\";\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\ntype HandleVariant = \"default\" | \"subtle\" | \"prominent\";\n\nconst GlassResizableContext = React.createContext<{\n handleVariant: HandleVariant;\n}>({ handleVariant: \"default\" });\n\n// ============================================================================\n// GLASS RESIZABLE GROUP\n// ============================================================================\n\nexport interface GlassResizableGroupProps extends PanelGroupProps {\n handleVariant?: HandleVariant;\n}\n\nexport const GlassResizableGroup = React.forwardRef<\n React.ComponentRef<typeof PanelGroup>,\n GlassResizableGroupProps\n>(function GlassResizableGroup({ handleVariant = \"default\", children, ...props }, ref) {\n const ctx = React.useMemo(() => ({ handleVariant }), [handleVariant]);\n\n return (\n <GlassResizableContext.Provider value={ctx}>\n <PanelGroup ref={ref} {...props}>\n {children}\n </PanelGroup>\n </GlassResizableContext.Provider>\n );\n});\n\n// ============================================================================\n// GLASS RESIZABLE PANEL\n// ============================================================================\n\nexport interface GlassResizablePanelProps extends PanelProps {\n glass?: boolean;\n}\n\nexport const GlassResizablePanel = React.forwardRef<\n React.ComponentRef<typeof Panel>,\n GlassResizablePanelProps\n>(function GlassResizablePanel({ glass = false, className, style, children, ...props }, ref) {\n const glassTokens = useGlassTokens();\n\n return (\n <Panel\n ref={ref}\n className={cn(glass && \"rounded-lg overflow-hidden\", className)}\n style={\n glass\n ? {\n background: glassTokens.cardBg,\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: glassTokens.cardBorder,\n ...style,\n }\n : style\n }\n {...props}\n >\n {children}\n </Panel>\n );\n});\n\n// ============================================================================\n// GLASS RESIZE HANDLE\n// ============================================================================\n\nexport interface GlassResizeHandleProps\n extends Omit<PanelResizeHandleProps, \"children\"> {\n showGrip?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n variant?: HandleVariant;\n}\n\nexport function GlassResizeHandle({\n showGrip,\n orientation: orientationProp,\n variant: variantProp,\n className,\n style,\n ...props\n}: GlassResizeHandleProps) {\n const { handleVariant: ctxVariant } = React.useContext(GlassResizableContext);\n const variant = variantProp ?? ctxVariant;\n const colorTokens = useColorTokens();\n const accentColor = colorTokens.accent.primary;\n\n // Infer orientation from parent PanelGroup direction via the DOM data attribute.\n // The `orientation` prop lets users override when needed.\n const isVertical = orientationProp === \"vertical\";\n\n const sizeMap: Record<HandleVariant, number> = {\n subtle: 1,\n default: 4,\n prominent: 6,\n };\n const size = sizeMap[variant];\n\n const gripVisible = showGrip ?? variant !== \"subtle\";\n\n return (\n <PanelResizeHandle\n className={cn(\n \"group/handle relative flex items-center justify-center\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n isVertical ? \"w-full py-0.5\" : \"h-full px-0.5\",\n className,\n )}\n style={style}\n {...props}\n >\n {/* Track line */}\n <div\n className={cn(\n \"rounded-full transition-colors duration-150\",\n isVertical ? \"w-full\" : \"h-full\",\n // Default: muted background\n \"bg-border/40\",\n // Hover: accent glow\n \"group-hover/handle:bg-[var(--glass-handle-accent)]\",\n // Active drag via data attribute\n \"group-[[data-resize-handle-active]]/handle:bg-[var(--glass-handle-accent)]\",\n )}\n style={{\n ...({ \"--glass-handle-accent\": accentColor } as React.CSSProperties),\n ...(isVertical\n ? { height: `${size}px` }\n : { width: `${size}px` }),\n }}\n />\n\n {/* Grip dots */}\n {gripVisible && (\n <div\n className={cn(\n \"absolute flex gap-0.5 opacity-0 transition-opacity duration-150\",\n \"group-hover/handle:opacity-100\",\n \"group-[[data-resize-handle-active]]/handle:opacity-100\",\n isVertical ? \"flex-row\" : \"flex-col\",\n )}\n >\n {Array.from({ length: 3 }).map((_, i) => (\n <div\n key={i}\n className=\"rounded-full\"\n style={{\n width: variant === \"prominent\" ? 4 : 3,\n height: variant === \"prominent\" ? 4 : 3,\n background: accentColor,\n opacity: 0.8,\n }}\n />\n ))}\n </div>\n )}\n </PanelResizeHandle>\n );\n}\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { ChevronLeft } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useElevationTokens, useGlassTokens } from \"../../../theme\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\ninterface SidebarContextValue {\n collapsed: boolean;\n side: \"left\" | \"right\";\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue>({\n collapsed: false,\n side: \"left\",\n});\n\nexport function useSidebarState() {\n return React.useContext(SidebarContext);\n}\n\n// ============================================================================\n// GLASS SIDEBAR (ROOT)\n// ============================================================================\n\nexport interface GlassSidebarProps {\n children: React.ReactNode;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n defaultCollapsed?: boolean;\n collapsedWidth?: number;\n expandedWidth?: number;\n side?: \"left\" | \"right\";\n showToggle?: boolean;\n disableAnimations?: boolean;\n elevation?: \"none\" | \"soft\" | \"hud\";\n showBorder?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst SPRING = { type: \"spring\" as const, stiffness: 300, damping: 30 };\n\nexport function GlassSidebar({\n children,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n defaultCollapsed = false,\n collapsedWidth = 56,\n expandedWidth = 240,\n side = \"left\",\n showToggle = true,\n disableAnimations = false,\n elevation = \"soft\",\n showBorder = true,\n className,\n style,\n}: GlassSidebarProps) {\n const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);\n const collapsed = controlledCollapsed ?? internalCollapsed;\n\n const glassTokens = useGlassTokens();\n const elevationTokens = useElevationTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n const shadowMap = {\n none: \"none\",\n soft: elevationTokens.softDrop,\n hud: elevationTokens.hudPanel,\n };\n\n const handleToggle = () => {\n const next = !collapsed;\n if (controlledCollapsed === undefined) {\n setInternalCollapsed(next);\n }\n onCollapsedChange?.(next);\n };\n\n const borderSide = side === \"left\" ? \"borderRight\" : \"borderLeft\";\n\n return (\n <SidebarContext.Provider value={{ collapsed, side }}>\n <motion.aside\n className={cn(\n \"relative flex flex-col h-full overflow-hidden select-none\",\n className,\n )}\n style={{\n backdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n WebkitBackdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n background: glassTokens.panelBg,\n boxShadow: shadowMap[elevation],\n ...(showBorder\n ? {\n [borderSide]: `1px solid ${glassTokens.panelBorder}`,\n }\n : {}),\n ...style,\n }}\n animate={{ width: collapsed ? collapsedWidth : expandedWidth }}\n transition={shouldAnimate ? SPRING : { duration: 0 }}\n >\n {children}\n\n {showToggle && (\n <button\n type=\"button\"\n onClick={handleToggle}\n className={cn(\n \"absolute top-3 z-10 flex h-6 w-6 items-center justify-center rounded-full\",\n \"transition-colors\",\n side === \"left\" ? \"-right-3\" : \"-left-3\",\n )}\n style={{\n background: glassTokens.panelBg,\n border: `1px solid ${glassTokens.panelBorder}`,\n backdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n WebkitBackdropFilter: `blur(${glassTokens.panelBlur ?? \"24px\"})`,\n }}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n >\n <motion.span\n animate={{\n rotate: collapsed\n ? side === \"left\"\n ? 180\n : 0\n : side === \"left\"\n ? 0\n : 180,\n }}\n transition={shouldAnimate ? SPRING : { duration: 0 }}\n className=\"flex items-center justify-center\"\n >\n <ChevronLeft className=\"h-3.5 w-3.5 text-[var(--glia-color-text-soft,#64748B)]\" />\n </motion.span>\n </button>\n )}\n </motion.aside>\n </SidebarContext.Provider>\n );\n}\n\n// ============================================================================\n// GLASS SIDEBAR HEADER\n// ============================================================================\n\nexport interface GlassSidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\nexport function GlassSidebarHeader({\n children,\n className,\n style,\n ...props\n}: GlassSidebarHeaderProps) {\n const glassTokens = useGlassTokens();\n\n return (\n <div\n className={cn(\"flex items-center px-3 py-3 border-b min-h-[48px]\", className)}\n style={{\n background: glassTokens.headerGradient,\n borderColor: glassTokens.cardBorder,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// GLASS SIDEBAR SECTION\n// ============================================================================\n\nexport interface GlassSidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n title?: string;\n}\n\nexport function GlassSidebarSection({\n children,\n title,\n className,\n ...props\n}: GlassSidebarSectionProps) {\n const { collapsed } = useSidebarState();\n const glassTokens = useGlassTokens();\n\n return (\n <div className={cn(\"px-2 py-2 space-y-0.5\", className)} {...props}>\n {title && !collapsed && (\n <h4 className=\"text-[10px] font-mono uppercase tracking-[0.12em] text-[var(--glia-color-text-soft,#64748B)] px-2 pb-1\">\n {title}\n </h4>\n )}\n {title && collapsed && (\n <div\n className=\"mx-2 mb-1\"\n style={{\n borderBottom: `1px solid ${glassTokens.cardBorder}`,\n }}\n />\n )}\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// GLASS SIDEBAR ITEM\n// ============================================================================\n\nexport interface GlassSidebarItemProps {\n children: React.ReactNode;\n icon?: React.ReactNode;\n isActive?: boolean;\n badge?: React.ReactNode;\n tooltip?: string;\n asChild?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nexport function GlassSidebarItem({\n children,\n icon,\n isActive = false,\n badge,\n tooltip,\n asChild = false,\n className,\n onClick,\n}: GlassSidebarItemProps) {\n const { collapsed, side } = useSidebarState();\n const glassTokens = useGlassTokens();\n\n const Comp = asChild ? Slot : \"button\";\n\n const activeBorderSide = side === \"left\" ? \"borderLeft\" : \"borderRight\";\n\n const itemContent = (\n <Comp\n type={asChild ? undefined : \"button\"}\n onClick={onClick}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md px-2 py-1.5 text-sm transition-colors\",\n \"text-[var(--glia-color-text-primary,#CBD5E1)]\",\n collapsed && \"justify-center px-0\",\n className,\n )}\n style={{\n background: isActive ? glassTokens.hoverBg : undefined,\n [activeBorderSide]: isActive ? `2px solid ${glassTokens.activeBorder}` : \"2px solid transparent\",\n }}\n data-active={isActive || undefined}\n >\n {icon && (\n <span className=\"flex-shrink-0 flex items-center justify-center w-5 h-5\">\n {icon}\n </span>\n )}\n <AnimatePresence>\n {!collapsed && (\n <motion.span\n initial={{ opacity: 0, width: 0 }}\n animate={{ opacity: 1, width: \"auto\" }}\n exit={{ opacity: 0, width: 0 }}\n transition={{ duration: 0.15 }}\n className=\"flex-1 truncate text-left\"\n >\n {children}\n </motion.span>\n )}\n </AnimatePresence>\n {!collapsed && badge && (\n <span className=\"flex-shrink-0 ml-auto\">{badge}</span>\n )}\n </Comp>\n );\n\n if (collapsed && tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{itemContent}</TooltipTrigger>\n <TooltipContent side={side === \"left\" ? \"right\" : \"left\"}>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n }\n\n return itemContent;\n}\n\n// ============================================================================\n// GLASS SIDEBAR FOOTER\n// ============================================================================\n\nexport interface GlassSidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\nexport function GlassSidebarFooter({\n children,\n className,\n style,\n ...props\n}: GlassSidebarFooterProps) {\n const glassTokens = useGlassTokens();\n\n return (\n <div\n className={cn(\"mt-auto flex items-center px-3 py-3 border-t min-h-[48px]\", className)}\n style={{\n borderColor: glassTokens.cardBorder,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n ArrowUpDown,\n ArrowUp,\n ArrowDown,\n Search,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n useGlassTokens,\n useColorTokens,\n useMotionTokens,\n} from \"../../../theme\";\nimport { GlassPanel } from \"../Glass/GlassPanel\";\nimport { GlowButton } from \"../../atoms/GlowButton/GlowButton\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\nimport type { ColumnDef, SortState, PaginationState } from \"./types\";\n\n// ============================================================================\n// DENSITY VARIANTS\n// ============================================================================\n\nconst cellVariants = cva(\"\", {\n variants: {\n variant: {\n compact: \"px-2 py-1 text-xs\",\n default: \"px-3 py-2 text-sm\",\n comfortable: \"px-4 py-3 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nconst headerCellVariants = cva(\"font-medium font-mono\", {\n variants: {\n variant: {\n compact: \"px-2 py-1.5 text-[10px] uppercase tracking-[0.12em]\",\n default: \"px-3 py-2.5 text-xs uppercase tracking-[0.12em]\",\n comfortable: \"px-4 py-3.5 text-xs uppercase tracking-[0.12em]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassTableProps<T> {\n columns: ColumnDef<T>[];\n data: T[];\n getRowId?: (row: T, index: number) => string;\n\n // Sorting\n sortState?: SortState;\n onSortChange?: (sort: SortState) => void;\n\n // Pagination\n pagination?: boolean;\n paginationState?: PaginationState;\n onPaginationChange?: (state: PaginationState) => void;\n pageSizeOptions?: number[];\n\n // Filtering\n globalFilter?: string;\n onGlobalFilterChange?: (value: string) => void;\n\n // Selection\n selectable?: boolean;\n selectedRowIds?: Set<string>;\n onSelectionChange?: (ids: Set<string>) => void;\n\n // Appearance\n variant?: \"default\" | \"compact\" | \"comfortable\";\n hoverable?: boolean;\n striped?: boolean;\n loading?: boolean;\n emptyState?: React.ReactNode;\n disableAnimations?: boolean;\n className?: string;\n style?: React.CSSProperties;\n\n // Row interaction\n onRowClick?: (row: T) => void;\n}\n\n// ============================================================================\n// SKELETON ROW\n// ============================================================================\n\nfunction SkeletonRow({\n colCount,\n variant,\n glassTokens,\n}: {\n colCount: number;\n variant: \"compact\" | \"default\" | \"comfortable\";\n glassTokens: ReturnType<typeof useGlassTokens>;\n}) {\n return (\n <tr>\n {Array.from({ length: colCount }, (_, i) => (\n <td key={i} className={cellVariants({ variant })}>\n <div\n className=\"rounded animate-pulse\"\n style={{\n background: glassTokens.hoverBg,\n height: variant === \"compact\" ? 12 : 16,\n width: `${50 + Math.random() * 40}%`,\n }}\n />\n </td>\n ))}\n </tr>\n );\n}\n\n// ============================================================================\n// SORT ICON\n// ============================================================================\n\nfunction SortIcon({\n direction,\n accentColor,\n}: {\n direction: \"asc\" | \"desc\" | null;\n accentColor: string;\n}) {\n if (direction === \"asc\") {\n return <ArrowUp className=\"h-3.5 w-3.5\" style={{ color: accentColor }} />;\n }\n if (direction === \"desc\") {\n return (\n <ArrowDown className=\"h-3.5 w-3.5\" style={{ color: accentColor }} />\n );\n }\n return <ArrowUpDown className=\"h-3.5 w-3.5 opacity-40\" />;\n}\n\n// ============================================================================\n// GLASS TABLE\n// ============================================================================\n\nfunction GlassTableInner<T>(\n props: GlassTableProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n columns,\n data,\n getRowId,\n sortState,\n onSortChange,\n pagination = false,\n paginationState,\n onPaginationChange,\n pageSizeOptions = [10, 20, 50],\n globalFilter,\n onGlobalFilterChange,\n selectable = false,\n selectedRowIds,\n onSelectionChange,\n variant = \"default\",\n hoverable = true,\n striped = false,\n loading = false,\n emptyState,\n disableAnimations = false,\n className,\n style,\n onRowClick,\n } = props;\n\n const glassTokens = useGlassTokens();\n const colorTokens = useColorTokens();\n const motionTokens = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !disableAnimations && !reducedMotion;\n\n // ---- Row ID helper ----\n const getRowIdFn = React.useCallback(\n (row: T, index: number): string => {\n if (getRowId) return getRowId(row, index);\n if (typeof row === \"object\" && row !== null && \"id\" in row) {\n return String((row as Record<string, unknown>).id);\n }\n return String(index);\n },\n [getRowId]\n );\n\n // ---- Cell value helper ----\n const getCellValue = React.useCallback(\n (row: T, col: ColumnDef<T>): unknown => {\n if (col.accessorFn) return col.accessorFn(row);\n if (col.accessorKey)\n return (row as Record<string, unknown>)[col.accessorKey];\n return undefined;\n },\n []\n );\n\n // ---- Filtering ----\n const filteredData = React.useMemo(() => {\n if (!globalFilter || globalFilter.trim() === \"\") return data;\n const search = globalFilter.toLowerCase();\n return data.filter((row) =>\n columns.some((col) => {\n const val = getCellValue(row, col);\n if (val == null) return false;\n return String(val).toLowerCase().includes(search);\n })\n );\n }, [data, globalFilter, columns, getCellValue]);\n\n // ---- Sorting ----\n const sortedData = React.useMemo(() => {\n if (!sortState || !sortState.direction) return filteredData;\n const col = columns.find((c) => c.id === sortState.columnId);\n if (!col) return filteredData;\n const sorted = [...filteredData].sort((a, b) => {\n const aVal = getCellValue(a, col);\n const bVal = getCellValue(b, col);\n if (aVal == null && bVal == null) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n if (typeof aVal === \"number\" && typeof bVal === \"number\") {\n return aVal - bVal;\n }\n return String(aVal).localeCompare(String(bVal));\n });\n if (sortState.direction === \"desc\") sorted.reverse();\n return sorted;\n }, [filteredData, sortState, columns, getCellValue]);\n\n // ---- Pagination ----\n const pageIndex = paginationState?.pageIndex ?? 0;\n const pageSize = paginationState?.pageSize ?? 10;\n const totalRows = sortedData.length;\n const totalPages = Math.max(1, Math.ceil(totalRows / pageSize));\n\n const paginatedData = React.useMemo(() => {\n if (!pagination) return sortedData;\n const start = pageIndex * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, pagination, pageIndex, pageSize]);\n\n // ---- Selection helpers ----\n const allRowIds = React.useMemo(\n () => new Set(paginatedData.map((row, i) => getRowIdFn(row, i))),\n [paginatedData, getRowIdFn]\n );\n\n const allSelected =\n selectable &&\n allRowIds.size > 0 &&\n selectedRowIds != null &&\n [...allRowIds].every((id) => selectedRowIds.has(id));\n\n const someSelected =\n selectable &&\n !allSelected &&\n selectedRowIds != null &&\n [...allRowIds].some((id) => selectedRowIds.has(id));\n\n const handleSelectAll = React.useCallback(() => {\n if (!onSelectionChange || !selectedRowIds) return;\n if (allSelected) {\n const next = new Set(selectedRowIds);\n allRowIds.forEach((id) => next.delete(id));\n onSelectionChange(next);\n } else {\n const next = new Set(selectedRowIds);\n allRowIds.forEach((id) => next.add(id));\n onSelectionChange(next);\n }\n }, [allSelected, allRowIds, selectedRowIds, onSelectionChange]);\n\n const handleSelectRow = React.useCallback(\n (rowId: string) => {\n if (!onSelectionChange || !selectedRowIds) return;\n const next = new Set(selectedRowIds);\n if (next.has(rowId)) {\n next.delete(rowId);\n } else {\n next.add(rowId);\n }\n onSelectionChange(next);\n },\n [selectedRowIds, onSelectionChange]\n );\n\n // ---- Sort handler ----\n const handleSort = React.useCallback(\n (columnId: string) => {\n if (!onSortChange) return;\n if (sortState?.columnId === columnId) {\n const nextDirection =\n sortState.direction === \"asc\"\n ? \"desc\"\n : sortState.direction === \"desc\"\n ? null\n : \"asc\";\n onSortChange({ columnId, direction: nextDirection });\n } else {\n onSortChange({ columnId, direction: \"asc\" });\n }\n },\n [sortState, onSortChange]\n );\n\n // ---- Page helpers ----\n const setPage = React.useCallback(\n (page: number) => {\n onPaginationChange?.({ pageIndex: page, pageSize });\n },\n [onPaginationChange, pageSize]\n );\n\n const setPageSize = React.useCallback(\n (size: number) => {\n onPaginationChange?.({ pageIndex: 0, pageSize: size });\n },\n [onPaginationChange]\n );\n\n // ---- Visible page buttons ----\n const pageButtons = React.useMemo(() => {\n const maxVisible = 5;\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i);\n }\n const half = Math.floor(maxVisible / 2);\n let start = Math.max(0, pageIndex - half);\n const end = Math.min(totalPages, start + maxVisible);\n if (end - start < maxVisible) {\n start = Math.max(0, end - maxVisible);\n }\n return Array.from({ length: end - start }, (_, i) => start + i);\n }, [totalPages, pageIndex]);\n\n // ---- Alignment helper ----\n const alignClass = (align?: \"left\" | \"center\" | \"right\") => {\n if (align === \"center\") return \"text-center\";\n if (align === \"right\") return \"text-right\";\n return \"text-left\";\n };\n\n // ---- Checkbox styles ----\n const checkboxStyle: React.CSSProperties = {\n appearance: \"none\",\n width: 16,\n height: 16,\n borderRadius: 3,\n border: `1.5px solid ${glassTokens.cardBorder}`,\n background: glassTokens.cardBg,\n cursor: \"pointer\",\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n };\n\n const checkboxCheckedStyle: React.CSSProperties = {\n ...checkboxStyle,\n background: colorTokens.accent.primary,\n borderColor: colorTokens.accent.primary,\n };\n\n const showFilter = globalFilter !== undefined;\n const isEmpty = !loading && paginatedData.length === 0;\n\n return (\n <GlassPanel\n ref={ref}\n elevation=\"hud\"\n className={cn(\"flex flex-col\", className)}\n style={style}\n disableAnimations={disableAnimations}\n >\n {/* ---- Filter toolbar ---- */}\n {showFilter && (\n <div\n className=\"flex items-center gap-2 px-3 py-2 border-b\"\n style={{ borderColor: glassTokens.cardBorder }}\n >\n <Search\n className=\"h-4 w-4 shrink-0\"\n style={{ color: colorTokens.text.soft }}\n />\n <input\n type=\"text\"\n role=\"searchbox\"\n aria-label=\"Filter table\"\n placeholder=\"Filter...\"\n value={globalFilter ?? \"\"}\n onChange={(e) => onGlobalFilterChange?.(e.target.value)}\n className=\"flex-1 bg-transparent outline-none text-sm placeholder:opacity-50\"\n style={{ color: colorTokens.text.primary }}\n />\n </div>\n )}\n\n {/* ---- Table container ---- */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr\n style={{\n background: glassTokens.headerGradient,\n borderBottom: `1px solid ${glassTokens.cardBorder}`,\n }}\n >\n {/* Selection header */}\n {selectable && (\n <th\n scope=\"col\"\n className={cn(\n headerCellVariants({ variant }),\n \"w-[40px] text-center\"\n )}\n >\n <input\n type=\"checkbox\"\n aria-label=\"Select all rows\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected;\n }}\n onChange={handleSelectAll}\n style={allSelected ? checkboxCheckedStyle : checkboxStyle}\n />\n </th>\n )}\n\n {/* Column headers */}\n {columns.map((col) => {\n const isSortable = col.sortable && onSortChange;\n const currentDirection =\n sortState?.columnId === col.id\n ? sortState.direction\n : null;\n const ariaSortValue = isSortable\n ? currentDirection === \"asc\"\n ? (\"ascending\" as const)\n : currentDirection === \"desc\"\n ? (\"descending\" as const)\n : (\"none\" as const)\n : undefined;\n\n return (\n <th\n key={col.id}\n scope=\"col\"\n aria-sort={ariaSortValue}\n className={cn(\n headerCellVariants({ variant }),\n alignClass(col.align)\n )}\n style={{\n width: col.width,\n color: colorTokens.text.soft,\n }}\n >\n {isSortable ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 hover:opacity-80 transition-opacity\"\n aria-label={`Sort by ${col.header}`}\n onClick={() => handleSort(col.id)}\n >\n <span>{col.header}</span>\n <SortIcon\n direction={currentDirection}\n accentColor={colorTokens.accent.primary}\n />\n </button>\n ) : (\n col.header\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n\n <tbody>\n {/* Loading state */}\n {loading &&\n Array.from({ length: pageSize }, (_, i) => (\n <SkeletonRow\n key={`skeleton-${i}`}\n colCount={columns.length + (selectable ? 1 : 0)}\n variant={variant}\n glassTokens={glassTokens}\n />\n ))}\n\n {/* Empty state */}\n {isEmpty && (\n <tr>\n <td\n colSpan={columns.length + (selectable ? 1 : 0)}\n className=\"text-center py-12\"\n >\n {emptyState ?? (\n <div style={{ color: colorTokens.text.soft }}>\n <p className=\"text-sm\">No data to display</p>\n </div>\n )}\n </td>\n </tr>\n )}\n\n {/* Data rows */}\n {!loading && (\n <AnimatePresence mode=\"popLayout\">\n {paginatedData.map((row, rowIndex) => {\n const rowId = getRowIdFn(row, rowIndex);\n const isSelected = selectedRowIds?.has(rowId) ?? false;\n const isClickable = !!onRowClick;\n\n return (\n <motion.tr\n key={rowId}\n initial={shouldAnimate ? { opacity: 0 } : false}\n animate={{ opacity: 1 }}\n exit={shouldAnimate ? { opacity: 0 } : undefined}\n transition={{ duration: motionTokens.fast.duration }}\n className={cn(\n \"border-b transition-colors\",\n isClickable && \"cursor-pointer\"\n )}\n style={{\n borderColor: glassTokens.cardBorder,\n background: isSelected\n ? `${colorTokens.accent.primary}15`\n : striped && rowIndex % 2 === 1\n ? `${glassTokens.hoverBg}40`\n : undefined,\n }}\n onMouseEnter={(e) => {\n if (hoverable) {\n (\n e.currentTarget as HTMLElement\n ).style.background = isSelected\n ? `${colorTokens.accent.primary}25`\n : glassTokens.hoverBg;\n }\n }}\n onMouseLeave={(e) => {\n if (hoverable) {\n (\n e.currentTarget as HTMLElement\n ).style.background = isSelected\n ? `${colorTokens.accent.primary}15`\n : striped && rowIndex % 2 === 1\n ? `${glassTokens.hoverBg}40`\n : \"\";\n }\n }}\n onClick={() => onRowClick?.(row)}\n >\n {/* Selection cell */}\n {selectable && (\n <td\n className={cn(\n cellVariants({ variant }),\n \"text-center\"\n )}\n >\n <input\n type=\"checkbox\"\n aria-label={`Select row ${rowId}`}\n checked={isSelected}\n onChange={(e) => {\n e.stopPropagation();\n handleSelectRow(rowId);\n }}\n onClick={(e) => e.stopPropagation()}\n style={\n isSelected\n ? checkboxCheckedStyle\n : checkboxStyle\n }\n />\n </td>\n )}\n\n {/* Data cells */}\n {columns.map((col) => {\n const rawValue = getCellValue(row, col);\n const rendered = col.cell\n ? col.cell(rawValue, row)\n : rawValue != null\n ? String(rawValue)\n : \"\";\n\n return (\n <td\n key={col.id}\n className={cn(\n cellVariants({ variant }),\n alignClass(col.align)\n )}\n style={{\n color: colorTokens.text.primary,\n width: col.width,\n }}\n >\n {rendered}\n </td>\n );\n })}\n </motion.tr>\n );\n })}\n </AnimatePresence>\n )}\n </tbody>\n </table>\n </div>\n\n {/* ---- Pagination footer ---- */}\n {pagination && (\n <div\n className=\"flex items-center justify-between gap-4 px-3 py-2 border-t\"\n style={{ borderColor: glassTokens.cardBorder }}\n >\n {/* Page size selector */}\n <div className=\"flex items-center gap-2\">\n <span\n className=\"text-xs whitespace-nowrap\"\n style={{ color: colorTokens.text.soft }}\n >\n Rows per page\n </span>\n <Select\n value={String(pageSize)}\n onValueChange={(v) => setPageSize(Number(v))}\n >\n <SelectTrigger size=\"sm\" className=\"w-[70px] h-7 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((opt) => (\n <SelectItem key={opt} value={String(opt)}>\n {opt}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Page info */}\n <span\n className=\"text-xs whitespace-nowrap\"\n style={{ color: colorTokens.text.soft }}\n >\n {totalRows === 0\n ? \"0 results\"\n : `${pageIndex * pageSize + 1}-${Math.min((pageIndex + 1) * pageSize, totalRows)} of ${totalRows}`}\n </span>\n\n {/* Page buttons */}\n <div className=\"flex items-center gap-1\">\n <GlowButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n disabled={pageIndex === 0}\n aria-label=\"Go to first page\"\n onClick={() => setPage(0)}\n disableAnimations={disableAnimations}\n >\n <ChevronsLeft className=\"h-3.5 w-3.5\" />\n </GlowButton>\n <GlowButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n disabled={pageIndex === 0}\n aria-label=\"Go to previous page\"\n onClick={() => setPage(pageIndex - 1)}\n disableAnimations={disableAnimations}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </GlowButton>\n\n {pageButtons.map((p) => (\n <GlowButton\n key={p}\n variant={p === pageIndex ? \"default\" : \"ghost\"}\n size=\"sm\"\n className=\"h-7 w-7 p-0 text-xs\"\n aria-label={`Go to page ${p + 1}`}\n aria-current={p === pageIndex ? \"page\" : undefined}\n onClick={() => setPage(p)}\n disableAnimations={disableAnimations}\n >\n {p + 1}\n </GlowButton>\n ))}\n\n <GlowButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n disabled={pageIndex >= totalPages - 1}\n aria-label=\"Go to next page\"\n onClick={() => setPage(pageIndex + 1)}\n disableAnimations={disableAnimations}\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </GlowButton>\n <GlowButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n disabled={pageIndex >= totalPages - 1}\n aria-label=\"Go to last page\"\n onClick={() => setPage(totalPages - 1)}\n disableAnimations={disableAnimations}\n >\n <ChevronsRight className=\"h-3.5 w-3.5\" />\n </GlowButton>\n </div>\n </div>\n )}\n </GlassPanel>\n );\n}\n\nexport const GlassTable = React.forwardRef(GlassTableInner) as <T>(\n props: GlassTableProps<T> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement;\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { Loader2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useGlassTokens } from \"../../../theme\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface TimelineEvent {\n id: string;\n timestamp: Date | string;\n title: string;\n description?: string;\n type?: \"info\" | \"success\" | \"warning\" | \"error\" | \"system\";\n icon?: React.ReactNode;\n metadata?: Record<string, string>;\n}\n\nexport interface GlassTimelineProps {\n events: TimelineEvent[];\n layout?: \"alternating\" | \"left\" | \"right\";\n showTimestamps?: boolean;\n animate?: boolean;\n onLoadMore?: () => void;\n loading?: boolean;\n className?: string;\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst TYPE_COLORS: Record<NonNullable<TimelineEvent[\"type\"]>, string> = {\n info: \"var(--glia-color-accent,#22D3EE)\",\n success: \"hsl(160 60% 45%)\",\n warning: \"hsl(45 93% 47%)\",\n error: \"hsl(0 72% 51%)\",\n system: \"hsl(270 60% 60%)\",\n};\n\n// ============================================================================\n// TIMELINE EVENT CARD\n// ============================================================================\n\ninterface TimelineEventCardProps {\n event: TimelineEvent;\n index: number;\n side: \"left\" | \"right\";\n showTimestamp: boolean;\n shouldAnimate: boolean;\n glassTokens: ReturnType<typeof useGlassTokens>;\n}\n\nfunction TimelineEventCard({\n event,\n index,\n side,\n showTimestamp,\n shouldAnimate,\n glassTokens,\n}: TimelineEventCardProps) {\n const dotColor = TYPE_COLORS[event.type ?? \"info\"];\n const formattedTime =\n typeof event.timestamp === \"string\"\n ? event.timestamp\n : event.timestamp.toLocaleString();\n\n return (\n <motion.div\n className={cn(\n \"relative flex items-start gap-4\",\n side === \"right\" && \"flex-row-reverse\",\n )}\n initial={shouldAnimate ? { opacity: 0, y: 20 } : false}\n animate={{ opacity: 1, y: 0 }}\n transition={\n shouldAnimate\n ? { delay: index * 0.08, duration: 0.35, ease: \"easeOut\" }\n : { duration: 0 }\n }\n >\n {/* Dot */}\n <div className=\"relative flex-shrink-0 flex items-center justify-center w-3 h-3 mt-1.5 z-10\">\n {event.icon ?? (\n <span\n className=\"block w-3 h-3 rounded-full\"\n style={{\n background: dotColor,\n boxShadow: `0 0 6px ${dotColor}, 0 0 12px ${dotColor}`,\n }}\n />\n )}\n </div>\n\n {/* Card */}\n <div\n className=\"flex-1 rounded-lg p-3 min-w-0\"\n style={{\n background: glassTokens.cardBg,\n border: `1px solid ${glassTokens.cardBorder}`,\n }}\n >\n {showTimestamp && (\n <time className=\"block text-[10px] font-mono uppercase tracking-[0.12em] text-[var(--glia-color-text-soft,#64748B)] mb-1\">\n {formattedTime}\n </time>\n )}\n <h4 className=\"text-sm font-semibold text-[var(--glia-color-text-primary,#CBD5E1)] leading-snug\">\n {event.title}\n </h4>\n {event.description && (\n <p className=\"mt-1 text-xs text-[var(--glia-color-text-soft,#64748B)] leading-relaxed\">\n {event.description}\n </p>\n )}\n {event.metadata && Object.keys(event.metadata).length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-x-3 gap-y-1\">\n {Object.entries(event.metadata).map(([key, value]) => (\n <span\n key={key}\n className=\"text-[10px] font-mono text-[var(--glia-color-text-soft,#64748B)]\"\n >\n <span className=\"uppercase tracking-[0.08em] opacity-60\">{key}:</span>{\" \"}\n {value}\n </span>\n ))}\n </div>\n )}\n </div>\n </motion.div>\n );\n}\n\n// ============================================================================\n// GLASS TIMELINE\n// ============================================================================\n\nexport function GlassTimeline({\n events,\n layout = \"left\",\n showTimestamps = true,\n animate = true,\n onLoadMore,\n loading = false,\n className,\n}: GlassTimelineProps) {\n const glassTokens = useGlassTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = animate && !reducedMotion;\n\n const loadMoreRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!onLoadMore || loading) return;\n const el = loadMoreRef.current;\n if (!el) return;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) onLoadMore();\n },\n { threshold: 0.5 },\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, [onLoadMore, loading]);\n\n return (\n <div\n className={cn(\"relative\", className)}\n role=\"list\"\n aria-label=\"Timeline\"\n >\n {/* Vertical line */}\n <div\n className={cn(\n \"absolute top-0 bottom-0 w-px\",\n layout === \"left\" && \"left-[5px]\",\n layout === \"right\" && \"right-[5px]\",\n layout === \"alternating\" && \"left-1/2 -translate-x-px\",\n )}\n style={{\n background: `linear-gradient(to bottom, transparent, ${glassTokens.activeBorder ?? \"var(--glia-color-accent,#22D3EE)\"} 10%, ${glassTokens.activeBorder ?? \"var(--glia-color-accent,#22D3EE)\"} 90%, transparent)`,\n opacity: 0.3,\n }}\n />\n\n {/* Events */}\n <div className=\"relative flex flex-col gap-4\">\n {events.map((event, index) => {\n let side: \"left\" | \"right\" = \"left\";\n if (layout === \"right\") side = \"right\";\n if (layout === \"alternating\") side = index % 2 === 0 ? \"left\" : \"right\";\n\n if (layout === \"alternating\") {\n return (\n <div\n key={event.id}\n role=\"listitem\"\n className=\"grid items-start\"\n style={{ gridTemplateColumns: \"1fr auto 1fr\" }}\n >\n {side === \"left\" ? (\n <>\n <div className=\"pr-4\">\n <TimelineEventCard\n event={event}\n index={index}\n side=\"left\"\n showTimestamp={showTimestamps}\n shouldAnimate={shouldAnimate}\n glassTokens={glassTokens}\n />\n </div>\n <div className=\"relative flex items-start justify-center w-3 mt-1.5\">\n <span\n className=\"block w-3 h-3 rounded-full z-10\"\n style={{\n background: TYPE_COLORS[event.type ?? \"info\"],\n boxShadow: `0 0 6px ${TYPE_COLORS[event.type ?? \"info\"]}`,\n }}\n />\n </div>\n <div />\n </>\n ) : (\n <>\n <div />\n <div className=\"relative flex items-start justify-center w-3 mt-1.5\">\n <span\n className=\"block w-3 h-3 rounded-full z-10\"\n style={{\n background: TYPE_COLORS[event.type ?? \"info\"],\n boxShadow: `0 0 6px ${TYPE_COLORS[event.type ?? \"info\"]}`,\n }}\n />\n </div>\n <div className=\"pl-4\">\n <TimelineEventCard\n event={event}\n index={index}\n side=\"right\"\n showTimestamp={showTimestamps}\n shouldAnimate={shouldAnimate}\n glassTokens={glassTokens}\n />\n </div>\n </>\n )}\n </div>\n );\n }\n\n return (\n <div\n key={event.id}\n role=\"listitem\"\n className={cn(\n layout === \"right\" && \"flex flex-row-reverse\",\n )}\n >\n <TimelineEventCard\n event={event}\n index={index}\n side={side}\n showTimestamp={showTimestamps}\n shouldAnimate={shouldAnimate}\n glassTokens={glassTokens}\n />\n </div>\n );\n })}\n </div>\n\n {/* Load more / loading */}\n <div ref={loadMoreRef} className=\"flex justify-center py-4\">\n {loading && (\n <Loader2\n className=\"h-5 w-5 animate-spin text-[var(--glia-color-text-soft,#64748B)]\"\n aria-label=\"Loading more events\"\n />\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * ChatBubble — Renders a single chat message with role-based styling.\n *\n * Supports text, code blocks, and tool calls within a single message.\n * Uses StreamingText for messages that are currently streaming.\n *\n * @example\n * <ChatBubble\n * message={{\n * id: '1',\n * role: 'assistant',\n * content: [{ type: 'text', text: 'Hello!' }],\n * }}\n * />\n */\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport {\n useGlassTokens,\n useColorTokens,\n} from \"../../../theme/UiThemeProvider\";\nimport { StreamingText } from \"../../atoms/StreamingText\";\nimport { CodeBlock } from \"../../atoms/CodeBlock\";\nimport { ToolCallCard } from \"../../molecules/ToolCallCard\";\nimport type { ChatMessage, MessageContentPart } from \"./types\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ChatBubbleProps {\n /** The message to render */\n message: ChatMessage;\n /** Whether to show the avatar. Default: true */\n showAvatar?: boolean;\n /** Whether to show the timestamp. Default: false */\n showTimestamp?: boolean;\n /** Whether to show the sender name. Default: true for non-user messages */\n showSenderName?: boolean;\n /** Custom render for text content (e.g., markdown renderer) */\n renderText?: (text: string) => React.ReactNode;\n /** Disable animations */\n disableAnimations?: boolean;\n /** Additional className */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// ICONS (inline SVG, 16x16)\n// ============================================================================\n\nfunction SendIcon({ color }: { color: string }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{ flexShrink: 0 }}\n >\n <path\n d=\"M8 12V4M8 4L4 8M8 4l4 4\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nconst DEFAULT_AVATARS: Record<string, string> = {\n user: \"\\u{1F464}\",\n assistant: \"\\u{1F916}\",\n system: \"\\u2699\\uFE0F\",\n tool: \"\\u26A1\",\n};\n\nfunction formatTimestamp(timestamp: string | Date): string {\n const date =\n typeof timestamp === \"string\" ? new Date(timestamp) : timestamp;\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMin = Math.floor(diffMs / 60_000);\n\n if (diffMin < 1) return \"just now\";\n if (diffMin < 60) return `${diffMin}m ago`;\n\n const diffHrs = Math.floor(diffMin / 60);\n if (diffHrs < 24) return `${diffHrs}h ago`;\n\n // Fallback to HH:MM\n return date.toLocaleTimeString(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n}\n\n// ============================================================================\n// AVATAR\n// ============================================================================\n\nfunction Avatar({\n avatar,\n role,\n bgColor,\n textColor,\n}: {\n avatar?: string;\n role: string;\n bgColor: string;\n textColor: string;\n}) {\n const isUrl = avatar?.startsWith(\"http\");\n const display = avatar ?? DEFAULT_AVATARS[role] ?? DEFAULT_AVATARS.assistant;\n\n if (isUrl) {\n return (\n <img\n src={avatar}\n alt={`${role} avatar`}\n style={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n );\n }\n\n return (\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n background: bgColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n fontSize: display.length <= 2 ? 14 : 12,\n color: textColor,\n fontFamily: \"monospace\",\n userSelect: \"none\",\n }}\n >\n {display}\n </div>\n );\n}\n\n// ============================================================================\n// CONTENT PART RENDERER\n// ============================================================================\n\nfunction ContentPart({\n part,\n isStreaming,\n isLastTextPart,\n renderText,\n disableAnimations,\n}: {\n part: MessageContentPart;\n isStreaming: boolean;\n isLastTextPart: boolean;\n renderText?: (text: string) => React.ReactNode;\n disableAnimations: boolean;\n}) {\n switch (part.type) {\n case \"text\": {\n // If this message is streaming and this is the last text part, animate\n if (isStreaming && isLastTextPart) {\n return (\n <StreamingText\n text={part.text}\n mode=\"character\"\n speed={20}\n disableAnimations={disableAnimations}\n renderText={renderText}\n />\n );\n }\n\n if (renderText) {\n return <>{renderText(part.text)}</>;\n }\n\n return (\n <span style={{ whiteSpace: \"pre-wrap\", wordBreak: \"break-word\" }}>\n {part.text}\n </span>\n );\n }\n\n case \"code\": {\n return (\n <CodeBlock\n language={part.code.language}\n code={part.code.code}\n title={part.code.title}\n showCopyButton\n />\n );\n }\n\n case \"tool_call\": {\n const tc = part.toolCall;\n return (\n <ToolCallCard\n id={tc.id}\n name={tc.name}\n args={tc.args}\n status={tc.status}\n result={tc.result}\n error={tc.error}\n duration={tc.duration}\n disableAnimations={disableAnimations}\n />\n );\n }\n }\n}\n\n// ============================================================================\n// SYSTEM MESSAGE\n// ============================================================================\n\nfunction SystemMessage({\n message,\n textColor,\n borderColor,\n renderText,\n}: {\n message: ChatMessage;\n textColor: string;\n borderColor: string;\n renderText?: (text: string) => React.ReactNode;\n}) {\n const textParts = message.content.filter((p) => p.type === \"text\");\n const text = textParts.map((p) => (p as { type: \"text\"; text: string }).text).join(\" \");\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 12,\n padding: \"8px 0\",\n }}\n >\n <div\n style={{\n flex: 1,\n height: 1,\n background: borderColor,\n }}\n />\n <span\n style={{\n color: textColor,\n fontSize: 12,\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n }}\n >\n {message.senderName ?? \"System\"}: {renderText ? renderText(text) : text}\n </span>\n <div\n style={{\n flex: 1,\n height: 1,\n background: borderColor,\n }}\n />\n </div>\n );\n}\n\n// ============================================================================\n// CHAT BUBBLE\n// ============================================================================\n\nexport const ChatBubble = React.forwardRef<HTMLDivElement, ChatBubbleProps>(\n function ChatBubble(\n {\n message,\n showAvatar = true,\n showTimestamp = false,\n showSenderName: showSenderNameProp,\n renderText,\n disableAnimations = false,\n className,\n style,\n },\n ref\n ) {\n const glass = useGlassTokens();\n const colors = useColorTokens();\n\n const { role, content, isStreaming, avatar, senderName, timestamp } =\n message;\n\n // Default: show sender name for non-user messages\n const showSenderName = showSenderNameProp ?? role !== \"user\";\n\n // ---- System messages render differently ----\n if (role === \"system\") {\n return (\n <div ref={ref} className={className} style={style}>\n <SystemMessage\n message={message}\n textColor={colors.text.soft}\n borderColor={glass.cardBorder}\n renderText={renderText}\n />\n </div>\n );\n }\n\n // ---- Determine alignment and styling ----\n const isUser = role === \"user\";\n\n const bubbleBg = isUser\n ? `${colors.accent.primary}14` // rgba(accent, ~8%)\n : glass.cardBg;\n\n const bubbleBorder = isUser\n ? `${colors.accent.primary}33` // rgba(accent, ~20%)\n : glass.cardBorder;\n\n // Find last text part index for streaming cursor placement\n let lastTextPartIndex = -1;\n for (let i = content.length - 1; i >= 0; i--) {\n if (content[i].type === \"text\") {\n lastTextPartIndex = i;\n break;\n }\n }\n\n // ---- Default display name ----\n const displayName =\n senderName ??\n (role === \"assistant\"\n ? \"Assistant\"\n : role === \"tool\"\n ? \"Tool\"\n : undefined);\n\n return (\n <div\n ref={ref}\n className={cn(\"flex gap-2.5\", className)}\n style={{\n flexDirection: isUser ? \"row-reverse\" : \"row\",\n alignItems: \"flex-start\",\n ...style,\n }}\n >\n {/* Avatar */}\n {showAvatar && !isUser && (\n <Avatar\n avatar={avatar}\n role={role}\n bgColor={glass.cardBg}\n textColor={colors.text.muted}\n />\n )}\n\n {/* Bubble container */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n maxWidth: \"85%\",\n minWidth: 0,\n alignItems: isUser ? \"flex-end\" : \"flex-start\",\n }}\n >\n {/* Sender name */}\n {showSenderName && displayName && (\n <span\n style={{\n fontSize: 11,\n fontFamily: \"monospace\",\n color: colors.text.soft,\n paddingLeft: isUser ? 0 : 2,\n paddingRight: isUser ? 2 : 0,\n }}\n >\n {displayName}\n </span>\n )}\n\n {/* Message bubble */}\n <div\n style={{\n background: bubbleBg,\n border: `1px solid ${bubbleBorder}`,\n borderRadius: isUser ? \"16px 16px 4px 16px\" : \"16px 16px 16px 4px\",\n padding: \"10px 14px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n minWidth: 0,\n }}\n >\n {content.map((part, i) => (\n <ContentPart\n key={i}\n part={part}\n isStreaming={!!isStreaming}\n isLastTextPart={i === lastTextPartIndex}\n renderText={renderText}\n disableAnimations={disableAnimations}\n />\n ))}\n </div>\n\n {/* Timestamp */}\n {showTimestamp && timestamp && (\n <span\n style={{\n fontSize: 10,\n fontFamily: \"monospace\",\n color: colors.text.soft,\n paddingLeft: isUser ? 0 : 2,\n paddingRight: isUser ? 2 : 0,\n }}\n >\n {formatTimestamp(timestamp)}\n </span>\n )}\n </div>\n </div>\n );\n }\n);\n\nChatBubble.displayName = \"ChatBubble\";\n","\"use client\";\n\n/**\n * MessageThread — Scrollable container for a list of chat messages.\n *\n * Automatically scrolls to bottom when new messages arrive.\n *\n * @example\n * <MessageThread\n * messages={messages}\n * onScrollToTop={() => loadMore()}\n * />\n */\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport { useColorTokens, useGlassTokens } from \"../../../theme/UiThemeProvider\";\nimport { ChatBubble } from \"./ChatBubble\";\nimport type { ChatMessage } from \"./types\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface MessageThreadProps {\n /** Array of messages to display */\n messages: ChatMessage[];\n /** Called when user scrolls to top (for loading history) */\n onScrollToTop?: () => void;\n /** Whether more messages are being loaded */\n isLoadingMore?: boolean;\n /** Auto-scroll to bottom on new messages. Default: true */\n autoScroll?: boolean;\n /** Custom render for text content (passed to ChatBubble) */\n renderText?: (text: string) => React.ReactNode;\n /** Show avatars. Default: true */\n showAvatars?: boolean;\n /** Show timestamps. Default: false */\n showTimestamps?: boolean;\n /** Disable animations */\n disableAnimations?: boolean;\n /** Additional className for the scroll container */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// LOADING SPINNER\n// ============================================================================\n\nfunction LoadingSpinner({ color }: { color: string }) {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: \"12px 0\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n className=\"animate-spin\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"40\"\n strokeDashoffset=\"10\"\n opacity={0.6}\n />\n </svg>\n </div>\n );\n}\n\n// ============================================================================\n// SCROLL-TO-TOP DETECTION THRESHOLD (px)\n// ============================================================================\n\nconst SCROLL_TOP_THRESHOLD = 32;\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const MessageThread = React.forwardRef<HTMLDivElement, MessageThreadProps>(\n function MessageThread(\n {\n messages,\n onScrollToTop,\n isLoadingMore = false,\n autoScroll = true,\n renderText,\n showAvatars = true,\n showTimestamps = false,\n disableAnimations = false,\n className,\n style,\n },\n ref\n ) {\n const colors = useColorTokens();\n const glass = useGlassTokens();\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const bottomRef = React.useRef<HTMLDivElement>(null);\n const userHasScrolledUp = React.useRef(false);\n\n // Expose the scroll container via forwarded ref\n React.useImperativeHandle(ref, () => scrollRef.current!);\n\n // Auto-scroll to bottom when messages change\n React.useEffect(() => {\n if (!autoScroll || userHasScrolledUp.current) return;\n\n bottomRef.current?.scrollIntoView({ behavior: \"instant\" });\n }, [messages.length, autoScroll]);\n\n // Handle scroll events\n const handleScroll = React.useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n // Detect if user scrolled to top\n if (el.scrollTop <= SCROLL_TOP_THRESHOLD && onScrollToTop) {\n onScrollToTop();\n }\n\n // Track if user has scrolled away from bottom\n const distanceFromBottom =\n el.scrollHeight - el.scrollTop - el.clientHeight;\n userHasScrolledUp.current = distanceFromBottom > 80;\n }, [onScrollToTop]);\n\n return (\n <div\n ref={scrollRef}\n onScroll={handleScroll}\n role=\"log\"\n aria-live=\"polite\"\n aria-label=\"Message history\"\n className={cn(\"flex-1 min-h-0\", className)}\n style={{\n overflowY: \"auto\",\n padding: \"16px 16px 8px\",\n // Styled scrollbar\n scrollbarWidth: \"thin\",\n scrollbarColor: `${glass.cardBorder} transparent`,\n ...style,\n }}\n >\n {/* Loading spinner at top */}\n {isLoadingMore && <LoadingSpinner color={colors.text.soft} />}\n\n {/* Messages */}\n {messages.map((message, i) => {\n const prevMessage = i > 0 ? messages[i - 1] : null;\n const sameRole = prevMessage?.role === message.role;\n\n return (\n <div\n key={message.id}\n style={{\n marginTop: i === 0 ? 0 : sameRole ? 12 : 20,\n }}\n >\n <ChatBubble\n message={message}\n showAvatar={showAvatars && !sameRole}\n showTimestamp={showTimestamps}\n renderText={renderText}\n disableAnimations={disableAnimations}\n />\n </div>\n );\n })}\n\n {/* Scroll anchor */}\n <div ref={bottomRef} style={{ height: 1 }} />\n </div>\n );\n }\n);\n\nMessageThread.displayName = \"MessageThread\";\n","\"use client\";\n\n/**\n * ChatInput — Composable text input for the chat interface.\n *\n * Features auto-resizing textarea, submit on Enter, and optional\n * toolbar for attachments/actions.\n */\n\nimport * as React from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport {\n useGlassTokens,\n useColorTokens,\n} from \"../../../theme/UiThemeProvider\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ChatInputProps {\n /** Called when user submits a message */\n onSubmit: (text: string) => void;\n /** Placeholder text. Default: \"Type a message...\" */\n placeholder?: string;\n /** Whether input is disabled (e.g., while streaming) */\n disabled?: boolean;\n /** Whether to show the submit button. Default: true */\n showSubmitButton?: boolean;\n /** Maximum rows for auto-resize. Default: 5 */\n maxRows?: number;\n /** Additional className */\n className?: string;\n /** Additional styles */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nfunction ArrowUpIcon({ color }: { color: string }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n style={{ flexShrink: 0 }}\n >\n <path\n d=\"M8 12V4M8 4L4 8M8 4l4 4\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ChatInput = React.forwardRef<HTMLTextAreaElement, ChatInputProps>(\n function ChatInput(\n {\n onSubmit,\n placeholder = \"Type a message...\",\n disabled = false,\n showSubmitButton = true,\n maxRows = 5,\n className,\n style,\n },\n ref\n ) {\n const glass = useGlassTokens();\n const colors = useColorTokens();\n const [value, setValue] = React.useState(\"\");\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n // Expose ref\n React.useImperativeHandle(ref, () => textareaRef.current!);\n\n const isEmpty = value.trim().length === 0;\n\n // Auto-resize textarea\n const adjustHeight = React.useCallback(() => {\n const el = textareaRef.current;\n if (!el) return;\n\n el.style.height = \"auto\";\n\n // Compute single-row height from lineHeight (approx 20px)\n const lineHeight = 20;\n const maxHeight = lineHeight * maxRows + 16; // +padding\n const newHeight = Math.min(el.scrollHeight, maxHeight);\n\n el.style.height = `${newHeight}px`;\n }, [maxRows]);\n\n React.useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n const handleSubmit = React.useCallback(() => {\n const trimmed = value.trim();\n if (!trimmed || disabled) return;\n\n onSubmit(trimmed);\n setValue(\"\");\n\n // Reset height after clearing\n requestAnimationFrame(() => {\n const el = textareaRef.current;\n if (el) {\n el.style.height = \"auto\";\n }\n });\n }, [value, disabled, onSubmit]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n return (\n <div\n className={cn(\"flex items-end gap-2\", className)}\n style={{\n background: glass.cardBg,\n border: `1px solid ${glass.cardBorder}`,\n borderRadius: 12,\n padding: \"8px 12px\",\n ...style,\n }}\n >\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n aria-label=\"Message input\"\n rows={1}\n style={{\n flex: 1,\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n resize: \"none\",\n color: colors.text.primary,\n fontSize: 14,\n fontFamily: \"inherit\",\n lineHeight: \"20px\",\n padding: \"4px 0\",\n minHeight: 28,\n opacity: disabled ? 0.5 : 1,\n }}\n className=\"placeholder:text-[var(--glia-color-text-soft,#64748B)]\"\n />\n\n {showSubmitButton && (\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={isEmpty || disabled}\n aria-label=\"Send message\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 28,\n height: 28,\n borderRadius: \"50%\",\n background: isEmpty || disabled\n ? \"transparent\"\n : colors.accent.primary,\n border: `1px solid ${\n isEmpty || disabled ? glass.cardBorder : colors.accent.primary\n }`,\n cursor: isEmpty || disabled ? \"default\" : \"pointer\",\n flexShrink: 0,\n transition: \"background 150ms ease, border-color 150ms ease\",\n opacity: isEmpty || disabled ? 0.4 : 1,\n }}\n >\n <ArrowUpIcon\n color={\n isEmpty || disabled\n ? colors.text.soft\n : \"#000000\"\n }\n />\n </button>\n )}\n </div>\n );\n }\n);\n\nChatInput.displayName = \"ChatInput\";\n","\"use client\";\n\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { useGlassTokens, useElevationTokens, useMotionTokens } from \"../../../theme\";\nimport { NoiseOverlay } from \"../Glass/NoiseOverlay\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n description?: string;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n showCloseButton?: boolean;\n className?: string;\n}\n\n// ============================================================================\n// SIZE MAP\n// ============================================================================\n\nconst sizeClasses: Record<NonNullable<GlassModalProps[\"size\"]>, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n};\n\n// ============================================================================\n// GLASS MODAL\n// ============================================================================\n\nexport function GlassModal({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n size = \"md\",\n showCloseButton = true,\n className,\n}: GlassModalProps) {\n const glassTokens = useGlassTokens();\n const elevationTokens = useElevationTokens();\n const motionTokens = useMotionTokens();\n const reducedMotion = prefersReducedMotion();\n\n const springTransition = reducedMotion\n ? { duration: 0 }\n : { type: \"spring\" as const, stiffness: 400, damping: 30 };\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <AnimatePresence>\n {open && (\n <Dialog.Portal forceMount>\n {/* Overlay */}\n <Dialog.Overlay asChild>\n <motion.div\n className=\"fixed inset-0 z-50 bg-black/60\"\n style={{ backdropFilter: \"blur(4px)\", WebkitBackdropFilter: \"blur(4px)\" }}\n initial={reducedMotion ? {} : { opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={reducedMotion ? {} : { opacity: 0 }}\n transition={{ duration: reducedMotion ? 0 : 0.2 }}\n />\n </Dialog.Overlay>\n\n {/* Content */}\n <Dialog.Content asChild>\n <motion.div\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)]\",\n sizeClasses[size],\n \"rounded-2xl overflow-hidden\",\n \"focus:outline-none\",\n className,\n )}\n style={{\n x: \"-50%\",\n y: \"-50%\",\n background: \"rgba(2,4,10,0.92)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: glassTokens.panelBorder,\n boxShadow: elevationTokens.modal,\n }}\n initial={reducedMotion ? {} : { opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={reducedMotion ? {} : { opacity: 0, scale: 0.95 }}\n transition={springTransition}\n >\n {/* Noise overlay */}\n <NoiseOverlay preset=\"glass\" opacity={0.03} />\n\n {/* Decorative top gradient border */}\n <div\n className=\"h-[2px] w-full\"\n style={{\n background:\n \"linear-gradient(90deg, #22D3EE 0%, #F43F5E 50%, transparent 100%)\",\n }}\n aria-hidden=\"true\"\n />\n\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"relative z-10 flex items-start justify-between px-6 pt-5 pb-0\">\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Dialog.Title className=\"font-mono text-[10px] uppercase tracking-[0.12em] text-white/90 leading-tight\">\n {title}\n </Dialog.Title>\n )}\n {description && (\n <Dialog.Description className=\"mt-1.5 text-sm text-white/50 leading-relaxed\">\n {description}\n </Dialog.Description>\n )}\n </div>\n {showCloseButton && (\n <Dialog.Close asChild>\n <button\n className=\"relative z-10 ml-4 flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-white/40 transition-all duration-200 hover:text-[#22D3EE] hover:shadow-[0_0_20px_rgba(34,211,238,0.15)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#22D3EE]/50\"\n aria-label=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </Dialog.Close>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className=\"relative z-10 px-6 py-4\">{children}</div>\n\n {/* Footer */}\n {footer && (\n <div\n className=\"relative z-10 flex items-center justify-end gap-2 px-6 pb-5 pt-0\"\n >\n {footer}\n </div>\n )}\n </motion.div>\n </Dialog.Content>\n </Dialog.Portal>\n )}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport {\n LayoutDashboard,\n BarChart3,\n Network,\n Settings,\n Bell,\n User,\n Rocket,\n Plus,\n Download,\n Zap,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn, prefersReducedMotion } from \"../../../lib/utils\";\nimport { useGlassTokens } from \"../../../theme\";\nimport { GlassNavigation } from \"../GlassNavigation/GlassNavigation\";\nimport { GlassDataCard } from \"../../molecules/GlassDataCard/GlassDataCard\";\nimport { GlassTimeline, type TimelineEvent } from \"../GlassTimeline/GlassTimeline\";\nimport { GlassSteps, type GlassStep } from \"../../molecules/GlassSteps/GlassSteps\";\nimport { KPIStat } from \"../../molecules/KPIStat/KPIStat\";\nimport { GlassPanel } from \"../Glass/GlassPanel\";\n\n// ============================================================================\n// DATA\n// ============================================================================\n\nconst NAV_ITEMS = [\n { id: \"dashboard\", label: \"Dashboard\", icon: <LayoutDashboard className=\"h-3.5 w-3.5\" /> },\n { id: \"analytics\", label: \"Analytics\", icon: <BarChart3 className=\"h-3.5 w-3.5\" /> },\n { id: \"clusters\", label: \"Clusters\", icon: <Network className=\"h-3.5 w-3.5\" /> },\n { id: \"settings\", label: \"Settings\", icon: <Settings className=\"h-3.5 w-3.5\" /> },\n];\n\nconst KPI_CARDS = [\n {\n label: \"Revenue\",\n value: \"$127.4K\",\n trend: 8.3,\n variant: \"success\" as const,\n sparklineData: [42, 45, 48, 51, 49, 53, 58, 62, 60, 65, 72, 78],\n },\n {\n label: \"Users\",\n value: \"2,847\",\n trend: 12.1,\n variant: \"accent\" as const,\n sparklineData: [120, 135, 142, 155, 168, 180, 195, 210, 225, 240, 262, 285],\n },\n {\n label: \"Latency\",\n value: \"23ms\",\n trend: -5.2,\n variant: \"default\" as const,\n sparklineData: [32, 30, 28, 27, 26, 25, 24, 23, 24, 23, 22, 23],\n },\n {\n label: \"Uptime\",\n value: \"99.97%\",\n trend: 0.01,\n variant: \"success\" as const,\n sparklineData: [99.9, 99.92, 99.93, 99.95, 99.94, 99.96, 99.95, 99.97, 99.96, 99.97, 99.97, 99.97],\n },\n];\n\nconst TIMELINE_EVENTS: TimelineEvent[] = [\n {\n id: \"evt-1\",\n timestamp: \"2 minutes ago\",\n title: \"Production deploy succeeded\",\n description: \"v2.4.1 rolled out to all regions with zero downtime.\",\n type: \"success\",\n metadata: { version: \"v2.4.1\", regions: \"us-east, eu-west\" },\n },\n {\n id: \"evt-2\",\n timestamp: \"18 minutes ago\",\n title: \"New user signup\",\n description: \"Enterprise account registered from acme-corp.io domain.\",\n type: \"info\",\n metadata: { plan: \"Enterprise\", domain: \"acme-corp.io\" },\n },\n {\n id: \"evt-3\",\n timestamp: \"47 minutes ago\",\n title: \"Security alert resolved\",\n description: \"Rate-limit threshold exceeded on /api/auth endpoint. Auto-mitigated.\",\n type: \"warning\",\n metadata: { endpoint: \"/api/auth\", action: \"rate-limited\" },\n },\n {\n id: \"evt-4\",\n timestamp: \"1 hour ago\",\n title: \"API schema updated\",\n description: \"GraphQL schema v3.2 published with 4 new query fields.\",\n type: \"info\",\n metadata: { schema: \"v3.2\", fields: \"+4\" },\n },\n {\n id: \"evt-5\",\n timestamp: \"2 hours ago\",\n title: \"System health check passed\",\n description: \"All 12 service nodes reporting nominal. Memory and CPU within thresholds.\",\n type: \"success\",\n metadata: { nodes: \"12/12\", status: \"nominal\" },\n },\n];\n\nconst DEPLOY_STEPS: GlassStep[] = [\n { label: \"Build\", description: \"Compile & bundle\" },\n { label: \"Test\", description: \"Run test suite\" },\n { label: \"Stage\", description: \"Staging deploy\" },\n { label: \"Deploy\", description: \"Production push\" },\n];\n\n// ============================================================================\n// ACTION BUTTON\n// ============================================================================\n\nfunction ActionButton({\n icon,\n label,\n glassTokens,\n shouldAnimate,\n index,\n}: {\n icon: React.ReactNode;\n label: string;\n glassTokens: ReturnType<typeof useGlassTokens>;\n shouldAnimate: boolean;\n index: number;\n}) {\n return (\n <motion.button\n type=\"button\"\n className=\"flex items-center gap-2.5 w-full px-3 py-2.5 rounded-lg text-left transition-colors\"\n style={{\n background: glassTokens.cardBg,\n border: `1px solid ${glassTokens.cardBorder}`,\n }}\n whileHover={{\n borderColor: glassTokens.activeBorder,\n boxShadow: `0 0 12px rgba(34,211,238,0.08)`,\n }}\n initial={shouldAnimate ? { opacity: 0, x: -12 } : {}}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.25, delay: index * 0.06 }}\n >\n <span\n className=\"flex items-center justify-center w-7 h-7 rounded-md\"\n style={{\n background: \"rgba(34,211,238,0.06)\",\n border: \"1px solid rgba(34,211,238,0.12)\",\n }}\n >\n {icon}\n </span>\n <span className=\"text-[11px] font-mono uppercase tracking-[0.08em] text-[var(--glia-color-text-primary,#CBD5E1)]\">\n {label}\n </span>\n </motion.button>\n );\n}\n\n// ============================================================================\n// GLASS DASHBOARD\n// ============================================================================\n\nexport interface GlassDashboardProps {\n className?: string;\n}\n\nexport function GlassDashboard({ className }: GlassDashboardProps) {\n const glassTokens = useGlassTokens();\n const reducedMotion = prefersReducedMotion();\n const shouldAnimate = !reducedMotion;\n\n const [activeNav, setActiveNav] = React.useState(\"dashboard\");\n\n const actions = [\n { icon: <Plus className=\"h-3.5 w-3.5 text-cyan-400\" />, label: \"New Cluster\" },\n { icon: <Rocket className=\"h-3.5 w-3.5 text-cyan-400\" />, label: \"Quick Deploy\" },\n { icon: <Download className=\"h-3.5 w-3.5 text-cyan-400\" />, label: \"Export Data\" },\n { icon: <Zap className=\"h-3.5 w-3.5 text-cyan-400\" />, label: \"Run Diagnostics\" },\n ];\n\n return (\n <div\n className={cn(\"min-h-screen w-full flex flex-col\", className)}\n style={{ background: \"#02040a\" }}\n >\n {/* Navigation */}\n <GlassNavigation\n brand={\n <div className=\"flex items-center gap-2\">\n <div\n className=\"h-6 w-6 rounded flex items-center justify-center text-[9px] font-bold text-neutral-900\"\n style={{\n background: \"linear-gradient(135deg, #22D3EE, #E879F9)\",\n }}\n >\n BB\n </div>\n <span className=\"text-xs font-mono font-bold uppercase tracking-[0.12em] text-[var(--glia-color-text-primary,#CBD5E1)]\">\n BACKBAY\n </span>\n </div>\n }\n items={NAV_ITEMS}\n activeId={activeNav}\n onItemClick={setActiveNav}\n sticky\n actions={\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n className=\"relative p-1.5 rounded-md text-[var(--glia-color-text-soft,#64748B)] hover:text-[var(--glia-color-text-primary,#CBD5E1)] transition-colors\"\n >\n <Bell className=\"h-4 w-4\" />\n <span className=\"absolute top-0.5 right-0.5 w-1.5 h-1.5 rounded-full bg-[var(--glia-color-accent,#22D3EE)]\" />\n </button>\n <div className=\"h-7 w-7 rounded-full bg-gradient-to-br from-[var(--glia-color-accent,#22D3EE)] to-[var(--glia-color-accent-secondary,#E879F9)] flex items-center justify-center\">\n <User className=\"h-3.5 w-3.5 text-neutral-900\" />\n </div>\n </div>\n }\n />\n\n {/* Body */}\n <div className=\"flex flex-1 gap-6 p-6\">\n {/* Main column */}\n <div className=\"flex-1 flex flex-col gap-6 min-w-0\">\n {/* KPI row */}\n <div className=\"grid grid-cols-4 gap-4\">\n {KPI_CARDS.map((card) => (\n <GlassDataCard\n key={card.label}\n label={card.label}\n value={card.value}\n trend={card.trend}\n variant={card.variant}\n sparklineData={card.sparklineData}\n />\n ))}\n </div>\n\n {/* Timeline */}\n <GlassPanel variant=\"default\" elevation=\"soft\" className=\"p-5\">\n <h3 className=\"text-[10px] font-mono uppercase tracking-[0.12em] text-[var(--glia-color-text-soft,#64748B)] mb-4\">\n Recent Activity\n </h3>\n <GlassTimeline events={TIMELINE_EVENTS} layout=\"left\" showTimestamps />\n </GlassPanel>\n </div>\n\n {/* Sidebar */}\n <div className=\"w-80 flex-shrink-0 flex flex-col gap-6\">\n {/* Quick Actions */}\n <GlassPanel variant=\"default\" elevation=\"soft\" className=\"p-4\">\n <h3 className=\"text-[10px] font-mono uppercase tracking-[0.12em] text-[var(--glia-color-text-soft,#64748B)] mb-3\">\n Quick Actions\n </h3>\n <div className=\"flex flex-col gap-2\">\n {actions.map((action, i) => (\n <ActionButton\n key={action.label}\n icon={action.icon}\n label={action.label}\n glassTokens={glassTokens}\n shouldAnimate={shouldAnimate}\n index={i}\n />\n ))}\n </div>\n </GlassPanel>\n\n {/* Deploy Steps */}\n <GlassPanel variant=\"default\" elevation=\"soft\" className=\"p-4\">\n <h3 className=\"text-[10px] font-mono uppercase tracking-[0.12em] text-[var(--glia-color-text-soft,#64748B)] mb-4\">\n Deployment Pipeline\n </h3>\n <GlassSteps\n steps={DEPLOY_STEPS}\n activeStep={2}\n layout=\"vertical\"\n />\n </GlassPanel>\n\n {/* System Health KPI */}\n <KPIStat\n title=\"System Health\"\n value={99.2}\n suffix=\"%\"\n delta={0.3}\n deltaType=\"percentage\"\n variant=\"success\"\n size=\"compact\"\n sparklineData={[98.5, 98.8, 99.0, 98.9, 99.1, 99.0, 99.2, 99.1, 99.2, 99.2]}\n />\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../../lib/utils\";\nimport React from \"react\";\nimport { Check, Copy, FileCode } from \"lucide-react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface GlassCodeEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Code string to display */\n code: string;\n /** Language label */\n language?: string;\n /** Filename shown in header */\n filename?: string;\n /** Show line numbers */\n showLineNumbers?: boolean;\n /** Show copy button */\n showCopy?: boolean;\n /** Max height with scroll */\n maxHeight?: string | number;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function GlassCodeEditor({\n code,\n language,\n filename,\n showLineNumbers = true,\n showCopy = true,\n maxHeight,\n className,\n ...props\n}: GlassCodeEditorProps) {\n const [copied, setCopied] = React.useState(false);\n\n const lines = code.split(\"\\n\");\n\n const handleCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n // Clipboard API not available\n }\n }, [code]);\n\n const showHeader = filename || language || showCopy;\n\n return (\n <div\n className={cn(\"overflow-hidden rounded-xl\", className)}\n style={{\n background: \"rgba(2,4,10,0.85)\",\n border: \"1px solid rgba(255,255,255,0.06)\",\n backdropFilter: \"blur(16px)\",\n WebkitBackdropFilter: \"blur(16px)\",\n }}\n {...props}\n >\n {/* Header */}\n {showHeader && (\n <div\n className=\"flex items-center justify-between px-4 py-2.5 border-b\"\n style={{\n background: \"rgba(2,4,10,0.5)\",\n borderColor: \"rgba(255,255,255,0.06)\",\n }}\n >\n <div className=\"flex items-center gap-2\">\n <FileCode className=\"h-3.5 w-3.5 text-[var(--glia-color-text-soft,#64748B)]\" />\n {filename && (\n <span className=\"font-mono text-[11px] text-[var(--glia-color-text-primary,#CBD5E1)]\">\n {filename}\n </span>\n )}\n {language && (\n <span\n className=\"rounded-full px-2 py-0.5 font-mono text-[9px] uppercase tracking-[0.12em]\"\n style={{\n background: \"rgba(139,92,246,0.15)\",\n color: \"rgb(167,139,250)\",\n border: \"1px solid rgba(139,92,246,0.3)\",\n }}\n >\n {language}\n </span>\n )}\n </div>\n {showCopy && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-mono uppercase tracking-[0.12em] transition-colors hover:bg-white/5\"\n style={{ color: copied ? \"rgb(52,211,153)\" : \"var(--glia-color-text-soft, #64748B)\" }}\n aria-label={copied ? \"Copied\" : \"Copy code\"}\n >\n {copied ? <Check className=\"h-3 w-3\" /> : <Copy className=\"h-3 w-3\" />}\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n )}\n </div>\n )}\n\n {/* Code area */}\n <div\n className=\"overflow-auto\"\n style={{ maxHeight: maxHeight ?? undefined }}\n >\n <pre className=\"p-4 text-sm leading-relaxed\">\n <code className=\"font-mono\">\n {lines.map((line, i) => (\n <div key={i} className=\"flex\">\n {showLineNumbers && (\n <span\n className=\"mr-4 inline-block w-8 shrink-0 select-none text-right font-mono text-xs\"\n style={{ color: \"var(--glia-color-text-soft, #64748B)\", opacity: 0.5 }}\n >\n {i + 1}\n </span>\n )}\n <span className=\"text-[var(--glia-color-text-primary,#CBD5E1)]\">\n {line || \"\\u00A0\"}\n </span>\n </div>\n ))}\n </code>\n </pre>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current\"\n >\n <Check className=\"h-3.5 w-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary shadow-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex items-center justify-center\"\n >\n <Circle className=\"h-2 w-2 fill-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Slider({\n className,\n defaultValue,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"bg-input/80 relative h-1.5 w-full grow overflow-hidden rounded-full\"\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className=\"bg-primary absolute h-full\"\n />\n </SliderPrimitive.Track>\n {(defaultValue ?? props.value ?? [0]).map((_: unknown, i: number) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={i}\n className=\"border-primary bg-background focus-visible:ring-ring/50 block h-4 w-4 rounded-full border shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n data-slot=\"accordion-item\"\n className={cn(\"border-b\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nconst AccordionContent = React.forwardRef<\n React.ComponentRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","export * from '@backbay/glia-three/three';\n","\"use client\";\n\nimport { cn, prefersReducedMotion } from \"../../lib/utils\";\nimport { useAmbientTokens } from \"../../theme\";\nimport { motion, useReducedMotion } from \"framer-motion\";\nimport * as React from \"react\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface Star {\n id: number;\n x: number;\n y: number;\n size: number;\n color: string;\n delay: number;\n duration: number;\n brightness: number;\n}\n\nexport interface NebulaStarsLayerProps {\n /** Override particle colors */\n colors?: string[];\n /** Override density (0-1) */\n density?: number;\n /** Container className */\n className?: string;\n /** Disable animations */\n disabled?: boolean;\n}\n\n// ============================================================================\n// STAR GENERATION\n// ============================================================================\n\nfunction generateStars(count: number, colors: string[], sizeRange: [number, number]): Star[] {\n return Array.from({ length: count }, (_, i) => ({\n id: i,\n x: Math.random() * 100,\n y: Math.random() * 100,\n size: sizeRange[0] + Math.random() * (sizeRange[1] - sizeRange[0]),\n color: colors[Math.floor(Math.random() * colors.length)],\n delay: Math.random() * 3,\n duration: 2 + Math.random() * 4,\n brightness: 0.3 + Math.random() * 0.7,\n }));\n}\n\n// ============================================================================\n// SINGLE STAR COMPONENT\n// ============================================================================\n\ninterface StarParticleProps {\n star: Star;\n}\n\nconst StarParticle = React.memo(function StarParticle({ star }: StarParticleProps) {\n const reducedMotion = useReducedMotion();\n\n if (reducedMotion) {\n return (\n <div\n className=\"absolute rounded-full\"\n style={{\n left: `${star.x}%`,\n top: `${star.y}%`,\n width: star.size,\n height: star.size,\n backgroundColor: star.color,\n opacity: star.brightness * 0.5,\n }}\n />\n );\n }\n\n return (\n <motion.div\n className=\"absolute rounded-full will-change-[opacity,transform]\"\n style={{\n left: `${star.x}%`,\n top: `${star.y}%`,\n width: star.size,\n height: star.size,\n backgroundColor: star.color,\n boxShadow: `0 0 ${star.size * 2}px ${star.color}`,\n }}\n animate={{\n opacity: [\n star.brightness * 0.3,\n star.brightness,\n star.brightness * 0.5,\n star.brightness * 0.8,\n star.brightness * 0.3,\n ],\n scale: [1, 1.2, 1, 1.1, 1],\n }}\n transition={{\n duration: star.duration,\n delay: star.delay,\n repeat: Infinity,\n ease: \"easeInOut\",\n }}\n />\n );\n});\n\n// ============================================================================\n// NEBULA STARS LAYER\n// ============================================================================\n\nexport function NebulaStarsLayer({\n colors: propColors,\n density: propDensity,\n className,\n disabled = false,\n}: NebulaStarsLayerProps) {\n const ambientTokens = useAmbientTokens();\n const reducedMotion = prefersReducedMotion();\n\n // Use props or fall back to theme tokens\n const colors = propColors ?? ambientTokens.particleColors;\n const density = propDensity ?? ambientTokens.particleDensity;\n const sizeRange = ambientTokens.particleSizeRange;\n\n // Calculate star count based on viewport and density\n const [stars, setStars] = React.useState<Star[]>([]);\n\n React.useEffect(() => {\n if (disabled || reducedMotion) {\n setStars([]);\n return;\n }\n\n // Base count on viewport, scaled by density\n const viewportArea =\n typeof window !== \"undefined\" ? (window.innerWidth * window.innerHeight) / 10000 : 100;\n const count = Math.floor(viewportArea * density * 3);\n const clampedCount = Math.min(Math.max(count, 30), 150);\n\n setStars(generateStars(clampedCount, colors, sizeRange));\n }, [colors, density, disabled, reducedMotion, sizeRange]);\n\n if (disabled || stars.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cn(\"pointer-events-none absolute inset-0 overflow-hidden\", className)}\n aria-hidden=\"true\"\n >\n {/* Horizon gradient */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: ambientTokens.horizonGradient,\n }}\n />\n\n {/* Twinkling stars */}\n {stars.map((star) => (\n <StarParticle key={star.id} star={star} />\n ))}\n\n {/* Nebula glow overlays */}\n <div\n className=\"absolute inset-0 opacity-60\"\n style={{\n background: `\n radial-gradient(\n circle at 20% 30%,\n ${colors[0]}10,\n transparent 40%\n ),\n radial-gradient(\n circle at 80% 70%,\n ${colors[1]}08,\n transparent 50%\n )\n `,\n }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { useAmbientTokens, useUiTheme } from \"../../theme\";\nimport { DustMotesLayer } from \"./DustMotesLayer\";\nimport { NebulaStarsLayer } from \"./NebulaStarsLayer\";\n\nexport interface ThemedAmbientLayerProps {\n /** Additional className */\n className?: string;\n /** Force a specific ambient type (override theme) */\n forceType?: \"nebula-stars\" | \"dust-motes\";\n /** Disable the ambient layer */\n disabled?: boolean;\n}\n\n/**\n * Theme-aware ambient background layer.\n * Automatically switches between Nebula stars and Solarpunk dust motes\n * based on the current UI theme.\n */\nexport function ThemedAmbientLayer({\n className,\n forceType,\n disabled = false,\n}: ThemedAmbientLayerProps) {\n const { isHydrating } = useUiTheme();\n const ambientTokens = useAmbientTokens();\n\n // Don't render during hydration to prevent flash\n if (isHydrating || disabled) {\n return null;\n }\n\n const ambientType = forceType ?? ambientTokens.type;\n\n if (ambientType === \"dust-motes\") {\n return <DustMotesLayer className={className} />;\n }\n\n return <NebulaStarsLayer className={className} />;\n}\n","export * from '@backbay/glia-three/environment';\n"]}