@shareai-lab/kode 1.2.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (725) hide show
  1. package/README.md +25 -388
  2. package/cli-acp.js +82 -0
  3. package/cli.js +89 -79
  4. package/dist/REPL-GIU4ZIXM.js +42 -0
  5. package/dist/acp-H3VJ77YG.js +1357 -0
  6. package/dist/acp-H3VJ77YG.js.map +7 -0
  7. package/dist/agentsValidate-XP3CFN6F.js +373 -0
  8. package/dist/agentsValidate-XP3CFN6F.js.map +7 -0
  9. package/dist/ask-3G5H5KD5.js +125 -0
  10. package/dist/ask-3G5H5KD5.js.map +7 -0
  11. package/dist/autoUpdater-DNRMJWFQ.js +17 -0
  12. package/dist/chunk-2KWKUXLT.js +490 -0
  13. package/dist/chunk-2KWKUXLT.js.map +7 -0
  14. package/dist/chunk-2PMO2FS2.js +1097 -0
  15. package/dist/chunk-2PMO2FS2.js.map +7 -0
  16. package/dist/chunk-3RUXVV4S.js +23 -0
  17. package/dist/chunk-3RUXVV4S.js.map +7 -0
  18. package/dist/chunk-3TXNP6HH.js +240 -0
  19. package/dist/chunk-3TXNP6HH.js.map +7 -0
  20. package/dist/chunk-4GAIJGRH.js +472 -0
  21. package/dist/chunk-4GAIJGRH.js.map +7 -0
  22. package/dist/chunk-4RTX4AG4.js +249 -0
  23. package/dist/chunk-4RTX4AG4.js.map +7 -0
  24. package/dist/chunk-54DNHKOD.js +511 -0
  25. package/dist/chunk-54DNHKOD.js.map +7 -0
  26. package/dist/chunk-67PY5IX6.js +34 -0
  27. package/dist/chunk-67PY5IX6.js.map +7 -0
  28. package/dist/chunk-6DRDLOLP.js +2613 -0
  29. package/dist/chunk-6DRDLOLP.js.map +7 -0
  30. package/dist/chunk-7CQVZNQV.js +1609 -0
  31. package/dist/chunk-7CQVZNQV.js.map +7 -0
  32. package/dist/chunk-ABLVTESJ.js +19 -0
  33. package/dist/chunk-ABLVTESJ.js.map +7 -0
  34. package/dist/{utils/config.js → chunk-AIMIPK4B.js} +351 -171
  35. package/dist/chunk-AIMIPK4B.js.map +7 -0
  36. package/dist/{utils/autoUpdater.js → chunk-BHGTA6JQ.js} +38 -21
  37. package/dist/chunk-BHGTA6JQ.js.map +7 -0
  38. package/dist/chunk-CIG63V4E.js +72 -0
  39. package/dist/chunk-CIG63V4E.js.map +7 -0
  40. package/dist/chunk-E6YNABER.js +24 -0
  41. package/dist/chunk-E6YNABER.js.map +7 -0
  42. package/dist/chunk-EH34V7CY.js +191 -0
  43. package/dist/chunk-EH34V7CY.js.map +7 -0
  44. package/dist/{cost-tracker.js → chunk-EZXMVTDU.js} +51 -32
  45. package/dist/chunk-EZXMVTDU.js.map +7 -0
  46. package/dist/chunk-FH5CHM6L.js +148 -0
  47. package/dist/chunk-FH5CHM6L.js.map +7 -0
  48. package/dist/chunk-G6I7XROM.js +138 -0
  49. package/dist/chunk-G6I7XROM.js.map +7 -0
  50. package/dist/chunk-HN4E4UUQ.js +96 -0
  51. package/dist/chunk-HN4E4UUQ.js.map +7 -0
  52. package/dist/chunk-HSPVVDIW.js +30198 -0
  53. package/dist/chunk-HSPVVDIW.js.map +7 -0
  54. package/dist/{services/systemReminder.js → chunk-IE2CG2TV.js} +221 -59
  55. package/dist/chunk-IE2CG2TV.js.map +7 -0
  56. package/dist/chunk-JC6NCUG5.js +11 -0
  57. package/dist/chunk-K2MI4TPB.js +1256 -0
  58. package/dist/chunk-K2MI4TPB.js.map +7 -0
  59. package/dist/chunk-KAA5BGMQ.js +12 -0
  60. package/dist/chunk-KAA5BGMQ.js.map +7 -0
  61. package/dist/chunk-MN77D2F7.js +2931 -0
  62. package/dist/chunk-MN77D2F7.js.map +7 -0
  63. package/dist/chunk-NPFOMITO.js +21 -0
  64. package/dist/chunk-NPFOMITO.js.map +7 -0
  65. package/dist/chunk-NQLEUHMS.js +196 -0
  66. package/dist/chunk-NQLEUHMS.js.map +7 -0
  67. package/dist/chunk-OIFQB3S4.js +515 -0
  68. package/dist/chunk-OIFQB3S4.js.map +7 -0
  69. package/dist/chunk-OWTG2W3A.js +164 -0
  70. package/dist/chunk-OWTG2W3A.js.map +7 -0
  71. package/dist/chunk-OZNRLY3E.js +735 -0
  72. package/dist/chunk-OZNRLY3E.js.map +7 -0
  73. package/dist/{utils/debugLogger.js → chunk-QYFKRZQC.js} +107 -204
  74. package/dist/chunk-QYFKRZQC.js.map +7 -0
  75. package/dist/chunk-S3J2TLV6.js +16 -0
  76. package/dist/chunk-S3J2TLV6.js.map +7 -0
  77. package/dist/chunk-S6HRABTA.js +95 -0
  78. package/dist/chunk-S6HRABTA.js.map +7 -0
  79. package/dist/{utils/theme.js → chunk-SDGKPKDK.js} +28 -6
  80. package/dist/chunk-SDGKPKDK.js.map +7 -0
  81. package/dist/chunk-SRZZFAS7.js +766 -0
  82. package/dist/chunk-SRZZFAS7.js.map +7 -0
  83. package/dist/chunk-UKHTVRJM.js +47 -0
  84. package/dist/chunk-UKHTVRJM.js.map +7 -0
  85. package/dist/chunk-UYXEDKOZ.js +24 -0
  86. package/dist/chunk-UYXEDKOZ.js.map +7 -0
  87. package/dist/chunk-VBXVYQYY.js +145 -0
  88. package/dist/chunk-VBXVYQYY.js.map +7 -0
  89. package/dist/chunk-WVHORZQ5.js +17 -0
  90. package/dist/chunk-WVHORZQ5.js.map +7 -0
  91. package/dist/chunk-WWUWDNWW.js +49 -0
  92. package/dist/chunk-WWUWDNWW.js.map +7 -0
  93. package/dist/{utils/model.js → chunk-Z33T5YN5.js} +194 -227
  94. package/dist/chunk-Z33T5YN5.js.map +7 -0
  95. package/dist/{services/openai.js → chunk-ZQU3TXLC.js} +168 -234
  96. package/dist/chunk-ZQU3TXLC.js.map +7 -0
  97. package/dist/cli-SRV2INSL.js +3917 -0
  98. package/dist/cli-SRV2INSL.js.map +7 -0
  99. package/dist/commands-TWH6PGVG.js +46 -0
  100. package/dist/config-6ZMBCL23.js +81 -0
  101. package/dist/context-JQIOOI4W.js +30 -0
  102. package/dist/costTracker-6SL26FDB.js +19 -0
  103. package/dist/customCommands-DNEJS3ZU.js +25 -0
  104. package/dist/customCommands-DNEJS3ZU.js.map +7 -0
  105. package/dist/env-OFAXZ3XG.js +22 -0
  106. package/dist/env-OFAXZ3XG.js.map +7 -0
  107. package/dist/index.js +34 -5
  108. package/dist/index.js.map +4 -4
  109. package/dist/kodeAgentSessionId-X6XWQW7B.js +13 -0
  110. package/dist/kodeAgentSessionId-X6XWQW7B.js.map +7 -0
  111. package/dist/kodeAgentSessionLoad-6N27AC5K.js +18 -0
  112. package/dist/kodeAgentSessionLoad-6N27AC5K.js.map +7 -0
  113. package/dist/kodeAgentSessionResume-HUSAEO24.js +16 -0
  114. package/dist/kodeAgentSessionResume-HUSAEO24.js.map +7 -0
  115. package/dist/kodeAgentStreamJson-NXFN7TXH.js +13 -0
  116. package/dist/kodeAgentStreamJson-NXFN7TXH.js.map +7 -0
  117. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js +131 -0
  118. package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +7 -0
  119. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +10 -0
  120. package/dist/kodeAgentStructuredStdio-HGWJT7CU.js.map +7 -0
  121. package/dist/kodeHooks-TDMXFWSO.js +36 -0
  122. package/dist/kodeHooks-TDMXFWSO.js.map +7 -0
  123. package/dist/llm-XVXWYOHK.js +3118 -0
  124. package/dist/llm-XVXWYOHK.js.map +7 -0
  125. package/dist/llmLazy-7TD5N7XP.js +15 -0
  126. package/dist/llmLazy-7TD5N7XP.js.map +7 -0
  127. package/dist/loader-AUXIJTY6.js +28 -0
  128. package/dist/loader-AUXIJTY6.js.map +7 -0
  129. package/dist/mcp-BXJ3K7NZ.js +49 -0
  130. package/dist/mcp-BXJ3K7NZ.js.map +7 -0
  131. package/dist/{services/mentionProcessor.js → mentionProcessor-YD7YXYGF.js} +61 -50
  132. package/dist/mentionProcessor-YD7YXYGF.js.map +7 -0
  133. package/dist/messages-OFUJSPRV.js +63 -0
  134. package/dist/messages-OFUJSPRV.js.map +7 -0
  135. package/dist/model-KPYCXWBK.js +30 -0
  136. package/dist/model-KPYCXWBK.js.map +7 -0
  137. package/dist/openai-5G5D5Q4B.js +29 -0
  138. package/dist/openai-5G5D5Q4B.js.map +7 -0
  139. package/dist/outputStyles-HLDXFQK3.js +28 -0
  140. package/dist/outputStyles-HLDXFQK3.js.map +7 -0
  141. package/dist/package.json +1 -1
  142. package/dist/pluginRuntime-FPTKK6NY.js +218 -0
  143. package/dist/pluginRuntime-FPTKK6NY.js.map +7 -0
  144. package/dist/pluginValidation-DSFXZ4GF.js +17 -0
  145. package/dist/pluginValidation-DSFXZ4GF.js.map +7 -0
  146. package/dist/prompts-LWLAJRS2.js +48 -0
  147. package/dist/prompts-LWLAJRS2.js.map +7 -0
  148. package/dist/query-HVPWL27C.js +50 -0
  149. package/dist/query-HVPWL27C.js.map +7 -0
  150. package/dist/responsesStreaming-AW344PQO.js +10 -0
  151. package/dist/responsesStreaming-AW344PQO.js.map +7 -0
  152. package/dist/ripgrep-YOPCY2GO.js +17 -0
  153. package/dist/ripgrep-YOPCY2GO.js.map +7 -0
  154. package/dist/skillMarketplace-PSNKDINM.js +37 -0
  155. package/dist/skillMarketplace-PSNKDINM.js.map +7 -0
  156. package/dist/state-KNRWP3FO.js +16 -0
  157. package/dist/state-KNRWP3FO.js.map +7 -0
  158. package/dist/theme-7S2QN2FO.js +14 -0
  159. package/dist/theme-7S2QN2FO.js.map +7 -0
  160. package/dist/toolPermissionContext-65L65VEZ.js +17 -0
  161. package/dist/toolPermissionContext-65L65VEZ.js.map +7 -0
  162. package/dist/toolPermissionSettings-GPOBH4IV.js +18 -0
  163. package/dist/toolPermissionSettings-GPOBH4IV.js.map +7 -0
  164. package/dist/tools-FZU2FZBD.js +47 -0
  165. package/dist/tools-FZU2FZBD.js.map +7 -0
  166. package/dist/userInput-VHNBN2MW.js +311 -0
  167. package/dist/userInput-VHNBN2MW.js.map +7 -0
  168. package/dist/uuid-QN2CNKKN.js +9 -0
  169. package/dist/uuid-QN2CNKKN.js.map +7 -0
  170. package/package.json +43 -14
  171. package/scripts/binary-utils.cjs +62 -0
  172. package/scripts/cli-acp-wrapper.cjs +82 -0
  173. package/scripts/cli-wrapper.cjs +105 -0
  174. package/scripts/postinstall.js +135 -9
  175. package/LICENSE +0 -201
  176. package/README.zh-CN.md +0 -312
  177. package/dist/ProjectOnboarding.js +0 -99
  178. package/dist/ProjectOnboarding.js.map +0 -7
  179. package/dist/Tool.js +0 -1
  180. package/dist/commands/agents.js +0 -2087
  181. package/dist/commands/agents.js.map +0 -7
  182. package/dist/commands/approvedTools.js +0 -36
  183. package/dist/commands/approvedTools.js.map +0 -7
  184. package/dist/commands/bug.js +0 -21
  185. package/dist/commands/bug.js.map +0 -7
  186. package/dist/commands/clear.js +0 -37
  187. package/dist/commands/clear.js.map +0 -7
  188. package/dist/commands/compact.js +0 -104
  189. package/dist/commands/compact.js.map +0 -7
  190. package/dist/commands/config.js +0 -20
  191. package/dist/commands/config.js.map +0 -7
  192. package/dist/commands/cost.js +0 -19
  193. package/dist/commands/cost.js.map +0 -7
  194. package/dist/commands/ctx_viz.js +0 -152
  195. package/dist/commands/ctx_viz.js.map +0 -7
  196. package/dist/commands/doctor.js +0 -25
  197. package/dist/commands/doctor.js.map +0 -7
  198. package/dist/commands/help.js +0 -20
  199. package/dist/commands/help.js.map +0 -7
  200. package/dist/commands/init.js +0 -38
  201. package/dist/commands/init.js.map +0 -7
  202. package/dist/commands/listen.js +0 -37
  203. package/dist/commands/listen.js.map +0 -7
  204. package/dist/commands/login.js +0 -37
  205. package/dist/commands/login.js.map +0 -7
  206. package/dist/commands/logout.js +0 -33
  207. package/dist/commands/logout.js.map +0 -7
  208. package/dist/commands/mcp.js +0 -34
  209. package/dist/commands/mcp.js.map +0 -7
  210. package/dist/commands/model.js +0 -41
  211. package/dist/commands/model.js.map +0 -7
  212. package/dist/commands/modelstatus.js +0 -21
  213. package/dist/commands/modelstatus.js.map +0 -7
  214. package/dist/commands/onboarding.js +0 -36
  215. package/dist/commands/onboarding.js.map +0 -7
  216. package/dist/commands/pr_comments.js +0 -61
  217. package/dist/commands/pr_comments.js.map +0 -7
  218. package/dist/commands/refreshCommands.js +0 -37
  219. package/dist/commands/refreshCommands.js.map +0 -7
  220. package/dist/commands/release-notes.js +0 -30
  221. package/dist/commands/release-notes.js.map +0 -7
  222. package/dist/commands/resume.js +0 -35
  223. package/dist/commands/resume.js.map +0 -7
  224. package/dist/commands/review.js +0 -51
  225. package/dist/commands/review.js.map +0 -7
  226. package/dist/commands/terminalSetup.js +0 -163
  227. package/dist/commands/terminalSetup.js.map +0 -7
  228. package/dist/commands.js +0 -84
  229. package/dist/commands.js.map +0 -7
  230. package/dist/components/ApproveApiKey.js +0 -74
  231. package/dist/components/ApproveApiKey.js.map +0 -7
  232. package/dist/components/AsciiLogo.js +0 -12
  233. package/dist/components/AsciiLogo.js.map +0 -7
  234. package/dist/components/AutoUpdater.js +0 -74
  235. package/dist/components/AutoUpdater.js.map +0 -7
  236. package/dist/components/Bug.js +0 -147
  237. package/dist/components/Bug.js.map +0 -7
  238. package/dist/components/Config.js +0 -166
  239. package/dist/components/Config.js.map +0 -7
  240. package/dist/components/ConsoleOAuthFlow.js +0 -188
  241. package/dist/components/ConsoleOAuthFlow.js.map +0 -7
  242. package/dist/components/Cost.js +0 -13
  243. package/dist/components/Cost.js.map +0 -7
  244. package/dist/components/CostThresholdDialog.js +0 -38
  245. package/dist/components/CostThresholdDialog.js.map +0 -7
  246. package/dist/components/CustomSelect/option-map.js +0 -32
  247. package/dist/components/CustomSelect/option-map.js.map +0 -7
  248. package/dist/components/CustomSelect/select-option.js +0 -34
  249. package/dist/components/CustomSelect/select-option.js.map +0 -7
  250. package/dist/components/CustomSelect/select.js +0 -64
  251. package/dist/components/CustomSelect/select.js.map +0 -7
  252. package/dist/components/CustomSelect/theme.js +0 -1
  253. package/dist/components/CustomSelect/use-select-state.js +0 -220
  254. package/dist/components/CustomSelect/use-select-state.js.map +0 -7
  255. package/dist/components/CustomSelect/use-select.js +0 -21
  256. package/dist/components/CustomSelect/use-select.js.map +0 -7
  257. package/dist/components/FallbackToolUseRejectedMessage.js +0 -11
  258. package/dist/components/FallbackToolUseRejectedMessage.js.map +0 -7
  259. package/dist/components/FileEditToolUpdatedMessage.js +0 -32
  260. package/dist/components/FileEditToolUpdatedMessage.js.map +0 -7
  261. package/dist/components/Help.js +0 -41
  262. package/dist/components/Help.js.map +0 -7
  263. package/dist/components/HighlightedCode.js +0 -30
  264. package/dist/components/HighlightedCode.js.map +0 -7
  265. package/dist/components/InvalidConfigDialog.js +0 -83
  266. package/dist/components/InvalidConfigDialog.js.map +0 -7
  267. package/dist/components/Link.js +0 -18
  268. package/dist/components/Link.js.map +0 -7
  269. package/dist/components/LogSelector.js +0 -50
  270. package/dist/components/LogSelector.js.map +0 -7
  271. package/dist/components/Logo.js +0 -94
  272. package/dist/components/Logo.js.map +0 -7
  273. package/dist/components/MCPServerApprovalDialog.js +0 -79
  274. package/dist/components/MCPServerApprovalDialog.js.map +0 -7
  275. package/dist/components/MCPServerDialogCopy.js +0 -11
  276. package/dist/components/MCPServerDialogCopy.js.map +0 -7
  277. package/dist/components/MCPServerMultiselectDialog.js +0 -80
  278. package/dist/components/MCPServerMultiselectDialog.js.map +0 -7
  279. package/dist/components/Message.js +0 -146
  280. package/dist/components/Message.js.map +0 -7
  281. package/dist/components/MessageResponse.js +0 -9
  282. package/dist/components/MessageResponse.js.map +0 -7
  283. package/dist/components/MessageSelector.js +0 -133
  284. package/dist/components/MessageSelector.js.map +0 -7
  285. package/dist/components/ModeIndicator.js +0 -38
  286. package/dist/components/ModeIndicator.js.map +0 -7
  287. package/dist/components/ModelConfig.js +0 -208
  288. package/dist/components/ModelConfig.js.map +0 -7
  289. package/dist/components/ModelListManager.js +0 -140
  290. package/dist/components/ModelListManager.js.map +0 -7
  291. package/dist/components/ModelSelector.js +0 -1985
  292. package/dist/components/ModelSelector.js.map +0 -7
  293. package/dist/components/ModelStatusDisplay.js +0 -87
  294. package/dist/components/ModelStatusDisplay.js.map +0 -7
  295. package/dist/components/Onboarding.js +0 -153
  296. package/dist/components/Onboarding.js.map +0 -7
  297. package/dist/components/PressEnterToContinue.js +0 -10
  298. package/dist/components/PressEnterToContinue.js.map +0 -7
  299. package/dist/components/PromptInput.js +0 -488
  300. package/dist/components/PromptInput.js.map +0 -7
  301. package/dist/components/SentryErrorBoundary.js +0 -27
  302. package/dist/components/SentryErrorBoundary.js.map +0 -7
  303. package/dist/components/Spinner.js +0 -101
  304. package/dist/components/Spinner.js.map +0 -7
  305. package/dist/components/StickerRequestForm.js +0 -7
  306. package/dist/components/StickerRequestForm.js.map +0 -7
  307. package/dist/components/StructuredDiff.js +0 -148
  308. package/dist/components/StructuredDiff.js.map +0 -7
  309. package/dist/components/TextInput.js +0 -100
  310. package/dist/components/TextInput.js.map +0 -7
  311. package/dist/components/TodoItem.js +0 -35
  312. package/dist/components/TodoItem.js.map +0 -7
  313. package/dist/components/TokenWarning.js +0 -19
  314. package/dist/components/TokenWarning.js.map +0 -7
  315. package/dist/components/ToolUseLoader.js +0 -24
  316. package/dist/components/ToolUseLoader.js.map +0 -7
  317. package/dist/components/TrustDialog.js +0 -76
  318. package/dist/components/TrustDialog.js.map +0 -7
  319. package/dist/components/binary-feedback/BinaryFeedback.js +0 -50
  320. package/dist/components/binary-feedback/BinaryFeedback.js.map +0 -7
  321. package/dist/components/binary-feedback/BinaryFeedbackOption.js +0 -94
  322. package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +0 -7
  323. package/dist/components/binary-feedback/BinaryFeedbackView.js +0 -139
  324. package/dist/components/binary-feedback/BinaryFeedbackView.js.map +0 -7
  325. package/dist/components/binary-feedback/utils.js +0 -161
  326. package/dist/components/binary-feedback/utils.js.map +0 -7
  327. package/dist/components/messages/AssistantBashOutputMessage.js +0 -23
  328. package/dist/components/messages/AssistantBashOutputMessage.js.map +0 -7
  329. package/dist/components/messages/AssistantLocalCommandOutputMessage.js +0 -36
  330. package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +0 -7
  331. package/dist/components/messages/AssistantRedactedThinkingMessage.js +0 -12
  332. package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +0 -7
  333. package/dist/components/messages/AssistantTextMessage.js +0 -78
  334. package/dist/components/messages/AssistantTextMessage.js.map +0 -7
  335. package/dist/components/messages/AssistantThinkingMessage.js +0 -27
  336. package/dist/components/messages/AssistantThinkingMessage.js.map +0 -7
  337. package/dist/components/messages/AssistantToolUseMessage.js +0 -91
  338. package/dist/components/messages/AssistantToolUseMessage.js.map +0 -7
  339. package/dist/components/messages/TaskProgressMessage.js +0 -11
  340. package/dist/components/messages/TaskProgressMessage.js.map +0 -7
  341. package/dist/components/messages/TaskToolMessage.js +0 -39
  342. package/dist/components/messages/TaskToolMessage.js.map +0 -7
  343. package/dist/components/messages/UserBashInputMessage.js +0 -18
  344. package/dist/components/messages/UserBashInputMessage.js.map +0 -7
  345. package/dist/components/messages/UserCommandMessage.js +0 -20
  346. package/dist/components/messages/UserCommandMessage.js.map +0 -7
  347. package/dist/components/messages/UserKodingInputMessage.js +0 -18
  348. package/dist/components/messages/UserKodingInputMessage.js.map +0 -7
  349. package/dist/components/messages/UserPromptMessage.js +0 -20
  350. package/dist/components/messages/UserPromptMessage.js.map +0 -7
  351. package/dist/components/messages/UserTextMessage.js +0 -25
  352. package/dist/components/messages/UserTextMessage.js.map +0 -7
  353. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +0 -10
  354. package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +0 -7
  355. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +0 -15
  356. package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +0 -7
  357. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +0 -25
  358. package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +0 -7
  359. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +0 -47
  360. package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +0 -7
  361. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +0 -23
  362. package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +0 -7
  363. package/dist/components/messages/UserToolResultMessage/utils.js +0 -42
  364. package/dist/components/messages/UserToolResultMessage/utils.js.map +0 -7
  365. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -112
  366. package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +0 -7
  367. package/dist/components/permissions/FallbackPermissionRequest.js +0 -131
  368. package/dist/components/permissions/FallbackPermissionRequest.js.map +0 -7
  369. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -159
  370. package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +0 -7
  371. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -58
  372. package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +0 -7
  373. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -153
  374. package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +0 -7
  375. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -70
  376. package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +0 -7
  377. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -212
  378. package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +0 -7
  379. package/dist/components/permissions/PermissionRequest.js +0 -70
  380. package/dist/components/permissions/PermissionRequest.js.map +0 -7
  381. package/dist/components/permissions/PermissionRequestTitle.js +0 -52
  382. package/dist/components/permissions/PermissionRequestTitle.js.map +0 -7
  383. package/dist/components/permissions/hooks.js +0 -28
  384. package/dist/components/permissions/hooks.js.map +0 -7
  385. package/dist/components/permissions/toolUseOptions.js +0 -46
  386. package/dist/components/permissions/toolUseOptions.js.map +0 -7
  387. package/dist/components/permissions/utils.js +0 -21
  388. package/dist/components/permissions/utils.js.map +0 -7
  389. package/dist/constants/betas.js +0 -11
  390. package/dist/constants/betas.js.map +0 -7
  391. package/dist/constants/claude-asterisk-ascii-art.js +0 -242
  392. package/dist/constants/claude-asterisk-ascii-art.js.map +0 -7
  393. package/dist/constants/figures.js +0 -6
  394. package/dist/constants/figures.js.map +0 -7
  395. package/dist/constants/keys.js +0 -7
  396. package/dist/constants/keys.js.map +0 -7
  397. package/dist/constants/macros.js +0 -13
  398. package/dist/constants/macros.js.map +0 -7
  399. package/dist/constants/modelCapabilities.js +0 -154
  400. package/dist/constants/modelCapabilities.js.map +0 -7
  401. package/dist/constants/models.js +0 -1034
  402. package/dist/constants/models.js.map +0 -7
  403. package/dist/constants/oauth.js +0 -18
  404. package/dist/constants/oauth.js.map +0 -7
  405. package/dist/constants/product.js +0 -26
  406. package/dist/constants/product.js.map +0 -7
  407. package/dist/constants/prompts.js +0 -168
  408. package/dist/constants/prompts.js.map +0 -7
  409. package/dist/constants/releaseNotes.js +0 -9
  410. package/dist/constants/releaseNotes.js.map +0 -7
  411. package/dist/context/PermissionContext.js +0 -111
  412. package/dist/context/PermissionContext.js.map +0 -7
  413. package/dist/context.js +0 -259
  414. package/dist/context.js.map +0 -7
  415. package/dist/cost-tracker.js.map +0 -7
  416. package/dist/entrypoints/cli.js +0 -1107
  417. package/dist/entrypoints/cli.js.map +0 -7
  418. package/dist/entrypoints/mcp.js +0 -150
  419. package/dist/entrypoints/mcp.js.map +0 -7
  420. package/dist/history.js +0 -25
  421. package/dist/history.js.map +0 -7
  422. package/dist/hooks/useApiKeyVerification.js +0 -12
  423. package/dist/hooks/useApiKeyVerification.js.map +0 -7
  424. package/dist/hooks/useArrowKeyHistory.js +0 -50
  425. package/dist/hooks/useArrowKeyHistory.js.map +0 -7
  426. package/dist/hooks/useCanUseTool.js +0 -112
  427. package/dist/hooks/useCanUseTool.js.map +0 -7
  428. package/dist/hooks/useCancelRequest.js +0 -30
  429. package/dist/hooks/useCancelRequest.js.map +0 -7
  430. package/dist/hooks/useDoublePress.js +0 -31
  431. package/dist/hooks/useDoublePress.js.map +0 -7
  432. package/dist/hooks/useExitOnCtrlCD.js +0 -26
  433. package/dist/hooks/useExitOnCtrlCD.js.map +0 -7
  434. package/dist/hooks/useInterval.js +0 -18
  435. package/dist/hooks/useInterval.js.map +0 -7
  436. package/dist/hooks/useLogMessages.js +0 -14
  437. package/dist/hooks/useLogMessages.js.map +0 -7
  438. package/dist/hooks/useLogStartupTime.js +0 -15
  439. package/dist/hooks/useLogStartupTime.js.map +0 -7
  440. package/dist/hooks/useNotifyAfterTimeout.js +0 -42
  441. package/dist/hooks/useNotifyAfterTimeout.js.map +0 -7
  442. package/dist/hooks/usePermissionRequestLogging.js +0 -28
  443. package/dist/hooks/usePermissionRequestLogging.js.map +0 -7
  444. package/dist/hooks/useTerminalSize.js +0 -38
  445. package/dist/hooks/useTerminalSize.js.map +0 -7
  446. package/dist/hooks/useTextInput.js +0 -250
  447. package/dist/hooks/useTextInput.js.map +0 -7
  448. package/dist/hooks/useUnifiedCompletion.js +0 -929
  449. package/dist/hooks/useUnifiedCompletion.js.map +0 -7
  450. package/dist/messages.js +0 -33
  451. package/dist/messages.js.map +0 -7
  452. package/dist/permissions.js +0 -194
  453. package/dist/permissions.js.map +0 -7
  454. package/dist/query.js +0 -492
  455. package/dist/query.js.map +0 -7
  456. package/dist/screens/ConfigureNpmPrefix.js +0 -128
  457. package/dist/screens/ConfigureNpmPrefix.js.map +0 -7
  458. package/dist/screens/Doctor.js +0 -22
  459. package/dist/screens/Doctor.js.map +0 -7
  460. package/dist/screens/LogList.js +0 -55
  461. package/dist/screens/LogList.js.map +0 -7
  462. package/dist/screens/REPL.js +0 -593
  463. package/dist/screens/REPL.js.map +0 -7
  464. package/dist/screens/ResumeConversation.js +0 -56
  465. package/dist/screens/ResumeConversation.js.map +0 -7
  466. package/dist/services/adapters/base.js +0 -29
  467. package/dist/services/adapters/base.js.map +0 -7
  468. package/dist/services/adapters/chatCompletions.js +0 -69
  469. package/dist/services/adapters/chatCompletions.js.map +0 -7
  470. package/dist/services/adapters/responsesAPI.js +0 -126
  471. package/dist/services/adapters/responsesAPI.js.map +0 -7
  472. package/dist/services/browserMocks.js +0 -48
  473. package/dist/services/browserMocks.js.map +0 -7
  474. package/dist/services/claude.js +0 -1605
  475. package/dist/services/claude.js.map +0 -7
  476. package/dist/services/customCommands.js +0 -359
  477. package/dist/services/customCommands.js.map +0 -7
  478. package/dist/services/fileFreshness.js +0 -280
  479. package/dist/services/fileFreshness.js.map +0 -7
  480. package/dist/services/gpt5ConnectionTest.js +0 -248
  481. package/dist/services/gpt5ConnectionTest.js.map +0 -7
  482. package/dist/services/mcpClient.js +0 -435
  483. package/dist/services/mcpClient.js.map +0 -7
  484. package/dist/services/mcpServerApproval.js +0 -55
  485. package/dist/services/mcpServerApproval.js.map +0 -7
  486. package/dist/services/mentionProcessor.js.map +0 -7
  487. package/dist/services/modelAdapterFactory.js +0 -47
  488. package/dist/services/modelAdapterFactory.js.map +0 -7
  489. package/dist/services/notifier.js +0 -35
  490. package/dist/services/notifier.js.map +0 -7
  491. package/dist/services/oauth.js +0 -259
  492. package/dist/services/oauth.js.map +0 -7
  493. package/dist/services/openai.js.map +0 -7
  494. package/dist/services/responseStateManager.js +0 -68
  495. package/dist/services/responseStateManager.js.map +0 -7
  496. package/dist/services/sentry.js +0 -9
  497. package/dist/services/sentry.js.map +0 -7
  498. package/dist/services/statsig.js +0 -112
  499. package/dist/services/statsig.js.map +0 -7
  500. package/dist/services/statsigStorage.js +0 -75
  501. package/dist/services/statsigStorage.js.map +0 -7
  502. package/dist/services/systemReminder.js.map +0 -7
  503. package/dist/services/vcr.js +0 -133
  504. package/dist/services/vcr.js.map +0 -7
  505. package/dist/tools/ArchitectTool/ArchitectTool.js +0 -119
  506. package/dist/tools/ArchitectTool/ArchitectTool.js.map +0 -7
  507. package/dist/tools/ArchitectTool/prompt.js +0 -18
  508. package/dist/tools/ArchitectTool/prompt.js.map +0 -7
  509. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -423
  510. package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +0 -7
  511. package/dist/tools/BashTool/BashTool.js +0 -188
  512. package/dist/tools/BashTool/BashTool.js.map +0 -7
  513. package/dist/tools/BashTool/BashToolResultMessage.js +0 -21
  514. package/dist/tools/BashTool/BashToolResultMessage.js.map +0 -7
  515. package/dist/tools/BashTool/OutputLine.js +0 -30
  516. package/dist/tools/BashTool/OutputLine.js.map +0 -7
  517. package/dist/tools/BashTool/prompt.js +0 -179
  518. package/dist/tools/BashTool/prompt.js.map +0 -7
  519. package/dist/tools/BashTool/utils.js +0 -51
  520. package/dist/tools/BashTool/utils.js.map +0 -7
  521. package/dist/tools/FileEditTool/FileEditTool.js +0 -228
  522. package/dist/tools/FileEditTool/FileEditTool.js.map +0 -7
  523. package/dist/tools/FileEditTool/prompt.js +0 -54
  524. package/dist/tools/FileEditTool/prompt.js.map +0 -7
  525. package/dist/tools/FileEditTool/utils.js +0 -42
  526. package/dist/tools/FileEditTool/utils.js.map +0 -7
  527. package/dist/tools/FileReadTool/FileReadTool.js +0 -272
  528. package/dist/tools/FileReadTool/FileReadTool.js.map +0 -7
  529. package/dist/tools/FileReadTool/prompt.js +0 -10
  530. package/dist/tools/FileReadTool/prompt.js.map +0 -7
  531. package/dist/tools/FileWriteTool/FileWriteTool.js +0 -204
  532. package/dist/tools/FileWriteTool/FileWriteTool.js.map +0 -7
  533. package/dist/tools/FileWriteTool/prompt.js +0 -14
  534. package/dist/tools/FileWriteTool/prompt.js.map +0 -7
  535. package/dist/tools/GlobTool/GlobTool.js +0 -88
  536. package/dist/tools/GlobTool/GlobTool.js.map +0 -7
  537. package/dist/tools/GlobTool/prompt.js +0 -12
  538. package/dist/tools/GlobTool/prompt.js.map +0 -7
  539. package/dist/tools/GrepTool/GrepTool.js +0 -107
  540. package/dist/tools/GrepTool/GrepTool.js.map +0 -7
  541. package/dist/tools/GrepTool/prompt.js +0 -15
  542. package/dist/tools/GrepTool/prompt.js.map +0 -7
  543. package/dist/tools/MCPTool/MCPTool.js +0 -90
  544. package/dist/tools/MCPTool/MCPTool.js.map +0 -7
  545. package/dist/tools/MCPTool/prompt.js +0 -7
  546. package/dist/tools/MCPTool/prompt.js.map +0 -7
  547. package/dist/tools/MemoryReadTool/MemoryReadTool.js +0 -103
  548. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +0 -7
  549. package/dist/tools/MemoryReadTool/prompt.js +0 -7
  550. package/dist/tools/MemoryReadTool/prompt.js.map +0 -7
  551. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +0 -77
  552. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +0 -7
  553. package/dist/tools/MemoryWriteTool/prompt.js +0 -7
  554. package/dist/tools/MemoryWriteTool/prompt.js.map +0 -7
  555. package/dist/tools/MultiEditTool/MultiEditTool.js +0 -308
  556. package/dist/tools/MultiEditTool/MultiEditTool.js.map +0 -7
  557. package/dist/tools/MultiEditTool/prompt.js +0 -48
  558. package/dist/tools/MultiEditTool/prompt.js.map +0 -7
  559. package/dist/tools/NotebookEditTool/NotebookEditTool.js +0 -238
  560. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +0 -7
  561. package/dist/tools/NotebookEditTool/prompt.js +0 -7
  562. package/dist/tools/NotebookEditTool/prompt.js.map +0 -7
  563. package/dist/tools/NotebookReadTool/NotebookReadTool.js +0 -212
  564. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +0 -7
  565. package/dist/tools/NotebookReadTool/prompt.js +0 -7
  566. package/dist/tools/NotebookReadTool/prompt.js.map +0 -7
  567. package/dist/tools/StickerRequestTool/StickerRequestTool.js +0 -86
  568. package/dist/tools/StickerRequestTool/StickerRequestTool.js.map +0 -7
  569. package/dist/tools/StickerRequestTool/prompt.js +0 -23
  570. package/dist/tools/StickerRequestTool/prompt.js.map +0 -7
  571. package/dist/tools/TaskTool/TaskTool.js +0 -351
  572. package/dist/tools/TaskTool/TaskTool.js.map +0 -7
  573. package/dist/tools/TaskTool/constants.js +0 -5
  574. package/dist/tools/TaskTool/constants.js.map +0 -7
  575. package/dist/tools/TaskTool/prompt.js +0 -82
  576. package/dist/tools/TaskTool/prompt.js.map +0 -7
  577. package/dist/tools/ThinkTool/ThinkTool.js +0 -48
  578. package/dist/tools/ThinkTool/ThinkTool.js.map +0 -7
  579. package/dist/tools/ThinkTool/prompt.js +0 -16
  580. package/dist/tools/ThinkTool/prompt.js.map +0 -7
  581. package/dist/tools/TodoWriteTool/TodoWriteTool.js +0 -216
  582. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +0 -7
  583. package/dist/tools/TodoWriteTool/prompt.js +0 -66
  584. package/dist/tools/TodoWriteTool/prompt.js.map +0 -7
  585. package/dist/tools/URLFetcherTool/URLFetcherTool.js +0 -137
  586. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +0 -7
  587. package/dist/tools/URLFetcherTool/cache.js +0 -45
  588. package/dist/tools/URLFetcherTool/cache.js.map +0 -7
  589. package/dist/tools/URLFetcherTool/htmlToMarkdown.js +0 -42
  590. package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +0 -7
  591. package/dist/tools/URLFetcherTool/prompt.js +0 -22
  592. package/dist/tools/URLFetcherTool/prompt.js.map +0 -7
  593. package/dist/tools/WebSearchTool/WebSearchTool.js +0 -86
  594. package/dist/tools/WebSearchTool/WebSearchTool.js.map +0 -7
  595. package/dist/tools/WebSearchTool/prompt.js +0 -17
  596. package/dist/tools/WebSearchTool/prompt.js.map +0 -7
  597. package/dist/tools/WebSearchTool/searchProviders.js +0 -48
  598. package/dist/tools/WebSearchTool/searchProviders.js.map +0 -7
  599. package/dist/tools/lsTool/lsTool.js +0 -201
  600. package/dist/tools/lsTool/lsTool.js.map +0 -7
  601. package/dist/tools/lsTool/prompt.js +0 -5
  602. package/dist/tools/lsTool/prompt.js.map +0 -7
  603. package/dist/tools.js +0 -64
  604. package/dist/tools.js.map +0 -7
  605. package/dist/types/PermissionMode.js +0 -82
  606. package/dist/types/PermissionMode.js.map +0 -7
  607. package/dist/types/RequestContext.js +0 -47
  608. package/dist/types/RequestContext.js.map +0 -7
  609. package/dist/types/common.d.js +0 -1
  610. package/dist/types/conversation.js +0 -1
  611. package/dist/types/logs.js +0 -1
  612. package/dist/types/modelCapabilities.js +0 -1
  613. package/dist/types/notebook.js +0 -1
  614. package/dist/utils/Cursor.js +0 -313
  615. package/dist/utils/Cursor.js.map +0 -7
  616. package/dist/utils/PersistentShell.js +0 -382
  617. package/dist/utils/PersistentShell.js.map +0 -7
  618. package/dist/utils/advancedFuzzyMatcher.js +0 -206
  619. package/dist/utils/advancedFuzzyMatcher.js.map +0 -7
  620. package/dist/utils/agentLoader.js +0 -199
  621. package/dist/utils/agentLoader.js.map +0 -7
  622. package/dist/utils/agentStorage.js +0 -59
  623. package/dist/utils/agentStorage.js.map +0 -7
  624. package/dist/utils/array.js +0 -7
  625. package/dist/utils/array.js.map +0 -7
  626. package/dist/utils/ask.js +0 -77
  627. package/dist/utils/ask.js.map +0 -7
  628. package/dist/utils/auth.js +0 -11
  629. package/dist/utils/auth.js.map +0 -7
  630. package/dist/utils/autoCompactCore.js +0 -149
  631. package/dist/utils/autoCompactCore.js.map +0 -7
  632. package/dist/utils/autoUpdater.js.map +0 -7
  633. package/dist/utils/betas.js +0 -21
  634. package/dist/utils/betas.js.map +0 -7
  635. package/dist/utils/browser.js +0 -15
  636. package/dist/utils/browser.js.map +0 -7
  637. package/dist/utils/cleanup.js +0 -54
  638. package/dist/utils/cleanup.js.map +0 -7
  639. package/dist/utils/commands.js +0 -207
  640. package/dist/utils/commands.js.map +0 -7
  641. package/dist/utils/commonUnixCommands.js +0 -687
  642. package/dist/utils/commonUnixCommands.js.map +0 -7
  643. package/dist/utils/config.js.map +0 -7
  644. package/dist/utils/conversationRecovery.js +0 -35
  645. package/dist/utils/conversationRecovery.js.map +0 -7
  646. package/dist/utils/debugLogger.js.map +0 -7
  647. package/dist/utils/diff.js +0 -32
  648. package/dist/utils/diff.js.map +0 -7
  649. package/dist/utils/env.js +0 -44
  650. package/dist/utils/env.js.map +0 -7
  651. package/dist/utils/errors.js +0 -23
  652. package/dist/utils/errors.js.map +0 -7
  653. package/dist/utils/exampleCommands.js +0 -80
  654. package/dist/utils/exampleCommands.js.map +0 -7
  655. package/dist/utils/execFileNoThrow.js +0 -44
  656. package/dist/utils/execFileNoThrow.js.map +0 -7
  657. package/dist/utils/expertChatStorage.js +0 -78
  658. package/dist/utils/expertChatStorage.js.map +0 -7
  659. package/dist/utils/file.js +0 -282
  660. package/dist/utils/file.js.map +0 -7
  661. package/dist/utils/fileRecoveryCore.js +0 -41
  662. package/dist/utils/fileRecoveryCore.js.map +0 -7
  663. package/dist/utils/format.js +0 -41
  664. package/dist/utils/format.js.map +0 -7
  665. package/dist/utils/fuzzyMatcher.js +0 -252
  666. package/dist/utils/fuzzyMatcher.js.map +0 -7
  667. package/dist/utils/generators.js +0 -46
  668. package/dist/utils/generators.js.map +0 -7
  669. package/dist/utils/git.js +0 -83
  670. package/dist/utils/git.js.map +0 -7
  671. package/dist/utils/globalLogger.js +0 -54
  672. package/dist/utils/globalLogger.js.map +0 -7
  673. package/dist/utils/http.js +0 -7
  674. package/dist/utils/http.js.map +0 -7
  675. package/dist/utils/imagePaste.js +0 -29
  676. package/dist/utils/imagePaste.js.map +0 -7
  677. package/dist/utils/json.js +0 -16
  678. package/dist/utils/json.js.map +0 -7
  679. package/dist/utils/log.js +0 -298
  680. package/dist/utils/log.js.map +0 -7
  681. package/dist/utils/markdown.js +0 -187
  682. package/dist/utils/markdown.js.map +0 -7
  683. package/dist/utils/messageContextManager.js +0 -195
  684. package/dist/utils/messageContextManager.js.map +0 -7
  685. package/dist/utils/messages.js +0 -633
  686. package/dist/utils/messages.js.map +0 -7
  687. package/dist/utils/model.js.map +0 -7
  688. package/dist/utils/permissions/filesystem.js +0 -80
  689. package/dist/utils/permissions/filesystem.js.map +0 -7
  690. package/dist/utils/responseState.js +0 -20
  691. package/dist/utils/responseState.js.map +0 -7
  692. package/dist/utils/ripgrep.js +0 -131
  693. package/dist/utils/ripgrep.js.map +0 -7
  694. package/dist/utils/secureFile.js +0 -483
  695. package/dist/utils/secureFile.js.map +0 -7
  696. package/dist/utils/sessionState.js +0 -31
  697. package/dist/utils/sessionState.js.map +0 -7
  698. package/dist/utils/state.js +0 -24
  699. package/dist/utils/state.js.map +0 -7
  700. package/dist/utils/style.js +0 -31
  701. package/dist/utils/style.js.map +0 -7
  702. package/dist/utils/terminal.js +0 -43
  703. package/dist/utils/terminal.js.map +0 -7
  704. package/dist/utils/theme.js.map +0 -7
  705. package/dist/utils/thinking.js +0 -103
  706. package/dist/utils/thinking.js.map +0 -7
  707. package/dist/utils/todoStorage.js +0 -291
  708. package/dist/utils/todoStorage.js.map +0 -7
  709. package/dist/utils/tokens.js +0 -30
  710. package/dist/utils/tokens.js.map +0 -7
  711. package/dist/utils/toolExecutionController.js +0 -109
  712. package/dist/utils/toolExecutionController.js.map +0 -7
  713. package/dist/utils/unaryLogging.js +0 -14
  714. package/dist/utils/unaryLogging.js.map +0 -7
  715. package/dist/utils/user.js +0 -40
  716. package/dist/utils/user.js.map +0 -7
  717. package/dist/utils/validate.js +0 -132
  718. package/dist/utils/validate.js.map +0 -7
  719. /package/dist/{Tool.js.map → REPL-GIU4ZIXM.js.map} +0 -0
  720. /package/dist/{components/CustomSelect/theme.js.map → autoUpdater-DNRMJWFQ.js.map} +0 -0
  721. /package/dist/{types/common.d.js.map → chunk-JC6NCUG5.js.map} +0 -0
  722. /package/dist/{types/conversation.js.map → commands-TWH6PGVG.js.map} +0 -0
  723. /package/dist/{types/logs.js.map → config-6ZMBCL23.js.map} +0 -0
  724. /package/dist/{types/modelCapabilities.js.map → context-JQIOOI4W.js.map} +0 -0
  725. /package/dist/{types/notebook.js.map → costTracker-6SL26FDB.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/entrypoints/cli/runCli.tsx", "../src/entrypoints/cli/stdio/canUseTool.ts", "../src/entrypoints/cli/stdio/controlRequestHandler.ts", "../src/entrypoints/cli/stdio/streamJsonSession.ts", "../src/entrypoints/cli/stdio/structuredStdio.ts", "../src/entrypoints/cli/printMode.ts", "../src/utils/session/cleanup.ts", "../src/entrypoints/cli/setup.ts", "../src/entrypoints/cli/setupScreens.tsx", "../src/ui/components/TrustDialog.tsx", "../src/ui/screens/MCPServerApproval.tsx", "../src/ui/components/MCPServerMultiselectDialog.tsx", "../src/ui/components/MCPServerDialogCopy.tsx", "../src/ui/components/MCPServerApprovalDialog.tsx", "../src/utils/model/modelConfigYaml.ts", "../src/ui/screens/LogList.tsx", "../src/ui/components/LogSelector.tsx", "../src/entrypoints/mcp.ts", "../src/utils/session/conversationRecovery.ts", "../src/commands/approved-tools.ts", "../src/ui/components/InvalidConfigDialog.tsx", "../src/entrypoints/cli.tsx"],
4
+ "sourcesContent": ["import { existsSync, readFileSync, writeFileSync } from 'node:fs'\nimport { PRODUCT_COMMAND, PRODUCT_NAME } from '@constants/product'\nimport { runPrintMode } from './printMode'\nimport { setup } from './setup'\nimport { showSetupScreens } from './setupScreens'\n\nimport React from 'react'\nimport { ReadStream } from 'tty'\nimport { openSync } from 'fs'\nimport type { RenderOptions } from 'ink'\nimport { getContext, setContext, removeContext } from '@context'\nimport { Command } from '@commander-js/extra-typings'\nimport {\n getGlobalConfig,\n getCurrentProjectConfig,\n getProjectMcpServerDefinitions,\n saveGlobalConfig,\n saveCurrentProjectConfig,\n getCustomApiKeyStatus,\n normalizeApiKeyForConfig,\n setConfigForCLI,\n deleteConfigForCLI,\n getConfigForCLI,\n listConfigForCLI,\n enableConfigs,\n validateAndRepairAllGPT5Profiles,\n} from '@utils/config'\nimport { cwd } from 'process'\nimport { dateToFilename, logError, parseLogFilename } from '@utils/log'\nimport { initDebugLogger } from '@utils/log/debugLogger'\nimport { Doctor } from '@screens/Doctor'\nimport { McpServerConfig } from '@utils/config'\nimport { isDefaultSlowAndCapableModel } from '@utils/model'\nimport {\n applyModelConfigYamlImport,\n formatModelConfigYamlForSharing,\n} from '@utils/model/modelConfigYaml'\nimport { LogList } from '@screens/LogList'\nimport { ResumeConversation } from '@screens/ResumeConversation'\nimport { startMCPServer } from '../mcp'\nimport { env } from '@utils/config/env'\nimport { getCwd } from '@utils/state'\nimport { getNextAvailableLogForkNumber, loadLogList } from '@utils/log'\nimport { loadMessagesFromLog } from '@utils/session/conversationRecovery'\nimport { clearAgentCache, setFlagAgentsFromCliJson } from '@utils/agent/loader'\nimport { setEnabledSettingSourcesFromCli } from '@utils/config/settingSources'\nimport {\n handleListApprovedTools,\n handleRemoveApprovedTool,\n} from '@commands/approved-tools'\nimport {\n addMcpServer,\n getMcpServer,\n listMCPServers,\n parseEnvVars,\n removeMcpServer,\n getClients,\n getClientsForCliMcpConfig,\n getMcprcServerStatus,\n ensureConfigScope,\n} from '@services/mcpClient'\nimport {\n looksLikeMcpUrl,\n normalizeMcpScopeForCli,\n normalizeMcpTransport,\n parseMcpHeaders,\n} from '@services/mcpCliUtils'\n\nimport { cursorShow } from 'ansi-escapes'\nimport { assertMinVersion } from '@utils/session/autoUpdater'\nimport { CACHE_PATHS } from '@utils/log'\nimport { BunShell } from '@utils/bun/shell'\nimport { showInvalidConfigDialog } from '@components/InvalidConfigDialog'\nimport { ConfigParseError } from '@utils/text/errors'\nimport { MACRO } from '@constants/macros'\nimport { clearOutputStyleCache } from '@services/outputStyles'\n\nfunction logStartup(): void {\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n numStartups: (config.numStartups ?? 0) + 1,\n })\n}\n\nfunction omitKeys<T extends Record<string, any>>(\n input: T,\n ...keys: (keyof T | string)[]\n): Partial<T> {\n const result = { ...input } as Partial<T>\n for (const key of keys) {\n delete (result as any)[key as any]\n }\n return result\n}\n\nexport async function runCli() {\n initDebugLogger()\n\n try {\n enableConfigs()\n\n queueMicrotask(() => {\n try {\n validateAndRepairAllGPT5Profiles()\n } catch (repairError) {\n logError(`GPT-5 configuration validation failed: ${repairError}`)\n }\n })\n } catch (error: unknown) {\n if (error instanceof ConfigParseError) {\n await showInvalidConfigDialog({ error })\n return\n }\n }\n\n\n let inputPrompt = ''\n let renderContext: RenderOptions | undefined = {\n exitOnCtrlC: false,\n\n onFlicker() {},\n } as any\n\n const wantsStreamJsonStdin =\n process.argv.some(\n (arg, idx, all) =>\n arg === '--input-format' && all[idx + 1] === 'stream-json',\n ) || process.argv.some(arg => arg.startsWith('--input-format=stream-json'))\n\n if (\n !process.stdin.isTTY &&\n !process.env.CI &&\n !process.argv.includes('mcp') &&\n !wantsStreamJsonStdin\n ) {\n inputPrompt = await stdin()\n if (process.platform !== 'win32') {\n try {\n const ttyFd = openSync('/dev/tty', 'r')\n renderContext = { ...renderContext, stdin: new ReadStream(ttyFd) }\n } catch (err) {\n logError(`Could not open /dev/tty: ${err}`)\n }\n }\n }\n await parseArgs(inputPrompt, renderContext)\n}\n\nasync function parseArgs(\n stdinContent: string,\n renderContext: RenderOptions | undefined,\n): Promise<Command> {\n const program = new Command()\n\n const renderContextWithExitOnCtrlC = {\n ...renderContext,\n exitOnCtrlC: true,\n }\n\n program\n .name(PRODUCT_COMMAND)\n .description(\n `${PRODUCT_NAME} - starts an interactive session by default, use -p/--print for non-interactive output`,\n )\n .argument('[prompt]', 'Your prompt', String)\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-d, --debug [filter]',\n 'Enable debug mode with optional category filtering (e.g., \"api,hooks\" or \"!statsig,!file\")',\n )\n .option(\n '--debug-verbose',\n 'Enable verbose debug terminal output',\n () => true,\n )\n .option(\n '--verbose',\n 'Override verbose mode setting from config',\n () => true,\n )\n .option('-e, --enable-architect', 'Enable the Architect tool', () => true)\n .option(\n '-p, --print',\n 'Print response and exit (useful for pipes)',\n () => true,\n )\n .option(\n '--output-format <format>',\n 'Output format (only works with --print): \"text\" (default), \"json\", or \"stream-json\"',\n String,\n 'text',\n )\n .option(\n '--json-schema <schema>',\n 'JSON Schema for structured output validation. Example: {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"}},\"required\":[\"name\"]}',\n String,\n )\n .option(\n '--input-format <format>',\n 'Input format (only works with --print): \"text\" (default) or \"stream-json\"',\n String,\n 'text',\n )\n .option(\n '--mcp-debug',\n '[DEPRECATED. Use --debug instead] Enable MCP debug mode (shows MCP server errors)',\n () => true,\n )\n .option(\n '--dangerously-skip-permissions',\n 'Bypass all permission checks. Recommended only for sandboxes with no internet access.',\n () => true,\n )\n .option(\n '--allow-dangerously-skip-permissions',\n 'Enable bypassing all permission checks as an option, without it being enabled by default. Recommended only for sandboxes with no internet access.',\n () => true,\n )\n .option(\n '--max-budget-usd <amount>',\n 'Maximum dollar amount to spend on API calls (only works with --print)',\n String,\n )\n .option(\n '--include-partial-messages',\n 'Include partial message chunks as they arrive (only works with --print and --output-format=stream-json)',\n () => true,\n )\n .option(\n '--replay-user-messages',\n 'Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)',\n () => true,\n )\n .option(\n '--allowedTools, --allowed-tools <tools...>',\n 'Comma or space-separated list of tool names to allow (e.g. \"Bash(git:*) Edit\")',\n )\n .option(\n '--tools <tools...>',\n 'Specify the list of available tools from the built-in set. Use \"\" to disable all tools, \"default\" to use all tools, or specify tool names (e.g. \"Bash,Edit,Read\"). Only works with --print mode.',\n )\n .option(\n '--disallowedTools, --disallowed-tools <tools...>',\n 'Comma or space-separated list of tool names to deny (e.g. \"Bash(git:*) Edit\")',\n )\n .option(\n '--mcp-config <configs...>',\n 'Load MCP servers from JSON files or strings (space-separated)',\n )\n .option('--system-prompt <prompt>', 'System prompt to use for the session')\n .option(\n '--append-system-prompt <prompt>',\n 'Append a system prompt to the default system prompt',\n )\n .option(\n '--permission-mode <mode>',\n 'Permission mode to use for the session (choices: \"acceptEdits\", \"bypassPermissions\", \"default\", \"delegate\", \"dontAsk\", \"plan\")',\n String,\n )\n .option(\n '--permission-prompt-tool <tool>',\n 'Permission prompt tool (only works with --print, --output-format=stream-json, and --input-format=stream-json): \"stdio\"',\n String,\n )\n .option(\n '--safe',\n 'Enable strict permission checking mode (default is permissive)',\n () => true,\n )\n .option(\n '--disable-slash-commands',\n 'Disable slash commands (treat /... as plain text)',\n () => true,\n )\n .option(\n '--plugin-dir <paths...>',\n 'Load plugins from directories for this session only (repeatable)',\n (value, previous: string[] | undefined) => {\n const prev = Array.isArray(previous) ? previous : []\n const next = Array.isArray(value) ? value : [value]\n return [...prev, ...next].filter(Boolean)\n },\n [],\n )\n .option(\n '--model <model>',\n \"Model for the current session. Provide an alias for the latest model (e.g. 'sonnet' or 'opus') or a model's full name.\",\n String,\n )\n .option(\n '--agent <agent>',\n \"Agent for the current session. Overrides the 'agent' setting.\",\n String,\n )\n .option(\n '--betas <betas...>',\n 'Beta headers to include in API requests (API key users only)',\n )\n .option(\n '--fallback-model <model>',\n 'Enable automatic fallback to specified model when default model is overloaded (only works with --print)',\n String,\n )\n .option(\n '--settings <file-or-json>',\n 'Path to a settings JSON file or a JSON string to load additional settings from',\n String,\n )\n .option(\n '--add-dir <directories...>',\n 'Additional directories to allow tool access to',\n )\n .option(\n '--ide',\n 'Automatically connect to IDE on startup if exactly one valid IDE is available',\n () => true,\n )\n .option(\n '--strict-mcp-config',\n 'Only use MCP servers from --mcp-config, ignoring all other MCP configurations',\n () => true,\n )\n .option(\n '--agents <json>',\n `JSON object defining custom agents (e.g. '{\"reviewer\": {\"description\": \"Reviews code\", \"prompt\": \"You are a code reviewer\"}}')`,\n String,\n )\n .option(\n '--setting-sources <sources>',\n 'Comma-separated list of setting sources to load (user, project, local).',\n String,\n )\n .option(\n '-r, --resume [value]',\n 'Resume a conversation by session ID or session name (omit value to open selector)',\n )\n .option(\n '-c, --continue',\n 'Continue the most recent conversation',\n () => true,\n )\n .option(\n '--fork-session',\n 'When resuming/continuing, create a new session ID instead of reusing the original (use with --resume or --continue)',\n () => true,\n )\n .option(\n '--no-session-persistence',\n 'Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)',\n )\n .option(\n '--session-id <uuid>',\n 'Use a specific session ID for the conversation (must be a valid UUID)',\n String,\n )\n .action(\n async (\n prompt,\n {\n cwd,\n debug,\n verbose,\n enableArchitect,\n print,\n outputFormat,\n jsonSchema,\n inputFormat,\n mcpDebug,\n dangerouslySkipPermissions,\n allowDangerouslySkipPermissions,\n maxBudgetUsd,\n includePartialMessages,\n replayUserMessages,\n allowedTools,\n tools: cliTools,\n disallowedTools,\n mcpConfig,\n systemPrompt: systemPromptOverride,\n appendSystemPrompt,\n permissionMode,\n permissionPromptTool,\n safe,\n disableSlashCommands,\n pluginDir,\n model,\n addDir,\n strictMcpConfig,\n agents,\n settingSources,\n resume,\n continue: continueConversation,\n forkSession,\n sessionId,\n sessionPersistence,\n },\n ) => {\n try {\n setEnabledSettingSourcesFromCli(settingSources)\n } catch (err) {\n process.stderr.write(\n `Error processing --setting-sources: ${err instanceof Error ? err.message : String(err)}\\n`,\n )\n process.exit(1)\n }\n\n setFlagAgentsFromCliJson(agents)\n clearAgentCache()\n clearOutputStyleCache()\n\n await setup(cwd, safe)\n await showSetupScreens(safe, print)\n\n assertMinVersion()\n\n {\n const requested =\n Array.isArray(pluginDir) && pluginDir.length > 0 ? pluginDir : []\n const { listEnabledInstalledPluginPackRoots } =\n await import('@services/skillMarketplace')\n const installed = listEnabledInstalledPluginPackRoots()\n\n const all = [...installed, ...requested].filter(Boolean)\n const deduped = Array.from(new Set(all))\n\n if (deduped.length > 0) {\n const { configureSessionPlugins } =\n await import('@services/pluginRuntime')\n const { errors } = await configureSessionPlugins({\n pluginDirs: deduped,\n })\n for (const err of errors) {\n console.warn(err)\n }\n }\n }\n\n const [{ ask }, { getTools }, { getCommands }] = await Promise.all([\n import('@app/ask'),\n import('@tools'),\n import('@commands'),\n ])\n const commands = await getCommands()\n\n const mcpClientsPromise =\n (Array.isArray(mcpConfig) && mcpConfig.length > 0) ||\n strictMcpConfig === true\n ? getClientsForCliMcpConfig({\n mcpConfig: Array.isArray(mcpConfig) ? mcpConfig : [],\n strictMcpConfig: strictMcpConfig === true,\n projectDir: cwd,\n })\n : getClients()\n\n const [allTools, mcpClients] = await Promise.all([\n getTools(\n enableArchitect ?? getCurrentProjectConfig().enableArchitectTool,\n ),\n mcpClientsPromise,\n ])\n const tools =\n disableSlashCommands === true\n ? allTools.filter(t => t.name !== 'SlashCommand')\n : allTools\n const inputPrompt = [prompt, stdinContent].filter(Boolean).join('\\n')\n\n const {\n loadKodeAgentSessionMessages,\n findMostRecentKodeAgentSessionId,\n } = await import('@utils/protocol/kodeAgentSessionLoad')\n const { listKodeAgentSessions, resolveResumeSessionIdentifier } =\n await import('@utils/protocol/kodeAgentSessionResume')\n const { isUuid } = await import('@utils/text/uuid')\n const { setKodeAgentSessionId, getKodeAgentSessionId } =\n await import('@utils/protocol/kodeAgentSessionId')\n const { randomUUID } = await import('crypto')\n\n const wantsContinue = Boolean(continueConversation)\n const wantsResume = resume !== undefined\n const wantsFork = Boolean(forkSession)\n\n if (sessionId && !isUuid(String(sessionId))) {\n console.error(`Error: --session-id must be a valid UUID`)\n process.exit(1)\n }\n\n if (sessionId && (wantsContinue || wantsResume) && !wantsFork) {\n console.error(\n `Error: --session-id can only be used with --continue or --resume if --fork-session is also specified.`,\n )\n process.exit(1)\n }\n\n let initialMessages: any[] | undefined\n let resumedFromSessionId: string | null = null\n let needsResumeSelector = false\n\n if (wantsContinue) {\n const latest = findMostRecentKodeAgentSessionId(cwd)\n if (!latest) {\n console.error('No conversation found to continue')\n process.exit(1)\n }\n initialMessages = loadKodeAgentSessionMessages({\n cwd,\n sessionId: latest,\n })\n resumedFromSessionId = latest\n } else if (wantsResume) {\n if (resume === true) {\n needsResumeSelector = true\n } else {\n const identifier = String(resume)\n const resolved = resolveResumeSessionIdentifier({ cwd, identifier })\n if (resolved.kind === 'ok') {\n initialMessages = loadKodeAgentSessionMessages({\n cwd,\n sessionId: resolved.sessionId,\n })\n resumedFromSessionId = resolved.sessionId\n } else if (resolved.kind === 'different_directory') {\n console.error(\n resolved.otherCwd\n ? `Error: That session belongs to a different directory: ${resolved.otherCwd}`\n : `Error: That session belongs to a different directory.`,\n )\n process.exit(1)\n } else if (resolved.kind === 'ambiguous') {\n console.error(\n `Error: Multiple sessions match \"${identifier}\": ${resolved.matchingSessionIds.join(\n ', ',\n )}`,\n )\n process.exit(1)\n } else {\n console.error(\n `No conversation found with session ID or name: ${identifier}`,\n )\n process.exit(1)\n }\n }\n }\n\n if (needsResumeSelector && print) {\n console.error(\n 'Error: --resume without a value requires interactive mode (no --print).',\n )\n process.exit(1)\n }\n\n if (!needsResumeSelector) {\n const effectiveSessionId = (() => {\n if (resumedFromSessionId) {\n if (wantsFork) return sessionId ? String(sessionId) : randomUUID()\n return resumedFromSessionId\n }\n if (sessionId) return String(sessionId)\n return getKodeAgentSessionId()\n })()\n\n setKodeAgentSessionId(effectiveSessionId)\n }\n\n if (print) {\n await runPrintMode({\n prompt,\n stdinContent,\n inputPrompt,\n cwd,\n safe,\n verbose,\n outputFormat,\n inputFormat,\n jsonSchema,\n permissionPromptTool,\n replayUserMessages,\n cliTools,\n tools,\n commands,\n ask,\n initialMessages,\n sessionPersistence,\n systemPromptOverride,\n appendSystemPrompt,\n disableSlashCommands,\n allowedTools,\n disallowedTools,\n addDir,\n permissionMode,\n dangerouslySkipPermissions,\n allowDangerouslySkipPermissions,\n model,\n mcpClients,\n })\n return\n } else {\n if (sessionPersistence === false) {\n console.error(\n 'Error: --no-session-persistence only works with --print',\n )\n process.exit(1)\n }\n\n const updateInfo = await (async () => {\n try {\n const [\n { getLatestVersion, getUpdateCommandSuggestions },\n semverMod,\n ] = await Promise.all([\n import('@utils/session/autoUpdater'),\n import('semver'),\n ])\n const semver: any = (semverMod as any)?.default ?? semverMod\n const gt = semver?.gt\n if (typeof gt !== 'function')\n return {\n version: null as string | null,\n commands: null as string[] | null,\n }\n\n const latest = await getLatestVersion()\n if (latest && gt(latest, MACRO.VERSION)) {\n const cmds = await getUpdateCommandSuggestions()\n return { version: latest as string, commands: cmds as string[] }\n }\n } catch {}\n return {\n version: null as string | null,\n commands: null as string[] | null,\n }\n })()\n\n if (needsResumeSelector) {\n const sessions = listKodeAgentSessions({ cwd })\n if (sessions.length === 0) {\n console.error('No conversation found to resume')\n process.exit(1)\n }\n\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <ResumeConversation\n cwd={cwd}\n context={context}\n commands={commands}\n sessions={sessions}\n tools={tools}\n verbose={verbose}\n safeMode={safe}\n debug={Boolean(debug)}\n disableSlashCommands={disableSlashCommands === true}\n mcpClients={mcpClients}\n initialPrompt={inputPrompt}\n forkSession={wantsFork}\n forkSessionId={sessionId ? String(sessionId) : null}\n initialUpdateVersion={updateInfo.version}\n initialUpdateCommands={updateInfo.commands}\n />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n return\n }\n\n const isDefaultModel = await isDefaultSlowAndCapableModel()\n\n {\n const { render } = await import('ink')\n const { REPL } = await import('@screens/REPL')\n render(\n <REPL\n commands={commands}\n debug={Boolean(debug)}\n disableSlashCommands={disableSlashCommands === true}\n initialPrompt={inputPrompt}\n messageLogName={dateToFilename(new Date())}\n shouldShowPromptInput={true}\n verbose={verbose}\n tools={tools}\n safeMode={safe}\n mcpClients={mcpClients}\n isDefaultModel={isDefaultModel}\n initialUpdateVersion={updateInfo.version}\n initialUpdateCommands={updateInfo.commands}\n initialMessages={initialMessages}\n />,\n renderContext,\n )\n }\n }\n },\n )\n .version(MACRO.VERSION, '-v, --version')\n\n\n const config = program\n .command('config')\n .description(\n `Manage configuration (eg. ${PRODUCT_COMMAND} config set -g theme dark)`,\n )\n\n config\n .command('get <key>')\n .description('Get a config value')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, { cwd, global }) => {\n await setup(cwd, false)\n console.log(getConfigForCLI(key, global ?? false))\n process.exit(0)\n })\n\n config\n .command('set <key> <value>')\n .description('Set a config value')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, value, { cwd, global }) => {\n await setup(cwd, false)\n setConfigForCLI(key, value, global ?? false)\n console.log(`Set ${key} to ${value}`)\n process.exit(0)\n })\n\n config\n .command('remove <key>')\n .description('Remove a config value')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config')\n .action(async (key, { cwd, global }) => {\n await setup(cwd, false)\n deleteConfigForCLI(key, global ?? false)\n console.log(`Removed ${key}`)\n process.exit(0)\n })\n\n config\n .command('list')\n .description('List all config values')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-g, --global', 'Use global config', false)\n .action(async ({ cwd, global }) => {\n await setup(cwd, false)\n console.log(\n JSON.stringify(\n global ? listConfigForCLI(true) : listConfigForCLI(false),\n null,\n 2,\n ),\n )\n process.exit(0)\n })\n\n\n const modelsCmd = program\n .command('models')\n .description('Import/export model profiles and pointers (YAML)')\n\n modelsCmd\n .command('export')\n .description(\n 'Export shareable model config as YAML (does not include plaintext API keys)',\n )\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-o, --output <path>', 'Write YAML to file instead of stdout')\n .action(async ({ cwd, output }) => {\n try {\n await setup(cwd, false)\n const yamlText = formatModelConfigYamlForSharing(getGlobalConfig())\n if (output) {\n writeFileSync(output, yamlText, 'utf-8')\n console.log(`Wrote model config YAML to ${output}`)\n } else {\n console.log(yamlText)\n }\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n modelsCmd\n .command('import <file>')\n .description('Import model config YAML (merges by default)')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('--replace', 'Replace existing model profiles instead of merging')\n .action(async (file: string, { cwd, replace }) => {\n try {\n await setup(cwd, false)\n\n const yamlText = readFileSync(file, 'utf-8')\n const { nextConfig, warnings } = applyModelConfigYamlImport(\n getGlobalConfig(),\n yamlText,\n { replace: !!replace },\n )\n saveGlobalConfig(nextConfig)\n\n await import('@utils/model').then(({ reloadModelManager }) => {\n reloadModelManager()\n })\n\n if (warnings.length > 0) {\n console.error(warnings.join('\\n'))\n }\n console.log(`Imported model config YAML from ${file}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n modelsCmd\n .command('list')\n .description('List configured model profiles and pointers')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('--json', 'Output as JSON')\n .action(async (options: any) => {\n try {\n const workingDir = typeof options?.cwd === 'string' ? options.cwd : cwd()\n const asJson = options?.json === true\n await setup(workingDir, false)\n const { reloadModelManager, getModelManager } = await import('@utils/model')\n reloadModelManager()\n const manager = getModelManager()\n const config = getGlobalConfig()\n\n const pointers = (['main', 'task', 'compact', 'quick'] as const).map(\n pointer => {\n const pointerId = config.modelPointers?.[pointer] ?? null\n const resolved = manager.resolveModelWithInfo(pointer)\n const profile = resolved.success ? resolved.profile : null\n return {\n pointer,\n pointerId,\n resolved: profile\n ? {\n name: profile.name,\n provider: profile.provider,\n modelName: profile.modelName,\n isActive: profile.isActive,\n }\n : null,\n error: resolved.success ? null : resolved.error ?? null,\n }\n },\n )\n\n const profiles = (config.modelProfiles ?? []).map(p => ({\n name: p.name,\n provider: p.provider,\n modelName: p.modelName,\n baseURL: p.baseURL ?? null,\n maxTokens: p.maxTokens,\n contextLength: p.contextLength,\n reasoningEffort: p.reasoningEffort ?? null,\n isActive: p.isActive,\n createdAt: p.createdAt,\n lastUsed: typeof p.lastUsed === 'number' ? p.lastUsed : null,\n isGPT5: p.isGPT5 ?? null,\n validationStatus: p.validationStatus ?? null,\n lastValidation: typeof p.lastValidation === 'number' ? p.lastValidation : null,\n hasApiKey: Boolean(p.apiKey),\n }))\n\n if (asJson) {\n console.log(JSON.stringify({ pointers, profiles }, null, 2))\n process.exitCode = 0\n return\n }\n\n console.log('Model pointers:\\n')\n for (const ptr of pointers) {\n const resolvedLabel = ptr.resolved\n ? `${ptr.resolved.name} (${ptr.resolved.provider}:${ptr.resolved.modelName})`\n : '(unresolved)'\n const configured = ptr.pointerId ? ` -> ${ptr.pointerId}` : ''\n const err = ptr.error ? ` [${ptr.error}]` : ''\n console.log(` - ${ptr.pointer}${configured}: ${resolvedLabel}${err}`)\n }\n\n const active = profiles.filter(p => p.isActive)\n console.log(`\\nModel profiles (${active.length}/${profiles.length} active):\\n`)\n for (const p of profiles.sort((a, b) => a.name.localeCompare(b.name))) {\n const status = p.isActive ? 'active' : 'inactive'\n console.log(` - ${p.name} (${status})`)\n console.log(` provider=${p.provider} modelName=${p.modelName}`)\n if (p.baseURL) console.log(` baseURL=${p.baseURL}`)\n }\n\n process.exitCode = 0\n return\n } catch (error) {\n console.error((error as Error).message)\n process.exitCode = 1\n return\n }\n })\n\n const agentsCmd = program\n .command('agents')\n .description('Agent utilities (validate templates, etc.)')\n\n agentsCmd\n .command('validate [paths...]')\n .description('Validate agent markdown files (defaults to user+project agent dirs)')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('--json', 'Output as JSON')\n .option('--no-tools-check', 'Skip validating tool names against the tool registry')\n .action(\n async (paths: string[] | undefined, options: any) => {\n try {\n const workingDir = typeof options?.cwd === 'string' ? options.cwd : cwd()\n await setup(workingDir, false)\n const { validateAgentTemplates } = await import('./agentsValidate')\n const report = await validateAgentTemplates({\n cwd: workingDir,\n paths: Array.isArray(paths) ? paths : [],\n checkTools: options.toolsCheck !== false,\n })\n\n if (options.json) {\n console.log(JSON.stringify(report, null, 2))\n process.exitCode = report.ok ? 0 : 1\n return\n }\n\n console.log(\n `Validated ${report.results.length} agent file(s): ${report.errorCount} error(s), ${report.warningCount} warning(s)\\n`,\n )\n\n for (const r of report.results) {\n const rel = r.filePath\n const title = r.agentType ? `${r.agentType}` : '(unknown agent)'\n console.log(`${title} \u2014 ${rel}`)\n if (r.model) {\n const normalized = r.normalizedModel ? ` (normalized: ${r.normalizedModel})` : ''\n console.log(` model: ${r.model}${normalized}`)\n }\n if (r.issues.length === 0) {\n console.log(` OK`)\n } else {\n for (const issue of r.issues) {\n console.log(` - ${issue.level}: ${issue.message}`)\n }\n }\n console.log('')\n }\n\n process.exitCode = report.ok ? 0 : 1\n return\n } catch (error) {\n console.error((error as Error).message)\n process.exitCode = 1\n return\n }\n },\n )\n\n\n const registerMarketplaceCommands = (marketplaceCmd: Command) => {\n marketplaceCmd\n .command('add <source>')\n .description('Add a marketplace from a URL, path, or GitHub repo')\n .action(async (source: string) => {\n try {\n const { addMarketplace } = await import('@services/skillMarketplace')\n console.log('Adding marketplace...')\n const { name } = await addMarketplace(source)\n console.log(`Successfully added marketplace: ${name}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n marketplaceCmd\n .command('list')\n .description('List all configured marketplaces')\n .option('--json', 'Output as JSON')\n .action(async (options: { json?: boolean }) => {\n try {\n const { listMarketplaces } =\n await import('@services/skillMarketplace')\n const marketplaces = listMarketplaces()\n\n if (options.json) {\n console.log(JSON.stringify(marketplaces, null, 2))\n process.exit(0)\n }\n\n const names = Object.keys(marketplaces).sort()\n if (names.length === 0) {\n console.log('No marketplaces configured')\n process.exit(0)\n }\n\n console.log('Configured marketplaces:\\n')\n for (const name of names) {\n const entry = marketplaces[name] as any\n console.log(` - ${name}`)\n const src = entry?.source\n if (src?.source === 'github') {\n console.log(` Source: GitHub (${src.repo})`)\n } else if (src?.source === 'git') {\n console.log(` Source: Git (${src.url})`)\n } else if (src?.source === 'url') {\n console.log(` Source: URL (${src.url})`)\n } else if (src?.source === 'directory') {\n console.log(` Source: Directory (${src.path})`)\n } else if (src?.source === 'file') {\n console.log(` Source: File (${src.path})`)\n } else if (src?.source === 'npm') {\n console.log(` Source: NPM (${src.package})`)\n }\n console.log('')\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n marketplaceCmd\n .command('remove <name>')\n .alias('rm')\n .description('Remove a configured marketplace')\n .action(async (name: string) => {\n try {\n const { removeMarketplace } =\n await import('@services/skillMarketplace')\n removeMarketplace(name)\n console.log(`Successfully removed marketplace: ${name}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n marketplaceCmd\n .command('update [name]')\n .description(\n 'Update marketplace(s) from their source - updates all if no name specified',\n )\n .action(async (name: string | undefined, _options: any) => {\n try {\n const {\n listMarketplaces,\n refreshAllMarketplacesAsync,\n refreshMarketplaceAsync,\n } = await import('@services/skillMarketplace')\n\n const trimmed = typeof name === 'string' ? name.trim() : ''\n if (trimmed) {\n console.log(`Updating marketplace: ${trimmed}...`)\n await refreshMarketplaceAsync(trimmed)\n console.log(`Successfully updated marketplace: ${trimmed}`)\n process.exit(0)\n }\n\n const marketplaces = listMarketplaces()\n const names = Object.keys(marketplaces)\n if (names.length === 0) {\n console.log('No marketplaces configured')\n process.exit(0)\n }\n\n console.log(`Updating ${names.length} marketplace(s)...`)\n await refreshAllMarketplacesAsync(message => {\n console.log(message)\n })\n console.log(`Successfully updated ${names.length} marketplace(s)`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n }\n\n const pluginCmd = program\n .command('plugin')\n .description('Manage plugins and marketplaces')\n\n const pluginMarketplaceCmd = pluginCmd\n .command('marketplace')\n .description(\n 'Manage marketplaces (.kode-plugin/marketplace.json; legacy .claude-plugin supported)',\n )\n\n registerMarketplaceCommands(pluginMarketplaceCmd)\n\n const PLUGIN_SCOPES = ['user', 'project', 'local'] as const\n type PluginScope = (typeof PLUGIN_SCOPES)[number]\n\n const parsePluginScope = (value: unknown): PluginScope | null => {\n const normalized = String(value || 'user') as PluginScope\n return PLUGIN_SCOPES.includes(normalized) ? normalized : null\n }\n\n pluginCmd\n .command('install <plugin>')\n .alias('i')\n .description(\n 'Install a plugin from available marketplaces (use plugin@marketplace for specific marketplace)',\n )\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-s, --scope <scope>',\n 'Installation scope: user, project, or local',\n 'user',\n )\n .option('--force', 'Overwrite existing installed files', () => true)\n .action(async (plugin: string, options: any) => {\n try {\n const scope = parsePluginScope(options.scope)\n if (!scope) {\n console.error(\n `Invalid scope: ${String(options.scope)}. Must be one of: ${PLUGIN_SCOPES.join(', ')}`,\n )\n process.exit(1)\n }\n\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { installSkillPlugin } =\n await import('@services/skillMarketplace')\n const result = installSkillPlugin(plugin, {\n scope,\n force: options.force === true,\n })\n\n const skillList =\n result.installedSkills.length > 0\n ? `Skills: ${result.installedSkills.join(', ')}`\n : 'Skills: (none)'\n console.log(`Installed ${result.pluginSpec}\\n${skillList}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n pluginCmd\n .command('uninstall <plugin>')\n .alias('remove')\n .alias('rm')\n .description('Uninstall an installed plugin')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-s, --scope <scope>',\n `Uninstall from scope: ${PLUGIN_SCOPES.join(', ')} (default: user)`,\n 'user',\n )\n .action(async (plugin: string, options: any) => {\n try {\n const scope = parsePluginScope(options.scope)\n if (!scope) {\n console.error(\n `Invalid scope: ${String(options.scope)}. Must be one of: ${PLUGIN_SCOPES.join(', ')}`,\n )\n process.exit(1)\n }\n\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { uninstallSkillPlugin } =\n await import('@services/skillMarketplace')\n const result = uninstallSkillPlugin(plugin, { scope })\n const skillList =\n result.removedSkills.length > 0\n ? `Skills: ${result.removedSkills.join(', ')}`\n : 'Skills: (none)'\n console.log(`Uninstalled ${result.pluginSpec}\\n${skillList}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n pluginCmd\n .command('list')\n .description('List installed plugins')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-s, --scope <scope>',\n `Filter by scope: ${PLUGIN_SCOPES.join(', ')} (default: user)`,\n 'user',\n )\n .option('--json', 'Output as JSON')\n .action(async (options: any) => {\n try {\n const scope = parsePluginScope(options.scope)\n if (!scope) {\n console.error(\n `Invalid scope: ${String(options.scope)}. Must be one of: ${PLUGIN_SCOPES.join(', ')}`,\n )\n process.exit(1)\n }\n\n const { setCwd, getCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { listInstalledSkillPlugins } =\n await import('@services/skillMarketplace')\n const all = listInstalledSkillPlugins()\n const filtered = Object.fromEntries(\n Object.entries(all).filter(([, record]) => {\n if ((record as any)?.scope !== scope) return false\n if (scope === 'user') return true\n return (record as any)?.projectPath === getCwd()\n }),\n )\n\n if (options.json) {\n console.log(JSON.stringify(filtered, null, 2))\n process.exit(0)\n }\n\n const names = Object.keys(filtered).sort()\n if (names.length === 0) {\n console.log('No plugins installed')\n process.exit(0)\n }\n console.log(`Installed plugins (scope=${scope}):\\n`)\n for (const spec of names) {\n const record = filtered[spec] as any\n const enabled = record?.isEnabled === false ? 'disabled' : 'enabled'\n console.log(` - ${spec} (${enabled})`)\n }\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n pluginCmd\n .command('enable <plugin>')\n .description('Enable a disabled plugin')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-s, --scope <scope>',\n `Installation scope: ${PLUGIN_SCOPES.join(', ')} (default: user)`,\n 'user',\n )\n .action(async (plugin: string, options: any) => {\n try {\n const scope = parsePluginScope(options.scope)\n if (!scope) {\n console.error(\n `Invalid scope: ${String(options.scope)}. Must be one of: ${PLUGIN_SCOPES.join(', ')}`,\n )\n process.exit(1)\n }\n\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { enableSkillPlugin } = await import('@services/skillMarketplace')\n const result = enableSkillPlugin(plugin, { scope })\n console.log(`Enabled ${result.pluginSpec}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n pluginCmd\n .command('disable <plugin>')\n .description('Disable an enabled plugin')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option(\n '-s, --scope <scope>',\n `Installation scope: ${PLUGIN_SCOPES.join(', ')} (default: user)`,\n 'user',\n )\n .action(async (plugin: string, options: any) => {\n try {\n const scope = parsePluginScope(options.scope)\n if (!scope) {\n console.error(\n `Invalid scope: ${String(options.scope)}. Must be one of: ${PLUGIN_SCOPES.join(', ')}`,\n )\n process.exit(1)\n }\n\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { disableSkillPlugin } =\n await import('@services/skillMarketplace')\n const result = disableSkillPlugin(plugin, { scope })\n console.log(`Disabled ${result.pluginSpec}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n pluginCmd\n .command('validate <path>')\n .description('Validate a plugin or marketplace manifest')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (path: string, options: any) => {\n try {\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { formatValidationResult, validatePluginOrMarketplacePath } =\n await import('@services/pluginValidation')\n\n const result = validatePluginOrMarketplacePath(path)\n console.log(\n `Validating ${result.fileType} manifest: ${result.filePath}\\n`,\n )\n console.log(formatValidationResult(result))\n process.exit(result.success ? 0 : 1)\n } catch (error) {\n console.error(\n `Unexpected error during validation: ${\n error instanceof Error ? error.message : String(error)\n }`,\n )\n process.exit(2)\n }\n })\n\n\n const skillsCmd = program\n .command('skills')\n .description('Manage skills and skill marketplaces')\n\n const marketplaceCmd = skillsCmd\n .command('marketplace')\n .description(\n 'Manage skill marketplaces (.kode-plugin/marketplace.json; legacy .claude-plugin supported)',\n )\n\n registerMarketplaceCommands(marketplaceCmd)\n\n skillsCmd\n .command('install <plugin>')\n .description('Install a skill plugin pack (<plugin>@<marketplace>)')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('--project', 'Install into this project (.kode/...)', () => true)\n .option('--force', 'Overwrite existing installed files', () => true)\n .action(async (plugin: string, options: any) => {\n try {\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { installSkillPlugin } =\n await import('@services/skillMarketplace')\n const result = installSkillPlugin(plugin, {\n project: options.project === true,\n force: options.force === true,\n })\n const skillList =\n result.installedSkills.length > 0\n ? `Skills: ${result.installedSkills.join(', ')}`\n : 'Skills: (none)'\n console.log(`Installed ${plugin}\\n${skillList}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n skillsCmd\n .command('uninstall <plugin>')\n .description('Uninstall a skill plugin pack (<plugin>@<marketplace>)')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('--project', 'Uninstall from this project (.kode/...)', () => true)\n .action(async (plugin: string, options: any) => {\n try {\n const { setCwd } = await import('@utils/state')\n await setCwd(options.cwd ?? cwd())\n\n const { uninstallSkillPlugin } =\n await import('@services/skillMarketplace')\n const result = uninstallSkillPlugin(plugin, {\n project: options.project === true,\n })\n const skillList =\n result.removedSkills.length > 0\n ? `Skills: ${result.removedSkills.join(', ')}`\n : 'Skills: (none)'\n console.log(`Uninstalled ${plugin}\\n${skillList}`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n skillsCmd\n .command('list-installed')\n .description('List installed skill plugins')\n .action(async () => {\n try {\n const { listInstalledSkillPlugins } =\n await import('@services/skillMarketplace')\n console.log(JSON.stringify(listInstalledSkillPlugins(), null, 2))\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n\n const allowedTools = program\n .command('approved-tools')\n .description('Manage approved tools')\n\n allowedTools\n .command('list')\n .description('List all approved tools')\n .action(async () => {\n const result = handleListApprovedTools(getCwd())\n console.log(result)\n process.exit(0)\n })\n\n allowedTools\n .command('remove <tool>')\n .description('Remove a tool from the list of approved tools')\n .action(async (tool: string) => {\n const result = handleRemoveApprovedTool(tool)\n console.log(result.message)\n process.exit(result.success ? 0 : 1)\n })\n\n\n const mcp = program\n .command('mcp')\n .description('Configure and manage MCP servers')\n\n mcp\n .command('serve')\n .description(`Start the ${PRODUCT_NAME} MCP server`)\n .action(async () => {\n const providedCwd = (program.opts() as { cwd?: string }).cwd ?? cwd()\n\n if (!existsSync(providedCwd)) {\n console.error(`Error: Directory ${providedCwd} does not exist`)\n process.exit(1)\n }\n\n try {\n await setup(providedCwd, false)\n await startMCPServer(providedCwd)\n } catch (error) {\n console.error('Error: Failed to start MCP server:', error)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-sse <name> <url>')\n .description('Add an SSE server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (local, user, or project)',\n 'local',\n )\n .option(\n '-H, --header <header...>',\n 'Set headers (e.g. -H \"X-Api-Key: abc123\" -H \"X-Custom: value\")',\n )\n .action(async (name, url, options) => {\n try {\n const scopeInfo = normalizeMcpScopeForCli(options.scope)\n const headers = parseMcpHeaders(options.header)\n\n addMcpServer(\n name,\n { type: 'sse', url, ...(headers ? { headers } : {}) },\n scopeInfo.scope,\n )\n console.log(\n `Added SSE MCP server ${name} with URL: ${url} to ${scopeInfo.display} config`,\n )\n if (headers) {\n console.log(`Headers: ${JSON.stringify(headers, null, 2)}`)\n }\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-http <name> <url>')\n .description('Add a Streamable HTTP MCP server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (local, user, or project)',\n 'local',\n )\n .option(\n '-H, --header <header...>',\n 'Set headers (e.g. -H \"X-Api-Key: abc123\" -H \"X-Custom: value\")',\n )\n .action(async (name, url, options) => {\n try {\n const scopeInfo = normalizeMcpScopeForCli(options.scope)\n const headers = parseMcpHeaders(options.header)\n addMcpServer(\n name,\n { type: 'http', url, ...(headers ? { headers } : {}) },\n scopeInfo.scope,\n )\n console.log(\n `Added HTTP MCP server ${name} with URL: ${url} to ${scopeInfo.display} config`,\n )\n if (headers) {\n console.log(`Headers: ${JSON.stringify(headers, null, 2)}`)\n }\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-ws <name> <url>')\n .description('Add a WebSocket MCP server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (local, user, or project)',\n 'local',\n )\n .action(async (name, url, options) => {\n try {\n const scopeInfo = normalizeMcpScopeForCli(options.scope)\n addMcpServer(name, { type: 'ws', url }, scopeInfo.scope)\n console.log(\n `Added WebSocket MCP server ${name} with URL ${url} to ${scopeInfo.display} config`,\n )\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add [name] [commandOrUrl] [args...]')\n .description('Add a server (run without arguments for interactive wizard)')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (local, user, or project)',\n 'local',\n )\n .option(\n '-t, --transport <transport>',\n 'MCP transport (stdio, sse, or http)',\n )\n .option(\n '-H, --header <header...>',\n 'Set headers (e.g. -H \"X-Api-Key: abc123\" -H \"X-Custom: value\")',\n )\n .option(\n '-e, --env <env...>',\n 'Set environment variables (e.g. -e KEY=value)',\n )\n .action(async (name, commandOrUrl, args, options) => {\n try {\n if (!name) {\n console.log('Interactive wizard mode: Enter the server details')\n const { createInterface } = await import('readline')\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n\n const question = (query: string) =>\n new Promise<string>(resolve => rl.question(query, resolve))\n\n const serverName = await question('Server name: ')\n if (!serverName) {\n console.error('Error: Server name is required')\n rl.close()\n process.exit(1)\n }\n\n const serverType = await question(\n 'Server type (stdio, http, sse, ws) [stdio]: ',\n )\n const type =\n serverType && ['stdio', 'http', 'sse', 'ws'].includes(serverType)\n ? serverType\n : 'stdio'\n\n const prompt = type === 'stdio' ? 'Command: ' : 'URL: '\n const commandOrUrlValue = await question(prompt)\n if (!commandOrUrlValue) {\n console.error(\n `Error: ${type === 'stdio' ? 'Command' : 'URL'} is required`,\n )\n rl.close()\n process.exit(1)\n }\n\n let serverArgs: string[] = []\n let serverEnv: Record<string, string> = {}\n\n if (type === 'stdio') {\n const argsStr = await question(\n 'Command arguments (space-separated): ',\n )\n serverArgs = argsStr ? argsStr.split(' ').filter(Boolean) : []\n\n const envStr = await question(\n 'Environment variables (format: KEY1=value1,KEY2=value2): ',\n )\n if (envStr) {\n const envPairs = envStr.split(',').map(pair => pair.trim())\n serverEnv = parseEnvVars(envPairs.map(pair => pair))\n }\n }\n\n const scopeStr = await question(\n 'Configuration scope (local, user, or project) [local]: ',\n )\n const scopeInfo = normalizeMcpScopeForCli(scopeStr)\n const serverScope = scopeInfo.scope\n\n rl.close()\n\n if (type === 'http') {\n addMcpServer(\n serverName,\n { type: 'http', url: commandOrUrlValue },\n serverScope,\n )\n console.log(\n `Added HTTP MCP server ${serverName} with URL ${commandOrUrlValue} to ${scopeInfo.display} config`,\n )\n } else if (type === 'sse') {\n addMcpServer(\n serverName,\n { type: 'sse', url: commandOrUrlValue },\n serverScope,\n )\n console.log(\n `Added SSE MCP server ${serverName} with URL ${commandOrUrlValue} to ${scopeInfo.display} config`,\n )\n } else if (type === 'ws') {\n addMcpServer(\n serverName,\n { type: 'ws', url: commandOrUrlValue },\n serverScope,\n )\n console.log(\n `Added WebSocket MCP server ${serverName} with URL ${commandOrUrlValue} to ${scopeInfo.display} config`,\n )\n } else {\n addMcpServer(\n serverName,\n {\n type: 'stdio',\n command: commandOrUrlValue,\n args: serverArgs,\n env: serverEnv,\n },\n serverScope,\n )\n\n console.log(\n `Added stdio MCP server ${serverName} with command: ${commandOrUrlValue} ${serverArgs.join(' ')} to ${scopeInfo.display} config`,\n )\n }\n } else if (name && commandOrUrl) {\n const scopeInfo = normalizeMcpScopeForCli(options.scope)\n const transportInfo = normalizeMcpTransport(options.transport)\n\n if (transportInfo.transport === 'stdio') {\n if (options.header?.length) {\n throw new Error(\n '--header can only be used with --transport http or --transport sse',\n )\n }\n\n const env = parseEnvVars(options.env)\n if (!transportInfo.explicit && looksLikeMcpUrl(commandOrUrl)) {\n console.warn(\n `Warning: \"${commandOrUrl}\" looks like a URL. Default transport is stdio, so it will be treated as a command.`,\n )\n console.warn(\n `If you meant to add an HTTP MCP server, run: ${PRODUCT_COMMAND} mcp add ${name} ${commandOrUrl} --transport http`,\n )\n console.warn(\n `If you meant to add a legacy SSE MCP server, run: ${PRODUCT_COMMAND} mcp add ${name} ${commandOrUrl} --transport sse`,\n )\n }\n\n addMcpServer(\n name,\n { type: 'stdio', command: commandOrUrl, args: args || [], env },\n scopeInfo.scope,\n )\n\n console.log(\n `Added stdio MCP server ${name} with command: ${commandOrUrl} ${(args || []).join(' ')} to ${scopeInfo.display} config`,\n )\n } else {\n if (options.env?.length) {\n throw new Error('--env is only supported for stdio MCP servers')\n }\n if (args?.length) {\n throw new Error(\n 'Unexpected arguments. URL-based MCP servers do not accept command args.',\n )\n }\n\n const headers = parseMcpHeaders(options.header)\n addMcpServer(\n name,\n {\n type: transportInfo.transport,\n url: commandOrUrl,\n ...(headers ? { headers } : {}),\n },\n scopeInfo.scope,\n )\n\n const kind = transportInfo.transport.toUpperCase()\n console.log(\n `Added ${kind} MCP server ${name} with URL: ${commandOrUrl} to ${scopeInfo.display} config`,\n )\n if (headers) {\n console.log(`Headers: ${JSON.stringify(headers, null, 2)}`)\n }\n }\n } else {\n console.error(\n 'Error: Missing required arguments. Either provide no arguments for interactive mode or specify name and command/URL.',\n )\n process.exit(1)\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n mcp\n .command('remove <name>')\n .description('Remove an MCP server')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (local, user, or project)',\n )\n .action(async (name: string, options: { scope?: string }) => {\n try {\n if (options.scope) {\n const scopeInfo = normalizeMcpScopeForCli(options.scope)\n removeMcpServer(name, scopeInfo.scope)\n console.log(\n `Removed MCP server ${name} from ${scopeInfo.display} config`,\n )\n process.exit(0)\n }\n\n const matches: Array<{\n scope: ReturnType<typeof ensureConfigScope>\n display: string\n }> = []\n\n const projectConfig = getCurrentProjectConfig()\n if (projectConfig.mcpServers?.[name]) {\n matches.push({\n scope: ensureConfigScope('project'),\n display: 'local',\n })\n }\n\n const globalConfig = getGlobalConfig()\n if (globalConfig.mcpServers?.[name]) {\n matches.push({ scope: ensureConfigScope('global'), display: 'user' })\n }\n\n const projectFileDefinitions = getProjectMcpServerDefinitions()\n if (projectFileDefinitions.servers[name]) {\n const source = projectFileDefinitions.sources[name]\n if (source === '.mcp.json') {\n matches.push({\n scope: ensureConfigScope('mcpjson'),\n display: 'project',\n })\n } else {\n matches.push({\n scope: ensureConfigScope('mcprc'),\n display: 'mcprc',\n })\n }\n }\n\n if (matches.length === 0) {\n throw new Error(`No MCP server found with name: ${name}`)\n }\n\n if (matches.length > 1) {\n console.error(\n `MCP server \"${name}\" exists in multiple scopes: ${matches\n .map(m => m.display)\n .join(', ')}`,\n )\n console.error('Please specify which scope to remove from:')\n for (const match of matches) {\n console.error(\n ` ${PRODUCT_COMMAND} mcp remove ${name} --scope ${match.display}`,\n )\n }\n process.exit(1)\n }\n\n const match = matches[0]!\n removeMcpServer(name, match.scope)\n console.log(`Removed MCP server ${name} from ${match.display} config`)\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('list')\n .description('List configured MCP servers')\n .action(async () => {\n try {\n const servers = listMCPServers()\n if (Object.keys(servers).length === 0) {\n console.log(\n `No MCP servers configured. Use \\`${PRODUCT_COMMAND} mcp add\\` to add a server.`,\n )\n process.exit(0)\n }\n\n const projectFileServers = getProjectMcpServerDefinitions()\n const clients = await getClients()\n const clientByName = new Map<string, (typeof clients)[number]>()\n for (const client of clients) {\n clientByName.set(client.name, client)\n }\n\n const names = Object.keys(servers).sort((a, b) => a.localeCompare(b))\n for (const name of names) {\n const server = servers[name]!\n\n const client = clientByName.get(name)\n const status =\n client?.type === 'connected'\n ? 'connected'\n : client?.type === 'failed'\n ? 'failed'\n : projectFileServers.servers[name]\n ? (() => {\n const approval = getMcprcServerStatus(name)\n if (approval === 'pending') return 'pending'\n if (approval === 'rejected') return 'rejected'\n return 'disconnected'\n })()\n : 'disconnected'\n\n const summary = (() => {\n switch (server.type) {\n case 'http':\n return `${server.url} (http)`\n case 'sse':\n return `${server.url} (sse)`\n case 'sse-ide':\n return `${server.url} (sse-ide)`\n case 'ws':\n return `${server.url} (ws)`\n case 'ws-ide':\n return `${server.url} (ws-ide)`\n case 'stdio':\n default:\n return `${server.command} ${(server.args || []).join(' ')} (stdio)`\n }\n })()\n\n console.log(`${name}: ${summary} [${status}]`)\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-json <name> <json>')\n .description('Add an MCP server with a JSON string')\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project, global, or mcprc)',\n 'project',\n )\n .action(async (name, jsonStr, options) => {\n try {\n const scope = ensureConfigScope(options.scope)\n\n let serverConfig\n try {\n serverConfig = JSON.parse(jsonStr)\n } catch (e) {\n console.error('Error: Invalid JSON string')\n process.exit(1)\n }\n\n if (\n !serverConfig.type ||\n !['stdio', 'sse', 'http', 'ws', 'sse-ide', 'ws-ide'].includes(\n serverConfig.type,\n )\n ) {\n console.error(\n 'Error: Server type must be one of: \"stdio\", \"http\", \"sse\", \"ws\", \"sse-ide\", \"ws-ide\"',\n )\n process.exit(1)\n }\n\n if (\n ['sse', 'http', 'ws', 'sse-ide', 'ws-ide'].includes(\n serverConfig.type,\n ) &&\n !serverConfig.url\n ) {\n console.error('Error: URL-based MCP servers must have a URL')\n process.exit(1)\n }\n\n if (serverConfig.type === 'stdio' && !serverConfig.command) {\n console.error('Error: stdio server must have a command')\n process.exit(1)\n }\n\n if (\n ['sse-ide', 'ws-ide'].includes(serverConfig.type) &&\n !serverConfig.ideName\n ) {\n console.error('Error: IDE MCP servers must include ideName')\n process.exit(1)\n }\n\n\n addMcpServer(name, serverConfig, scope)\n\n switch (serverConfig.type) {\n case 'http':\n console.log(\n `Added HTTP MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n break\n case 'sse':\n console.log(\n `Added SSE MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n break\n case 'sse-ide':\n console.log(\n `Added SSE-IDE MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n break\n case 'ws':\n console.log(\n `Added WS MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n break\n case 'ws-ide':\n console.log(\n `Added WS-IDE MCP server ${name} with URL ${serverConfig.url} to ${scope} config`,\n )\n break\n case 'stdio':\n default:\n console.log(\n `Added stdio MCP server ${name} with command: ${serverConfig.command} ${(\n serverConfig.args || []\n ).join(' ')} to ${scope} config`,\n )\n break\n }\n\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('get <name>')\n .description('Get details about an MCP server')\n .action(async (name: string) => {\n try {\n const server = getMcpServer(name)\n if (!server) {\n console.error(`No MCP server found with name: ${name}`)\n process.exit(1)\n }\n\n const projectFileServers = getProjectMcpServerDefinitions()\n const clients = await getClients()\n const client = clients.find(c => c.name === name)\n\n const status =\n client?.type === 'connected'\n ? 'connected'\n : client?.type === 'failed'\n ? 'failed'\n : projectFileServers.servers[name]\n ? (() => {\n const approval = getMcprcServerStatus(name)\n if (approval === 'pending') return 'pending'\n if (approval === 'rejected') return 'rejected'\n return 'disconnected'\n })()\n : 'disconnected'\n\n const scopeDisplay = (() => {\n switch (server.scope) {\n case 'project':\n return 'local'\n case 'global':\n return 'user'\n case 'mcpjson':\n return 'project'\n case 'mcprc':\n return 'mcprc'\n default:\n return server.scope\n }\n })()\n\n console.log(`${name}:`)\n console.log(` Status: ${status}`)\n console.log(` Scope: ${scopeDisplay}`)\n\n const printHeaders = (headers: Record<string, string> | undefined) => {\n if (!headers || Object.keys(headers).length === 0) return\n console.log(' Headers:')\n for (const [key, value] of Object.entries(headers)) {\n console.log(` ${key}: ${value}`)\n }\n }\n\n switch (server.type) {\n case 'http':\n console.log(` Type: http`)\n console.log(` URL: ${server.url}`)\n printHeaders(server.headers)\n break\n case 'sse':\n console.log(` Type: sse`)\n console.log(` URL: ${server.url}`)\n printHeaders(server.headers)\n break\n case 'sse-ide':\n console.log(` Type: sse-ide`)\n console.log(` URL: ${server.url}`)\n console.log(` IDE: ${server.ideName}`)\n printHeaders(server.headers)\n break\n case 'ws':\n console.log(` Type: ws`)\n console.log(` URL: ${server.url}`)\n break\n case 'ws-ide':\n console.log(` Type: ws-ide`)\n console.log(` URL: ${server.url}`)\n console.log(` IDE: ${server.ideName}`)\n break\n case 'stdio':\n default:\n console.log(` Type: stdio`)\n console.log(` Command: ${server.command}`)\n console.log(` Args: ${(server.args || []).join(' ')}`)\n if (server.env) {\n console.log(' Environment:')\n for (const [key, value] of Object.entries(server.env)) {\n console.log(` ${key}=${value}`)\n }\n }\n break\n }\n process.exit(0)\n } catch (error) {\n console.error((error as Error).message)\n process.exit(1)\n }\n })\n\n mcp\n .command('add-from-claude-desktop')\n .description(\n 'Import MCP servers from a desktop MCP host config (macOS, Windows and WSL)',\n )\n .option(\n '-s, --scope <scope>',\n 'Configuration scope (project, global, or mcprc)',\n 'project',\n )\n .action(async options => {\n try {\n const scope = ensureConfigScope(options.scope)\n const platform = process.platform\n\n const { existsSync, readFileSync } = await import('fs')\n const { join } = await import('path')\n const { exec } = await import('child_process')\n\n const isWSL =\n platform === 'linux' &&\n existsSync('/proc/version') &&\n readFileSync('/proc/version', 'utf-8')\n .toLowerCase()\n .includes('microsoft')\n\n if (platform !== 'darwin' && platform !== 'win32' && !isWSL) {\n console.error(\n 'Error: This command is only supported on macOS, Windows, and WSL',\n )\n process.exit(1)\n }\n\n let configPath\n if (platform === 'darwin') {\n configPath = join(\n process.env.HOME || '~',\n 'Library/Application Support/Claude/claude_desktop_config.json',\n )\n } else if (platform === 'win32') {\n configPath = join(\n process.env.APPDATA || '',\n 'Claude/claude_desktop_config.json',\n )\n } else if (isWSL) {\n const whoamiCommand = await new Promise<string>((resolve, reject) => {\n exec(\n 'powershell.exe -Command \"whoami\"',\n (err: Error, stdout: string) => {\n if (err) reject(err)\n else resolve(stdout.trim().split('\\\\').pop() || '')\n },\n )\n })\n\n configPath = `/mnt/c/Users/${whoamiCommand}/AppData/Roaming/Claude/claude_desktop_config.json`\n }\n\n if (!existsSync(configPath)) {\n console.error(`Error: Config file not found at ${configPath}`)\n process.exit(1)\n }\n\n let config\n try {\n const configContent = readFileSync(configPath, 'utf-8')\n config = JSON.parse(configContent)\n } catch (err) {\n console.error(`Error reading config file: ${err}`)\n process.exit(1)\n }\n\n const mcpServers = config.mcpServers || {}\n const serverNames = Object.keys(mcpServers)\n const numServers = serverNames.length\n\n if (numServers === 0) {\n console.log('No MCP servers found in the desktop config')\n process.exit(0)\n }\n\n const serversInfo = serverNames.map(name => {\n const server = mcpServers[name]\n let description = ''\n\n switch (server.type) {\n case 'http':\n description = `HTTP: ${server.url}`\n break\n case 'sse':\n description = `SSE: ${server.url}`\n break\n case 'sse-ide':\n description = `SSE-IDE (${server.ideName}): ${server.url}`\n break\n case 'ws':\n description = `WS: ${server.url}`\n break\n case 'ws-ide':\n description = `WS-IDE (${server.ideName}): ${server.url}`\n break\n case 'stdio':\n default:\n description = `stdio: ${server.command} ${(server.args || []).join(' ')}`\n break\n }\n\n return { name, description, server }\n })\n\n const ink = await import('ink')\n const reactModule = await import('react')\n const inkjsui = await import('@inkjs/ui')\n const utilsTheme = await import('@utils/theme')\n\n const { render } = ink\n const React = reactModule\n const { MultiSelect } = inkjsui\n const { Box, Text } = ink\n const { getTheme } = utilsTheme\n\n await new Promise<void>(resolve => {\n function ClaudeDesktopImport() {\n const { useState } = reactModule\n const [isFinished, setIsFinished] = useState(false)\n const [importResults, setImportResults] = useState(\n [] as { name: string; success: boolean }[],\n )\n const [isImporting, setIsImporting] = useState(false)\n const theme = getTheme()\n\n const importServers = async (selectedServers: string[]) => {\n setIsImporting(true)\n const results = []\n\n for (const name of selectedServers) {\n try {\n const server = mcpServers[name]\n\n const existingServer = getMcpServer(name)\n if (existingServer) {\n continue\n }\n\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n setImportResults(results)\n setIsImporting(false)\n setIsFinished(true)\n\n setTimeout(() => {\n resolve()\n }, 1000)\n }\n\n const handleConfirm = async (selectedServers: string[]) => {\n const existingServers = selectedServers.filter(name =>\n getMcpServer(name),\n )\n\n if (existingServers.length > 0) {\n const results = []\n\n const newServers = selectedServers.filter(\n name => !getMcpServer(name),\n )\n for (const name of newServers) {\n try {\n const server = mcpServers[name]\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n for (const name of existingServers) {\n try {\n const server = mcpServers[name]\n addMcpServer(name, server as McpServerConfig, scope)\n results.push({ name, success: true })\n } catch (err) {\n results.push({ name, success: false })\n }\n }\n\n setImportResults(results)\n setIsImporting(false)\n setIsFinished(true)\n\n setTimeout(() => {\n resolve()\n }, 1000)\n } else {\n await importServers(selectedServers)\n }\n }\n\n return (\n <Box flexDirection=\"column\" padding={1}>\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={theme.kode}\n padding={1}\n width={'100%'}\n >\n <Text bold color={theme.kode}>\n Import MCP Servers from Desktop Config\n </Text>\n\n <Box marginY={1}>\n <Text>\n Found {numServers} MCP servers in the desktop config.\n </Text>\n </Box>\n\n <Text>Please select the servers you want to import:</Text>\n\n <Box marginTop={1}>\n <MultiSelect\n options={serverNames.map(name => ({\n label: name,\n value: name,\n }))}\n defaultValue={serverNames}\n onSubmit={handleConfirm}\n />\n </Box>\n </Box>\n\n <Box marginTop={0} marginLeft={3}>\n <Text dimColor>\n Space to select \u00B7 Enter to confirm \u00B7 Esc to cancel\n </Text>\n </Box>\n\n {isFinished && (\n <Box marginTop={1}>\n <Text color={theme.success}>\n Successfully imported{' '}\n {importResults.filter(r => r.success).length} MCP server\n to local config.\n </Text>\n </Box>\n )}\n </Box>\n )\n }\n\n const { unmount } = render(<ClaudeDesktopImport />)\n\n setTimeout(() => {\n unmount()\n resolve()\n }, 30000)\n })\n\n process.exit(0)\n } catch (error) {\n console.error(`Error: ${(error as Error).message}`)\n process.exit(1)\n }\n })\n\n const resetMcpChoices = () => {\n const config = getCurrentProjectConfig()\n saveCurrentProjectConfig({\n ...config,\n approvedMcprcServers: [],\n rejectedMcprcServers: [],\n })\n console.log(\n 'All project-file MCP server approvals/rejections (.mcp.json/.mcprc) have been reset.',\n )\n console.log(\n `You will be prompted for approval next time you start ${PRODUCT_NAME}.`,\n )\n process.exit(0)\n }\n\n mcp\n .command('reset-project-choices')\n .description(\n 'Reset approvals for project-file MCP servers (.mcp.json/.mcprc) in this project',\n )\n .action(() => {\n resetMcpChoices()\n })\n\n mcp\n .command('reset-mcprc-choices')\n .description(\n 'Reset approvals for project-file MCP servers (.mcp.json/.mcprc) in this project',\n )\n .action(() => {\n resetMcpChoices()\n })\n\n program\n .command('doctor')\n .description(`Check the health of your ${PRODUCT_NAME} installation`)\n .action(async () => {\n await new Promise<void>(resolve => {\n ;(async () => {\n const { render } = await import('ink')\n render(<Doctor onDone={() => resolve()} doctorMode={true} />)\n })()\n })\n process.exit(0)\n })\n\n\n program\n .command('update')\n .description('Show manual upgrade commands (no auto-install)')\n .action(async () => {\n console.log(`Current version: ${MACRO.VERSION}`)\n console.log('Checking for updates...')\n\n const { getLatestVersion, getUpdateCommandSuggestions } =\n await import('@utils/session/autoUpdater')\n const latestVersion = await getLatestVersion()\n\n if (!latestVersion) {\n console.error('Failed to check for updates')\n process.exit(1)\n }\n\n if (latestVersion === MACRO.VERSION) {\n console.log(`${PRODUCT_NAME} is up to date`)\n process.exit(0)\n }\n\n console.log(`New version available: ${latestVersion}`)\n const cmds = await getUpdateCommandSuggestions()\n console.log('\\nRun one of the following commands to update:')\n for (const c of cmds) console.log(` ${c}`)\n if (process.platform !== 'win32') {\n console.log(\n '\\nNote: you may need to prefix with \"sudo\" on macOS/Linux.',\n )\n }\n process.exit(0)\n })\n\n program\n .command('log')\n .description('Manage conversation logs.')\n .argument(\n '[number]',\n 'A number (0, 1, 2, etc.) to display a specific log',\n parseInt,\n )\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (number, { cwd }) => {\n await setup(cwd, false)\n\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <LogList context={context} type=\"messages\" logNumber={number} />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n })\n\n program\n .command('resume')\n .description(\n 'Resume a previous conversation. Optionally provide a session ID or session name (legacy: log index or file path).',\n )\n .argument(\n '[identifier]',\n 'A session ID or session name (legacy: log index or file path)',\n )\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .option('-e, --enable-architect', 'Enable the Architect tool', () => true)\n .option('-v, --verbose', 'Do not truncate message output', () => true)\n .option(\n '--safe',\n 'Enable strict permission checking mode (default is permissive)',\n () => true,\n )\n .option(\n '--disable-slash-commands',\n 'Disable slash commands (treat /... as plain text)',\n () => true,\n )\n .action(\n async (\n identifier,\n { cwd, enableArchitect, safe, verbose, disableSlashCommands },\n ) => {\n await setup(cwd, safe)\n assertMinVersion()\n\n const [{ getTools }, { getCommands }] = await Promise.all([\n import('@tools'),\n import('@commands'),\n ])\n const [allTools, commands, mcpClients] = await Promise.all([\n getTools(\n enableArchitect ?? getCurrentProjectConfig().enableArchitectTool,\n ),\n getCommands(),\n getClients(),\n ])\n const tools =\n disableSlashCommands === true\n ? allTools.filter(t => t.name !== 'SlashCommand')\n : allTools\n\n if (identifier !== undefined) {\n const { loadKodeAgentSessionMessages } =\n await import('@utils/protocol/kodeAgentSessionLoad')\n const { resolveResumeSessionIdentifier } =\n await import('@utils/protocol/kodeAgentSessionResume')\n const { setKodeAgentSessionId } =\n await import('@utils/protocol/kodeAgentSessionId')\n\n const rawIdentifier = String(identifier).trim()\n const isLegacyNumber = /^-?\\\\d+$/.test(rawIdentifier)\n const isLegacyPath = !isLegacyNumber && existsSync(rawIdentifier)\n\n let messages: any[] | undefined\n let messageLogName: string = dateToFilename(new Date())\n let initialForkNumber: number | undefined = undefined\n\n try {\n if (isLegacyNumber || isLegacyPath) {\n const logs = await loadLogList(CACHE_PATHS.messages())\n if (isLegacyNumber) {\n const number = Math.abs(parseInt(rawIdentifier, 10))\n const log = logs[number]\n if (!log) {\n console.error('No conversation found at index', number)\n process.exit(1)\n }\n messages = await loadMessagesFromLog(log.fullPath, tools)\n messageLogName = log.date\n initialForkNumber = getNextAvailableLogForkNumber(\n log.date,\n log.forkNumber ?? 1,\n 0,\n )\n } else {\n messages = await loadMessagesFromLog(rawIdentifier, tools)\n const pathSegments = rawIdentifier.split('/')\n const filename =\n pathSegments[pathSegments.length - 1] ?? 'unknown'\n const { date, forkNumber } = parseLogFilename(filename)\n messageLogName = date\n initialForkNumber = getNextAvailableLogForkNumber(\n date,\n forkNumber ?? 1,\n 0,\n )\n }\n } else {\n const resolved = resolveResumeSessionIdentifier({\n cwd,\n identifier: rawIdentifier,\n })\n if (resolved.kind === 'ok') {\n setKodeAgentSessionId(resolved.sessionId)\n messages = loadKodeAgentSessionMessages({\n cwd,\n sessionId: resolved.sessionId,\n })\n } else if (resolved.kind === 'different_directory') {\n console.error(\n resolved.otherCwd\n ? `Error: That session belongs to a different directory: ${resolved.otherCwd}`\n : `Error: That session belongs to a different directory.`,\n )\n process.exit(1)\n } else if (resolved.kind === 'ambiguous') {\n console.error(\n `Error: Multiple sessions match \"${rawIdentifier}\": ${resolved.matchingSessionIds.join(\n ', ',\n )}`,\n )\n process.exit(1)\n } else {\n console.error(\n `No conversation found with session ID or name: ${rawIdentifier}`,\n )\n process.exit(1)\n }\n }\n\n const isDefaultModel = await isDefaultSlowAndCapableModel()\n {\n const { render } = await import('ink')\n const { REPL } = await import('@screens/REPL')\n render(\n <REPL\n initialPrompt=\"\"\n messageLogName={messageLogName}\n initialForkNumber={initialForkNumber}\n shouldShowPromptInput={true}\n verbose={verbose}\n commands={commands}\n disableSlashCommands={disableSlashCommands === true}\n tools={tools}\n safeMode={safe}\n initialMessages={messages}\n mcpClients={mcpClients}\n isDefaultModel={isDefaultModel}\n />,\n { exitOnCtrlC: false },\n )\n }\n } catch (error) {\n logError(`Failed to load conversation: ${error}`)\n process.exit(1)\n }\n } else {\n const { listKodeAgentSessions } =\n await import('@utils/protocol/kodeAgentSessionResume')\n const sessions = listKodeAgentSessions({ cwd })\n if (sessions.length === 0) {\n console.error('No conversation found to resume')\n process.exit(1)\n }\n\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <ResumeConversation\n cwd={cwd}\n context={context}\n commands={commands}\n sessions={sessions}\n tools={tools}\n verbose={verbose}\n safeMode={safe}\n disableSlashCommands={disableSlashCommands === true}\n mcpClients={mcpClients}\n initialPrompt=\"\"\n />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n }\n },\n )\n\n program\n .command('error')\n .description(\n 'View error logs. Optionally provide a number (0, -1, -2, etc.) to display a specific log.',\n )\n .argument(\n '[number]',\n 'A number (0, 1, 2, etc.) to display a specific log',\n parseInt,\n )\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (number, { cwd }) => {\n await setup(cwd, false)\n\n const context: { unmount?: () => void } = {}\n ;(async () => {\n const { render } = await import('ink')\n const { unmount } = render(\n <LogList context={context} type=\"errors\" logNumber={number} />,\n renderContextWithExitOnCtrlC,\n )\n context.unmount = unmount\n })()\n })\n\n const context = program\n .command('context')\n .description(\n `Set static context (eg. ${PRODUCT_COMMAND} context add-file ./src/*.py)`,\n )\n\n context\n .command('get <key>')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .description('Get a value from context')\n .action(async (key, { cwd }) => {\n await setup(cwd, false)\n\n const context = omitKeys(\n await getContext(),\n 'codeStyle',\n 'directoryStructure',\n )\n console.log(context[key])\n process.exit(0)\n })\n\n context\n .command('set <key> <value>')\n .description('Set a value in context')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (key, value, { cwd }) => {\n await setup(cwd, false)\n\n setContext(key, value)\n console.log(`Set context.${key} to \"${value}\"`)\n process.exit(0)\n })\n\n context\n .command('list')\n .description('List all context values')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async ({ cwd }) => {\n await setup(cwd, false)\n\n const context = omitKeys(\n await getContext(),\n 'codeStyle',\n 'directoryStructure',\n 'gitStatus',\n )\n console.log(JSON.stringify(context, null, 2))\n process.exit(0)\n })\n\n context\n .command('remove <key>')\n .description('Remove a value from context')\n .option('--cwd <cwd>', 'The current working directory', String, cwd())\n .action(async (key, { cwd }) => {\n await setup(cwd, false)\n\n removeContext(key)\n console.log(`Removed context.${key}`)\n process.exit(0)\n })\n\n await program.parseAsync(process.argv)\n return program\n}\n\nasync function stdin() {\n if (process.stdin.isTTY) {\n return ''\n }\n\n let data = ''\n for await (const chunk of process.stdin) data += chunk\n return data\n}\n\nlet isGracefulExitInProgress = false\nasync function gracefulExit(code = 0) {\n if (isGracefulExitInProgress) {\n process.exit(code)\n return\n }\n isGracefulExitInProgress = true\n\n try {\n const { runSessionEndHooks } = await import('@utils/session/kodeHooks')\n const { getKodeAgentSessionId } =\n await import('@utils/protocol/kodeAgentSessionId')\n const { tmpdir } = await import('os')\n const { join } = await import('path')\n\n const sessionId = getKodeAgentSessionId()\n const transcriptPath = join(\n tmpdir(),\n 'kode-hooks-transcripts',\n `${sessionId}.transcript.txt`,\n )\n\n const { signal, cleanup } = (() => {\n if (\n typeof AbortSignal !== 'undefined' &&\n typeof (AbortSignal as any).timeout === 'function'\n ) {\n return {\n signal: (AbortSignal as any).timeout(5000) as AbortSignal,\n cleanup: () => {},\n }\n }\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), 5000)\n return { signal: controller.signal, cleanup: () => clearTimeout(timer) }\n })()\n\n try {\n await runSessionEndHooks({\n reason: 'exit',\n cwd: cwd(),\n transcriptPath,\n signal,\n })\n } finally {\n cleanup()\n }\n } catch {}\n\n try {\n resetCursor()\n } catch {}\n try {\n BunShell.getInstance().close()\n } catch {}\n process.exit(code)\n}\n\nlet didInstallProcessHandlers = false\nexport function installProcessHandlers(): void {\n if (didInstallProcessHandlers) return\n didInstallProcessHandlers = true\n\n process.on('exit', () => {\n resetCursor()\n BunShell.getInstance().close()\n })\n\n process.on('SIGINT', () => void gracefulExit(0))\n process.on('SIGTERM', () => void gracefulExit(0))\n process.on('SIGBREAK', () => void gracefulExit(0))\n process.on('unhandledRejection', err => {\n console.error('Unhandled rejection:', err)\n void gracefulExit(1)\n })\n process.on('uncaughtException', err => {\n console.error('Uncaught exception:', err)\n void gracefulExit(1)\n })\n}\n\nfunction resetCursor() {\n const terminal = process.stderr.isTTY\n ? process.stderr\n : process.stdout.isTTY\n ? process.stdout\n : undefined\n terminal?.write(`\\u001B[?25h${cursorShow}`)\n}\n", "export function createStdioCanUseTool(args: {\n normalizedPermissionPromptTool: string | null\n structured: any | null\n permissionTimeoutMs: number\n cwd: string\n printOptions: any\n hasPermissionsToUseTool: any\n applyToolPermissionContextUpdates: any\n persistToolPermissionUpdateToDisk: any\n}): any {\n if (args.normalizedPermissionPromptTool !== 'stdio' || !args.structured) {\n return args.hasPermissionsToUseTool\n }\n\n return (async (\n tool: any,\n input: any,\n toolUseContext: any,\n assistantMessage: any,\n ) => {\n const base = await args.hasPermissionsToUseTool(\n tool,\n input,\n toolUseContext,\n assistantMessage,\n )\n\n if (base.result === true) return { result: true as const }\n\n const denied = base as Extract<typeof base, { result: false }>\n if (denied.shouldPromptUser === false) {\n return { result: false as const, message: denied.message }\n }\n\n try {\n const blockedPath =\n typeof (denied as any).blockedPath === 'string'\n ? String((denied as any).blockedPath)\n : typeof (input as any)?.file_path === 'string'\n ? String((input as any).file_path)\n : typeof (input as any)?.notebook_path === 'string'\n ? String((input as any).notebook_path)\n : typeof (input as any)?.path === 'string'\n ? String((input as any).path)\n : undefined\n\n const decisionReason =\n typeof (denied as any).decisionReason === 'string'\n ? String((denied as any).decisionReason)\n : undefined\n\n const response = await args.structured.sendRequest(\n {\n subtype: 'can_use_tool',\n tool_name: tool.name,\n input,\n ...(typeof toolUseContext?.toolUseId === 'string' && toolUseContext.toolUseId\n ? { tool_use_id: toolUseContext.toolUseId }\n : {}),\n ...(typeof toolUseContext?.agentId === 'string' && toolUseContext.agentId\n ? { agent_id: toolUseContext.agentId }\n : {}),\n ...(Array.isArray((denied as any).suggestions)\n ? {\n permission_suggestions: (denied as any).suggestions,\n }\n : {}),\n ...(blockedPath ? { blocked_path: blockedPath } : {}),\n ...(decisionReason ? { decision_reason: decisionReason } : {}),\n },\n {\n signal: toolUseContext.abortController.signal,\n timeoutMs: args.permissionTimeoutMs,\n },\n )\n\n if (response && (response as any).behavior === 'allow') {\n const updatedInput =\n (response as any).updatedInput && typeof (response as any).updatedInput === 'object'\n ? (response as any).updatedInput\n : null\n if (updatedInput) {\n Object.assign(input, updatedInput)\n }\n\n const updatedPermissionsRaw = (response as any).updatedPermissions\n const updatedPermissions =\n Array.isArray(updatedPermissionsRaw) &&\n updatedPermissionsRaw.every(\n u => u && typeof u === 'object' && typeof (u as any).type === 'string',\n )\n ? (updatedPermissionsRaw as any[])\n : null\n\n if (updatedPermissions && args.printOptions.toolPermissionContext) {\n const next = args.applyToolPermissionContextUpdates(\n args.printOptions.toolPermissionContext,\n updatedPermissions as any,\n )\n args.printOptions.toolPermissionContext = next\n if (toolUseContext?.options) {\n toolUseContext.options.toolPermissionContext = next\n }\n for (const update of updatedPermissions as any) {\n args.persistToolPermissionUpdateToDisk({\n update,\n projectDir: args.cwd,\n })\n }\n }\n\n return { result: true as const }\n }\n\n if (response && (response as any).behavior === 'deny') {\n if ((response as any).interrupt === true) {\n toolUseContext.abortController.abort()\n }\n }\n\n return {\n result: false as const,\n message:\n typeof (response as any)?.message === 'string'\n ? String((response as any).message)\n : denied.message,\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return {\n result: false as const,\n message: `Permission prompt failed: ${msg}`,\n shouldPromptUser: false,\n }\n }\n }) as any\n}\n", "export function createPrintModeControlRequestHandler(args: {\n printOptions: any\n mcpClients: any[]\n}): (msg: any) => Promise<any> {\n return async msg => {\n const subtype = msg.request?.subtype\n\n if (subtype === 'initialize') {\n return\n }\n\n if (subtype === 'set_permission_mode') {\n const mode = (msg.request as any)?.mode\n if (\n mode === 'default' ||\n mode === 'acceptEdits' ||\n mode === 'plan' ||\n mode === 'dontAsk' ||\n mode === 'bypassPermissions'\n ) {\n if (args.printOptions.toolPermissionContext) {\n args.printOptions.toolPermissionContext.mode = mode\n }\n }\n return\n }\n\n if (subtype === 'set_model') {\n const requested = (msg.request as any)?.model\n if (requested === 'default') {\n args.printOptions.model = undefined as any\n } else if (typeof requested === 'string' && requested.trim()) {\n args.printOptions.model = requested.trim()\n }\n return\n }\n\n if (subtype === 'set_max_thinking_tokens') {\n const value = (msg.request as any)?.max_thinking_tokens\n if (value === null) {\n args.printOptions.maxThinkingTokens = 0\n } else if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {\n args.printOptions.maxThinkingTokens = value\n }\n return\n }\n\n if (subtype === 'mcp_status') {\n return {\n mcpServers: args.mcpClients.map(c => ({\n name: c.name,\n status: c.type,\n ...(c.type === 'connected' && c.capabilities\n ? { serverInfo: c.capabilities }\n : {}),\n })),\n }\n }\n\n if (subtype === 'mcp_message') {\n const serverName = (msg.request as any)?.server_name\n const message = (msg.request as any)?.message\n if (typeof serverName === 'string' && serverName) {\n const found = args.mcpClients.find(c => c.name === serverName)\n if (found && found.type === 'connected') {\n const transport = (found.client as any)?.transport\n if (transport && typeof transport.onmessage === 'function') {\n transport.onmessage(message)\n }\n }\n }\n return\n }\n\n if (subtype === 'mcp_set_servers') {\n return { ok: true, sdkServersChanged: false }\n }\n\n if (subtype === 'rewind_files') {\n throw new Error('rewind_files is not supported in Kode yet.')\n }\n\n throw new Error(`Unsupported control request subtype: ${String(subtype)}`)\n }\n}\n\n", "export async function runPrintModeStreamJsonSession(args: {\n structured: any\n query: any\n writeSdkLine: (obj: any) => void\n sessionId: string\n systemPrompt: string[]\n jsonSchema?: Record<string, unknown> | null\n context: { [k: string]: string }\n canUseTool: any\n toolUseContextBase: any\n replayUserMessages: boolean\n getTotalCostUsd: () => number\n onActiveTurnAbortControllerChanged?: (\n controller: AbortController | null,\n ) => void\n initialMessages?: any[]\n}): Promise<void> {\n const { runKodeAgentStreamJsonSession } = await import(\n '@utils/protocol/kodeAgentStreamJsonSession'\n )\n\n await runKodeAgentStreamJsonSession(args as any)\n}\n\n", "import { KodeAgentStructuredStdio } from '@utils/protocol/kodeAgentStructuredStdio'\n\nexport function createPrintModeStructuredStdio(args: {\n enabled: boolean\n stdin: any\n stdout: any\n onInterrupt: () => void\n onControlRequest: (msg: any) => Promise<any>\n}): KodeAgentStructuredStdio | null {\n if (!args.enabled) return null\n\n return new KodeAgentStructuredStdio(args.stdin, args.stdout, {\n onInterrupt: args.onInterrupt,\n onControlRequest: args.onControlRequest,\n })\n}\n\n", "import { addToHistory } from '@history'\nimport { hasPermissionsToUseTool } from '@permissions'\nimport { dateToFilename } from '@utils/log'\nimport { createStdioCanUseTool } from './stdio/canUseTool'\nimport { createPrintModeControlRequestHandler } from './stdio/controlRequestHandler'\nimport { runPrintModeStreamJsonSession } from './stdio/streamJsonSession'\nimport { createPrintModeStructuredStdio } from './stdio/structuredStdio'\n\nexport type RunPrintModeArgs = {\n prompt: string | undefined\n stdinContent: string\n inputPrompt: string\n\n cwd: string\n safe?: boolean\n verbose?: boolean\n\n outputFormat?: string\n inputFormat?: string\n jsonSchema?: string\n permissionPromptTool?: string | null\n replayUserMessages?: boolean\n\n cliTools?: unknown\n tools: any[]\n commands: any[]\n ask: (args: any) => Promise<{ resultText: string }>\n\n initialMessages?: any[]\n sessionPersistence?: boolean\n\n systemPromptOverride?: string\n appendSystemPrompt?: string\n disableSlashCommands?: boolean\n\n allowedTools?: unknown\n disallowedTools?: unknown\n addDir?: unknown\n permissionMode?: string\n dangerouslySkipPermissions?: boolean\n allowDangerouslySkipPermissions?: boolean\n\n model?: string\n mcpClients: any[]\n}\n\nexport async function runPrintMode({\n prompt,\n stdinContent,\n inputPrompt,\n cwd,\n safe,\n verbose,\n outputFormat,\n inputFormat,\n jsonSchema,\n permissionPromptTool,\n replayUserMessages,\n cliTools,\n tools,\n commands,\n ask,\n initialMessages,\n sessionPersistence,\n systemPromptOverride,\n appendSystemPrompt,\n disableSlashCommands,\n allowedTools,\n disallowedTools,\n addDir,\n permissionMode,\n dangerouslySkipPermissions,\n allowDangerouslySkipPermissions,\n model,\n mcpClients,\n}: RunPrintModeArgs): Promise<void> {\n const normalizedOutputFormat = String(outputFormat || 'text')\n .toLowerCase()\n .trim()\n const normalizedInputFormat = String(inputFormat || 'text')\n .toLowerCase()\n .trim()\n\n if (!['text', 'stream-json'].includes(normalizedInputFormat)) {\n console.error(\n `Error: Invalid --input-format \"${inputFormat}\". Expected one of: text, stream-json`,\n )\n process.exit(1)\n }\n\n if (!['text', 'json', 'stream-json'].includes(normalizedOutputFormat)) {\n console.error(\n `Error: Invalid --output-format \"${outputFormat}\". Expected one of: text, json, stream-json`,\n )\n process.exit(1)\n }\n\n if (normalizedOutputFormat === 'stream-json' && !verbose) {\n console.error(\n 'Error: When using --print, --output-format=stream-json requires --verbose',\n )\n process.exit(1)\n }\n\n const normalizedPermissionPromptTool = permissionPromptTool\n ? String(permissionPromptTool).trim()\n : null\n\n if (normalizedPermissionPromptTool) {\n if (normalizedPermissionPromptTool !== 'stdio') {\n console.error(\n `Error: Unsupported --permission-prompt-tool \"${normalizedPermissionPromptTool}\". Only \"stdio\" is supported in Kode right now.`,\n )\n process.exit(1)\n }\n if (normalizedInputFormat !== 'stream-json') {\n console.error(\n 'Error: --permission-prompt-tool=stdio requires --input-format=stream-json',\n )\n process.exit(1)\n }\n if (normalizedOutputFormat !== 'stream-json') {\n console.error(\n 'Error: --permission-prompt-tool=stdio requires --output-format=stream-json',\n )\n process.exit(1)\n }\n }\n\n if (\n normalizedInputFormat === 'stream-json' &&\n normalizedOutputFormat !== 'stream-json'\n ) {\n console.error(\n 'Error: --input-format=stream-json requires --output-format=stream-json',\n )\n process.exit(1)\n }\n\n if (replayUserMessages) {\n if (\n normalizedInputFormat !== 'stream-json' ||\n normalizedOutputFormat !== 'stream-json'\n ) {\n console.error(\n 'Error: --replay-user-messages requires --input-format=stream-json and --output-format=stream-json',\n )\n process.exit(1)\n }\n }\n\n if (normalizedInputFormat === 'stream-json') {\n if (prompt) {\n console.error(\n 'Error: --input-format=stream-json cannot be used with a prompt argument',\n )\n process.exit(1)\n }\n if (stdinContent) {\n console.error(\n 'Error: --input-format=stream-json cannot be used with stdin prompt text',\n )\n process.exit(1)\n }\n } else {\n if (!inputPrompt) {\n console.error(\n 'Error: Input must be provided either through stdin or as a prompt argument when using --print',\n )\n process.exit(1)\n }\n }\n\n const toolsForPrint = (() => {\n if (!cliTools) return tools\n const raw = Array.isArray(cliTools) ? cliTools : [cliTools]\n const flattened = raw\n .flatMap(v => String(v ?? '').split(','))\n .map(v => v.trim())\n if (flattened.length === 0) return tools\n\n if (flattened.length === 1 && flattened[0] === '') return []\n if (flattened.length === 1 && flattened[0] === 'default') return tools\n\n const wanted = new Set(flattened.filter(v => v && v !== 'default'))\n const unknown = [...wanted].filter(\n name => !tools.some(t => t.name === name),\n )\n if (unknown.length > 0) {\n console.error(`Error: Unknown tool(s) in --tools: ${unknown.join(', ')}`)\n process.exit(1)\n }\n\n return tools.filter(t => wanted.has(t.name))\n })()\n\n if (normalizedOutputFormat === 'text') {\n addToHistory(inputPrompt)\n const { resultText: response } = await ask({\n commands,\n hasPermissionsToUseTool,\n messageLogName: dateToFilename(new Date()),\n prompt: inputPrompt,\n cwd,\n tools: toolsForPrint,\n safeMode: safe,\n initialMessages,\n persistSession: sessionPersistence !== false,\n })\n process.stdout.write(`${response}\\n`)\n process.exit(0)\n }\n\n const { createUserMessage } = await import('@utils/messages')\n const { getSystemPrompt } = await import('@constants/prompts')\n const { getContext } = await import('@context')\n const { getTotalCost } = await import('@costTracker')\n const { query } = await import('@query')\n const { getKodeAgentSessionId } =\n await import('@utils/protocol/kodeAgentSessionId')\n const { kodeMessageToSdkMessage, makeSdkInitMessage, makeSdkResultMessage } =\n await import('@utils/protocol/kodeAgentStreamJson')\n const { KodeAgentStructuredStdio } =\n await import('@utils/protocol/kodeAgentStructuredStdio')\n const {\n loadToolPermissionContextFromDisk,\n persistToolPermissionUpdateToDisk,\n } = await import('@utils/permissions/toolPermissionSettings')\n const { applyToolPermissionContextUpdates } =\n await import('@kode-types/toolPermissionContext')\n\n const sessionIdForSdk = getKodeAgentSessionId()\n const startedAt = Date.now()\n const sdkMessages: any[] = []\n\n const baseSystemPrompt =\n typeof systemPromptOverride === 'string' && systemPromptOverride.trim()\n ? [systemPromptOverride]\n : await getSystemPrompt({ disableSlashCommands })\n const systemPrompt =\n typeof appendSystemPrompt === 'string' && appendSystemPrompt.trim()\n ? [...baseSystemPrompt, appendSystemPrompt]\n : baseSystemPrompt\n\n const normalizedJsonSchema =\n typeof jsonSchema === 'string' ? jsonSchema.trim() : ''\n const parsedJsonSchema = (() => {\n if (!normalizedJsonSchema) return null\n try {\n const parsed = JSON.parse(normalizedJsonSchema)\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('Schema must be a JSON object')\n }\n return parsed as Record<string, unknown>\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error)\n console.error(`Error: Invalid --json-schema: ${msg}`)\n process.exit(1)\n }\n })()\n\n if (parsedJsonSchema) {\n systemPrompt.push(\n [\n 'You MUST respond with ONLY valid JSON.',\n 'The JSON MUST validate against the following JSON Schema.',\n 'Do not wrap the JSON in markdown code fences and do not add extra commentary.',\n '',\n `<json_schema>${JSON.stringify(parsedJsonSchema)}</json_schema>`,\n ].join('\\n'),\n )\n }\n const ctx = await getContext()\n\n const isBypassAvailable =\n !safe ||\n Boolean(allowDangerouslySkipPermissions) ||\n Boolean(dangerouslySkipPermissions)\n\n let toolPermissionContext = loadToolPermissionContextFromDisk({\n projectDir: cwd,\n includeKodeProjectConfig: true,\n isBypassPermissionsModeAvailable: isBypassAvailable,\n })\n\n const cliRuleList = (value: unknown): string[] => {\n if (!value) return []\n const raw = Array.isArray(value) ? value : [value]\n return raw\n .flatMap(v => String(v ?? '').split(','))\n .map(v => v.trim())\n .filter(Boolean)\n }\n\n const allowedRules = cliRuleList(allowedTools)\n const deniedRules = cliRuleList(disallowedTools)\n const additionalDirs = cliRuleList(addDir)\n\n const updates: any[] = []\n if (allowedRules.length > 0) {\n updates.push({\n type: 'addRules',\n destination: 'cliArg',\n behavior: 'allow',\n rules: allowedRules,\n })\n }\n if (deniedRules.length > 0) {\n updates.push({\n type: 'addRules',\n destination: 'cliArg',\n behavior: 'deny',\n rules: deniedRules,\n })\n }\n if (additionalDirs.length > 0) {\n updates.push({\n type: 'addDirectories',\n destination: 'cliArg',\n directories: additionalDirs,\n })\n }\n\n const normalizedPermissionMode =\n typeof permissionMode === 'string' ? permissionMode.trim() : ''\n if (normalizedPermissionMode) {\n const normalized =\n normalizedPermissionMode === 'delegate'\n ? 'default'\n : normalizedPermissionMode\n const allowed = new Set([\n 'acceptEdits',\n 'bypassPermissions',\n 'default',\n 'dontAsk',\n 'plan',\n ])\n if (!allowed.has(normalized)) {\n console.error(\n `Error: Invalid --permission-mode \"${normalizedPermissionMode}\". Expected one of: acceptEdits, bypassPermissions, default, delegate, dontAsk, plan`,\n )\n process.exit(1)\n }\n updates.push({\n type: 'setMode',\n destination: 'cliArg',\n mode: normalized,\n })\n }\n\n if (dangerouslySkipPermissions) {\n updates.push({\n type: 'setMode',\n destination: 'cliArg',\n mode: 'bypassPermissions',\n })\n }\n\n if (updates.length > 0) {\n toolPermissionContext = applyToolPermissionContextUpdates(\n toolPermissionContext,\n updates,\n )\n }\n\n const printOptions = {\n commands,\n tools: toolsForPrint,\n verbose: true,\n safeMode: safe,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n persistSession: sessionPersistence !== false,\n toolPermissionContext,\n mcpClients,\n shouldAvoidPermissionPrompts: normalizedInputFormat !== 'stream-json',\n model:\n typeof model === 'string' && model.trim()\n ? model.trim()\n : (undefined as any),\n }\n\n const availableTools = toolsForPrint.map(t => t.name)\n const slashCommands =\n disableSlashCommands === true\n ? undefined\n : commands.filter(c => !c.isHidden).map(c => `/${c.userFacingName()}`)\n const initMsg = makeSdkInitMessage({\n sessionId: sessionIdForSdk,\n cwd,\n tools: availableTools,\n slashCommands,\n })\n\n const writeSdkLine = (obj: any) => {\n process.stdout.write(JSON.stringify(obj) + '\\n')\n }\n\n if (normalizedOutputFormat === 'stream-json') {\n writeSdkLine(initMsg)\n } else {\n sdkMessages.push(initMsg)\n }\n\n let activeTurnAbortController: AbortController | null = null\n const structured = createPrintModeStructuredStdio({\n enabled: normalizedInputFormat === 'stream-json',\n stdin: process.stdin,\n stdout: process.stdout,\n onInterrupt: () => {\n activeTurnAbortController?.abort()\n },\n onControlRequest: createPrintModeControlRequestHandler({\n printOptions,\n mcpClients,\n }),\n })\n\n if (structured) structured.start()\n\n const permissionTimeoutMs = (() => {\n const raw = process.env.KODE_STDIO_PERMISSION_TIMEOUT_MS\n const n = raw ? Number(raw) : NaN\n return Number.isFinite(n) && n > 0 ? n : 30_000\n })()\n\n const canUseTool = createStdioCanUseTool({\n normalizedPermissionPromptTool,\n structured,\n permissionTimeoutMs,\n cwd,\n printOptions,\n hasPermissionsToUseTool,\n applyToolPermissionContextUpdates,\n persistToolPermissionUpdateToDisk,\n })\n\n if (normalizedInputFormat === 'stream-json') {\n if (!structured) {\n console.error('Error: Structured stdin is not available')\n process.exit(1)\n }\n\n await runPrintModeStreamJsonSession({\n structured,\n query,\n writeSdkLine,\n sessionId: sessionIdForSdk,\n systemPrompt,\n jsonSchema: parsedJsonSchema,\n context: ctx,\n canUseTool,\n toolUseContextBase: {\n options: printOptions,\n messageId: undefined,\n readFileTimestamps: {},\n setToolJSX: () => {},\n },\n replayUserMessages: Boolean(replayUserMessages),\n getTotalCostUsd: () => getTotalCost(),\n onActiveTurnAbortControllerChanged: controller => {\n activeTurnAbortController = controller\n },\n initialMessages: initialMessages as any,\n })\n\n process.exit(0)\n }\n\n\n const abortController = new AbortController()\n const userMsg = await (async () => {\n if (normalizedInputFormat !== 'stream-json') {\n addToHistory(inputPrompt)\n return createUserMessage(inputPrompt)\n }\n if (!structured) {\n console.error('Error: Structured stdin is not available')\n process.exit(1)\n }\n\n const sdkUser = await structured.nextUserMessage({\n signal: abortController.signal,\n timeoutMs: 30_000,\n })\n\n if (!sdkUser || typeof sdkUser !== 'object') {\n console.error('Error: Invalid stream-json input (missing user message)')\n process.exit(1)\n }\n\n const sdkMessage = (sdkUser as any).message\n const sdkContent = sdkMessage?.content\n if (typeof sdkContent !== 'string' && !Array.isArray(sdkContent)) {\n console.error('Error: Invalid stream-json user message content')\n process.exit(1)\n }\n\n const m = createUserMessage(sdkContent as any)\n if (typeof (sdkUser as any).uuid === 'string' && (sdkUser as any).uuid) {\n ;(m as any).uuid = String((sdkUser as any).uuid)\n }\n return m\n })()\n\n const baseMessages = [...(initialMessages ?? []), userMsg]\n\n const sdkUser = kodeMessageToSdkMessage(userMsg as any, sessionIdForSdk)\n if (sdkUser) {\n if (normalizedOutputFormat === 'stream-json') {\n writeSdkLine(sdkUser)\n } else {\n sdkMessages.push(sdkUser)\n }\n }\n\n let lastAssistant: any | null = null\n let queryError: unknown = null\n try {\n for await (const m of query(baseMessages, systemPrompt, ctx, canUseTool, {\n options: printOptions,\n abortController,\n messageId: undefined,\n readFileTimestamps: {},\n setToolJSX: () => {},\n })) {\n if (m.type === 'assistant') lastAssistant = m\n const sdk = kodeMessageToSdkMessage(m, sessionIdForSdk)\n if (!sdk) continue\n\n if (normalizedOutputFormat === 'stream-json') {\n writeSdkLine(sdk)\n } else {\n sdkMessages.push(sdk)\n }\n }\n } catch (e) {\n abortController.abort()\n queryError = e\n }\n\n const textFromAssistant = lastAssistant?.message?.content?.find(\n (c: any) => c.type === 'text',\n )?.text\n let text =\n typeof textFromAssistant === 'string'\n ? textFromAssistant\n : queryError instanceof Error\n ? queryError.message\n : queryError\n ? String(queryError)\n : ''\n\n let structuredOutput: Record<string, unknown> | undefined\n if (parsedJsonSchema && !queryError) {\n try {\n const raw = typeof textFromAssistant === 'string' ? textFromAssistant : ''\n const fenced = raw.trim()\n const unfenced = (() => {\n const m = fenced.match(/^```(?:json)?\\\\s*([\\\\s\\\\S]*?)\\\\s*```$/i)\n return m ? m[1]!.trim() : fenced\n })()\n\n const parsed = JSON.parse(unfenced)\n const Ajv = (await import('ajv')).default as any\n const ajv = new Ajv({ allErrors: true, strict: false })\n const validate = ajv.compile(parsedJsonSchema)\n const ok = validate(parsed)\n if (!ok) {\n const errorText =\n typeof ajv.errorsText === 'function'\n ? ajv.errorsText(validate.errors, { separator: '; ' })\n : JSON.stringify(validate.errors ?? [])\n throw new Error(\n `Structured output failed JSON schema validation: ${errorText}`,\n )\n }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('Structured output must be a JSON object')\n }\n structuredOutput = parsed as Record<string, unknown>\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n queryError = new Error(msg)\n text = msg\n }\n }\n\n const usage = lastAssistant?.message?.usage\n const totalCostUsd = getTotalCost()\n const durationMs = Date.now() - startedAt\n const resultMsg = makeSdkResultMessage({\n sessionId: sessionIdForSdk,\n result: String(text),\n structuredOutput,\n numTurns: 1,\n usage,\n totalCostUsd,\n durationMs,\n durationApiMs: 0,\n isError: Boolean(queryError),\n })\n\n if (normalizedOutputFormat === 'stream-json') {\n writeSdkLine(resultMsg)\n process.exit(0)\n }\n\n sdkMessages.push(resultMsg)\n if (verbose) {\n process.stdout.write(`${JSON.stringify(sdkMessages, null, 2)}\\n`)\n } else {\n process.stdout.write(`${JSON.stringify(resultMsg, null, 2)}\\n`)\n }\n process.exit(0)\n}\n", "import { promises as fs } from 'fs'\nimport { join } from 'path'\nimport { logError, CACHE_PATHS } from '@utils/log'\n\nconst THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000\n\nexport type CleanupResult = {\n messages: number\n errors: number\n}\n\nexport function convertFileNameToDate(filename: string): Date {\n const isoStr = filename\n .split('.')[0]!\n .replace(/T(\\d{2})-(\\d{2})-(\\d{2})-(\\d{3})Z/, 'T$1:$2:$3.$4Z')\n return new Date(isoStr)\n}\n\nexport async function cleanupOldMessageFiles(): Promise<CleanupResult> {\n const messagePath = CACHE_PATHS.messages()\n const errorPath = CACHE_PATHS.errors()\n const thirtyDaysAgo = new Date(Date.now() - THIRTY_DAYS_MS)\n const deletedCounts: CleanupResult = { messages: 0, errors: 0 }\n\n for (const path of [messagePath, errorPath]) {\n try {\n const files = await fs.readdir(path)\n\n for (const file of files) {\n try {\n const timestamp = convertFileNameToDate(file)\n if (timestamp < thirtyDaysAgo) {\n await fs.unlink(join(path, file))\n if (path === messagePath) {\n deletedCounts.messages++\n } else {\n deletedCounts.errors++\n }\n }\n } catch (error: unknown) {\n logError(\n `Failed to process file ${file}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n } catch (error: unknown) {\n if (\n error instanceof Error &&\n 'code' in error &&\n error.code !== 'ENOENT'\n ) {\n logError(\n `Failed to cleanup directory ${path}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n }\n\n return deletedCounts\n}\n\nexport function cleanupOldMessageFilesInBackground(): void {\n const immediate = setImmediate(cleanupOldMessageFiles)\n\n immediate.unref()\n}\n", "import { getContext } from '@context'\nimport { getCurrentProjectConfig } from '@utils/config'\nimport { cleanupOldMessageFilesInBackground } from '@utils/session/cleanup'\nimport { grantReadPermissionForOriginalDir } from '@utils/permissions/filesystem'\nimport { setCwd, setOriginalCwd } from '@utils/state'\nimport { debug as debugLogger } from '@utils/log/debugLogger'\n\nexport async function setup(cwd: string, safeMode?: boolean): Promise<void> {\n if (cwd !== process.cwd()) {\n setOriginalCwd(cwd)\n }\n await setCwd(cwd)\n\n grantReadPermissionForOriginalDir()\n\n let agentLoader: any\n try {\n agentLoader = await import('@utils/agent/loader')\n } catch {\n agentLoader = await import('@utils/agent/loader')\n }\n const { startAgentWatcher } = agentLoader\n await startAgentWatcher(() => {\n debugLogger.info('AGENTS_HOT_RELOADED', { ok: true })\n })\n\n if (safeMode) {\n if (\n process.platform !== 'win32' &&\n typeof process.getuid === 'function' &&\n process.getuid() === 0\n ) {\n console.error(\n `--safe mode cannot be used with root/sudo privileges for security reasons`,\n )\n process.exit(1)\n }\n }\n\n if (process.env.NODE_ENV === 'test') {\n return\n }\n\n cleanupOldMessageFilesInBackground()\n getContext()\n\n const projectConfig = getCurrentProjectConfig()\n if (\n projectConfig.lastCost !== undefined &&\n projectConfig.lastDuration !== undefined\n ) {\n }\n\n}\n", "import React from 'react'\n\nimport { MACRO } from '@constants/macros'\nimport { Onboarding } from '@components/Onboarding'\nimport { TrustDialog } from '@components/TrustDialog'\nimport {\n checkHasTrustDialogAccepted,\n getGlobalConfig,\n saveGlobalConfig,\n} from '@utils/config'\nimport { clearTerminal } from '@utils/terminal'\nimport { grantReadPermissionForOriginalDir } from '@utils/permissions/filesystem'\nimport { handleMcprcServerApprovals } from '@screens/MCPServerApproval'\n\nexport function completeOnboarding(): void {\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n hasCompletedOnboarding: true,\n lastOnboardingVersion: MACRO.VERSION,\n })\n}\n\nexport async function showSetupScreens(\n safeMode?: boolean,\n print?: boolean,\n): Promise<void> {\n if (process.env.NODE_ENV === 'test') {\n return\n }\n\n const config = getGlobalConfig()\n if (!config.theme || !config.hasCompletedOnboarding) {\n await clearTerminal()\n const { render } = await import('ink')\n await new Promise<void>(resolve => {\n render(\n <Onboarding\n onDone={async () => {\n completeOnboarding()\n await clearTerminal()\n resolve()\n }}\n />,\n {\n exitOnCtrlC: false,\n },\n )\n })\n }\n\n if (!print) {\n if (safeMode) {\n if (!checkHasTrustDialogAccepted()) {\n await new Promise<void>(resolve => {\n const onDone = () => {\n grantReadPermissionForOriginalDir()\n resolve()\n }\n ;(async () => {\n const { render } = await import('ink')\n render(<TrustDialog onDone={onDone} />, {\n exitOnCtrlC: false,\n })\n })()\n })\n }\n }\n\n await handleMcprcServerApprovals()\n }\n}\n", "import React from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\nimport { Select } from './custom-select/select'\nimport {\n saveCurrentProjectConfig,\n getCurrentProjectConfig,\n} from '@utils/config'\nimport { PRODUCT_NAME } from '@constants/product'\nimport { useExitOnCtrlCD } from '@hooks/useExitOnCtrlCD'\nimport { homedir } from 'os'\nimport { getCwd } from '@utils/state'\nimport Link from './Link'\n\ntype Props = {\n onDone(): void\n}\n\nexport function TrustDialog({ onDone }: Props): React.ReactNode {\n const theme = getTheme()\n React.useEffect(() => {}, [])\n\n function onChange(value: 'yes' | 'no') {\n const config = getCurrentProjectConfig()\n switch (value) {\n case 'yes': {\n const isHomeDir = homedir() === getCwd()\n\n if (!isHomeDir) {\n saveCurrentProjectConfig({\n ...config,\n hasTrustDialogAccepted: true,\n })\n }\n onDone()\n break\n }\n case 'no': {\n process.exit(1)\n break\n }\n }\n }\n\n const exitState = useExitOnCtrlCD(() => process.exit(0))\n\n useInput((_input, key) => {\n if (key.escape) {\n process.exit(0)\n return\n }\n })\n\n return (\n <>\n <Box\n flexDirection=\"column\"\n gap={1}\n padding={1}\n borderStyle=\"round\"\n borderColor={theme.warning}\n >\n <Text bold color={theme.warning}>\n Do you trust the files in this folder?\n </Text>\n <Text bold>{process.cwd()}</Text>\n\n <Box flexDirection=\"column\" gap={1}>\n <Text>\n {PRODUCT_NAME} may read files in this folder. Reading untrusted\n files may lead to {PRODUCT_NAME} to behave in an unexpected ways.\n </Text>\n <Text>\n With your permission {PRODUCT_NAME} may execute files in this\n folder. Executing untrusted code is unsafe.\n </Text>\n </Box>\n\n <Select\n options={[\n { label: 'Yes, proceed', value: 'yes' },\n { label: 'No, exit', value: 'no' },\n ]}\n onChange={value => onChange(value as 'yes' | 'no')}\n />\n </Box>\n <Box marginLeft={3}>\n <Text dimColor>\n {exitState.pending ? (\n <>Press {exitState.keyName} again to exit</>\n ) : (\n <>Enter to confirm \u00B7 Esc to exit</>\n )}\n </Text>\n </Box>\n </>\n )\n}\n", "import React from 'react'\nimport { render } from 'ink'\nimport { MCPServerMultiselectDialog } from '@components/MCPServerMultiselectDialog'\nimport { MCPServerApprovalDialog } from '@components/MCPServerApprovalDialog'\nimport { getMcprcServerStatus } from '@services/mcpClient'\nimport { getProjectMcpServerDefinitions } from '@utils/config'\n\nexport async function handleMcprcServerApprovals(): Promise<void> {\n const { servers } = getProjectMcpServerDefinitions()\n const pendingServers = Object.keys(servers).filter(\n serverName => getMcprcServerStatus(serverName) === 'pending',\n )\n\n if (pendingServers.length === 0) {\n return\n }\n\n await new Promise<void>(resolve => {\n const clearScreenAndResolve = () => {\n process.stdout.write('\\x1b[2J\\x1b[3J\\x1b[H', () => {\n resolve()\n })\n }\n\n if (pendingServers.length === 1 && pendingServers[0] !== undefined) {\n const result = render(\n <MCPServerApprovalDialog\n serverName={pendingServers[0]}\n onDone={() => {\n result.unmount?.()\n clearScreenAndResolve()\n }}\n />,\n { exitOnCtrlC: false },\n )\n } else {\n const result = render(\n <MCPServerMultiselectDialog\n serverNames={pendingServers}\n onDone={() => {\n result.unmount?.()\n clearScreenAndResolve()\n }}\n />,\n { exitOnCtrlC: false },\n )\n }\n })\n}\n\n", "import React from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\nimport { MultiSelect } from '@inkjs/ui'\nimport {\n saveCurrentProjectConfig,\n getCurrentProjectConfig,\n} from '@utils/config'\nimport { partition } from 'lodash-es'\nimport { MCPServerDialogCopy } from './MCPServerDialogCopy'\nimport { useExitOnCtrlCD } from '@hooks/useExitOnCtrlCD'\n\ntype Props = {\n serverNames: string[]\n onDone(): void\n}\n\nexport function MCPServerMultiselectDialog({\n serverNames,\n onDone,\n}: Props): React.ReactNode {\n const theme = getTheme()\n function onSubmit(selectedServers: string[]) {\n const config = getCurrentProjectConfig()\n\n if (!config.approvedMcprcServers) {\n config.approvedMcprcServers = []\n }\n if (!config.rejectedMcprcServers) {\n config.rejectedMcprcServers = []\n }\n\n const [approvedServers, rejectedServers] = partition(serverNames, server =>\n selectedServers.includes(server),\n )\n\n config.approvedMcprcServers.push(...approvedServers)\n config.rejectedMcprcServers.push(...rejectedServers)\n\n saveCurrentProjectConfig(config)\n onDone()\n }\n\n const exitState = useExitOnCtrlCD(() => process.exit())\n\n useInput((_input, key) => {\n if (key.escape) {\n const config = getCurrentProjectConfig()\n if (!config.rejectedMcprcServers) {\n config.rejectedMcprcServers = []\n }\n\n for (const server of serverNames) {\n if (!config.rejectedMcprcServers.includes(server)) {\n config.rejectedMcprcServers.push(server)\n }\n }\n\n saveCurrentProjectConfig(config)\n onDone()\n return\n }\n })\n\n return (\n <>\n <Box\n flexDirection=\"column\"\n gap={1}\n padding={1}\n borderStyle=\"round\"\n borderColor={theme.warning}\n >\n <Text bold color={theme.warning}>\n New MCP Servers Detected\n </Text>\n <Text>\n This project contains an MCP config file (.mcp.json or .mcprc) with{' '}\n {serverNames.length} MCP servers that require your approval.\n </Text>\n <MCPServerDialogCopy />\n\n <Text>Please select the servers you want to enable:</Text>\n\n <MultiSelect\n options={serverNames.map(server => ({\n label: server,\n value: server,\n }))}\n defaultValue={serverNames}\n onSubmit={onSubmit}\n />\n </Box>\n <Box marginLeft={3}>\n <Text dimColor>\n {exitState.pending ? (\n <>Press {exitState.keyName} again to exit</>\n ) : (\n <>Space to select \u00B7 Enter to confirm \u00B7 Esc to reject all</>\n )}\n </Text>\n </Box>\n </>\n )\n}\n", "import React from 'react'\nimport { Text } from 'ink'\nimport Link from 'ink-link'\nimport { PRODUCT_NAME, PRODUCT_COMMAND } from '@constants/product'\n\nexport function MCPServerDialogCopy(): React.ReactNode {\n return (\n <>\n <Text>\n MCP servers provide additional functionality to {PRODUCT_NAME}. They may\n execute code, make network requests, or access system resources via tool\n calls. All tool calls will require your explicit approval before\n execution. For more information, see{' '}\n <Link url=\"https://github.com/shareAI-lab/kode/blob/main/docs/mcp.md\">\n MCP documentation\n </Link>\n </Text>\n\n <Text dimColor>\n Remember: You can always change these choices later by running `\n {PRODUCT_COMMAND} mcp reset-project-choices`\n </Text>\n </>\n )\n}\n", "import React from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\nimport { Select } from './custom-select/select'\nimport {\n saveCurrentProjectConfig,\n getCurrentProjectConfig,\n} from '@utils/config'\nimport { MCPServerDialogCopy } from './MCPServerDialogCopy'\nimport { useExitOnCtrlCD } from '@hooks/useExitOnCtrlCD'\n\ntype Props = {\n serverName: string\n onDone(): void\n}\n\nexport function MCPServerApprovalDialog({\n serverName,\n onDone,\n}: Props): React.ReactNode {\n const theme = getTheme()\n function onChange(value: 'yes' | 'no') {\n const config = getCurrentProjectConfig()\n switch (value) {\n case 'yes': {\n if (!config.approvedMcprcServers) {\n config.approvedMcprcServers = []\n }\n if (!config.approvedMcprcServers.includes(serverName)) {\n config.approvedMcprcServers.push(serverName)\n }\n saveCurrentProjectConfig(config)\n onDone()\n break\n }\n case 'no': {\n if (!config.rejectedMcprcServers) {\n config.rejectedMcprcServers = []\n }\n if (!config.rejectedMcprcServers.includes(serverName)) {\n config.rejectedMcprcServers.push(serverName)\n }\n saveCurrentProjectConfig(config)\n onDone()\n break\n }\n }\n }\n\n const exitState = useExitOnCtrlCD(() => process.exit(0))\n\n useInput((_input, key) => {\n if (key.escape) {\n onDone()\n return\n }\n })\n\n return (\n <>\n <Box\n flexDirection=\"column\"\n gap={1}\n padding={1}\n borderStyle=\"round\"\n borderColor={theme.warning}\n >\n <Text bold color={theme.warning}>\n New MCP Server Detected\n </Text>\n <Text>\n This project contains an MCP config file (.mcp.json or .mcprc) with an\n MCP server that requires your approval:\n </Text>\n <Text bold>{serverName}</Text>\n\n <MCPServerDialogCopy />\n\n <Text>Do you want to approve this MCP server?</Text>\n\n <Select\n options={[\n { label: 'Yes, approve this server', value: 'yes' },\n { label: 'No, reject this server', value: 'no' },\n ]}\n onChange={value => onChange(value as 'yes' | 'no')}\n />\n </Box>\n <Box marginLeft={3}>\n <Text dimColor>\n {exitState.pending ? (\n <>Press {exitState.keyName} again to exit</>\n ) : (\n <>Enter to confirm \u00B7 Esc to reject</>\n )}\n </Text>\n </Box>\n </>\n )\n}\n", "import yaml from 'js-yaml'\nimport { z } from 'zod'\nimport type { GlobalConfig, ModelPointers, ModelProfile } from '@utils/config'\n\nconst ApiKeySpecSchema = z.union([\n z\n .object({\n fromEnv: z.string().min(1),\n })\n .strict(),\n z\n .object({\n value: z.string(),\n })\n .strict(),\n])\n\ntype ApiKeySpec = z.infer<typeof ApiKeySpecSchema>\n\nconst ModelProfileYamlSchema = z\n .object({\n name: z.string().min(1),\n provider: z.string().min(1),\n modelName: z.string().min(1),\n baseURL: z.string().min(1).optional(),\n maxTokens: z.number().int().positive(),\n contextLength: z.number().int().positive(),\n reasoningEffort: z.string().optional(),\n isActive: z.boolean().optional(),\n\n apiKey: ApiKeySpecSchema.optional(),\n apiKeyEnv: z.string().min(1).optional(),\n\n createdAt: z.number().int().positive().optional(),\n lastUsed: z.number().int().positive().optional(),\n })\n .strict()\n\nconst ModelPointersYamlSchema = z\n .object({\n main: z.string().min(1).optional(),\n task: z.string().min(1).optional(),\n compact: z.string().min(1).optional(),\n quick: z.string().min(1).optional(),\n })\n .strict()\n .optional()\n\nconst ModelConfigYamlSchema = z\n .object({\n version: z.number().int().positive().default(1),\n profiles: z.array(ModelProfileYamlSchema).default([]),\n pointers: ModelPointersYamlSchema,\n })\n .strict()\n\nexport type ModelConfigYaml = z.infer<typeof ModelConfigYamlSchema>\n\nfunction suggestedApiKeyEnvForProvider(provider: string): string | undefined {\n switch (provider) {\n case 'anthropic':\n return 'ANTHROPIC_API_KEY'\n case 'openai':\n case 'custom-openai':\n return 'OPENAI_API_KEY'\n case 'azure':\n return 'AZURE_OPENAI_API_KEY'\n case 'gemini':\n return 'GEMINI_API_KEY'\n default:\n return undefined\n }\n}\n\nfunction resolveApiKeyFromYaml(\n input: {\n apiKey?: ApiKeySpec\n apiKeyEnv?: string\n },\n existingApiKey: string | undefined,\n): { apiKey: string; warnings: string[] } {\n const warnings: string[] = []\n\n if (input.apiKeyEnv) {\n const envValue = process.env[input.apiKeyEnv]\n if (envValue) return { apiKey: envValue, warnings }\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n warnings.push(`Missing env var '${input.apiKeyEnv}' for apiKey`)\n return { apiKey: '', warnings }\n }\n\n if (input.apiKey && 'fromEnv' in input.apiKey) {\n const envValue = process.env[input.apiKey.fromEnv]\n if (envValue) return { apiKey: envValue, warnings }\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n warnings.push(`Missing env var '${input.apiKey.fromEnv}' for apiKey`)\n return { apiKey: '', warnings }\n }\n\n if (input.apiKey && 'value' in input.apiKey) {\n return { apiKey: input.apiKey.value, warnings }\n }\n\n if (existingApiKey) return { apiKey: existingApiKey, warnings }\n\n warnings.push(\n 'Missing apiKey (set apiKey.fromEnv, apiKeyEnv, or apiKey.value)',\n )\n return { apiKey: '', warnings }\n}\n\nfunction resolvePointerTarget(\n pointerValue: string,\n profiles: ModelProfile[],\n): string | null {\n if (profiles.some(p => p.modelName === pointerValue)) return pointerValue\n const byName = profiles.find(p => p.name === pointerValue)\n return byName?.modelName ?? null\n}\n\nexport function parseModelConfigYaml(yamlText: string): ModelConfigYaml {\n const parsed = yaml.load(yamlText)\n return ModelConfigYamlSchema.parse(parsed)\n}\n\nexport function formatModelConfigYamlForSharing(config: GlobalConfig): string {\n const modelProfiles = config.modelProfiles ?? []\n const pointers = config.modelPointers\n\n const exported: ModelConfigYaml = {\n version: 1,\n profiles: modelProfiles.map(p => {\n const suggestedEnv = suggestedApiKeyEnvForProvider(p.provider)\n return {\n name: p.name,\n provider: p.provider,\n modelName: p.modelName,\n ...(p.baseURL ? { baseURL: p.baseURL } : {}),\n maxTokens: p.maxTokens,\n contextLength: p.contextLength,\n ...(p.reasoningEffort ? { reasoningEffort: p.reasoningEffort } : {}),\n isActive: p.isActive,\n createdAt: p.createdAt,\n ...(typeof p.lastUsed === 'number' ? { lastUsed: p.lastUsed } : {}),\n apiKey: { fromEnv: suggestedEnv ?? 'API_KEY' },\n }\n }),\n ...(pointers ? { pointers } : {}),\n }\n\n return yaml.dump(exported, {\n noRefs: true,\n lineWidth: 120,\n })\n}\n\nexport function applyModelConfigYamlImport(\n existingConfig: GlobalConfig,\n yamlText: string,\n options: { replace?: boolean } = {},\n): { nextConfig: GlobalConfig; warnings: string[] } {\n const parsed = parseModelConfigYaml(yamlText)\n const warnings: string[] = []\n\n const existingProfiles = existingConfig.modelProfiles ?? []\n const existingByModelName = new Map<string, ModelProfile>(\n existingProfiles.map(p => [p.modelName, p]),\n )\n\n const now = Date.now()\n const importedProfiles: ModelProfile[] = parsed.profiles.map(profile => {\n const existing = existingByModelName.get(profile.modelName)\n const resolved = resolveApiKeyFromYaml(\n { apiKey: profile.apiKey, apiKeyEnv: profile.apiKeyEnv },\n existing?.apiKey,\n )\n warnings.push(...resolved.warnings.map(w => `[${profile.modelName}] ${w}`))\n\n return {\n name: profile.name,\n provider: profile.provider as any,\n modelName: profile.modelName,\n ...(profile.baseURL ? { baseURL: profile.baseURL } : {}),\n apiKey: resolved.apiKey,\n maxTokens: profile.maxTokens,\n contextLength: profile.contextLength,\n ...(profile.reasoningEffort\n ? { reasoningEffort: profile.reasoningEffort }\n : {}),\n isActive: profile.isActive ?? true,\n createdAt: profile.createdAt ?? existing?.createdAt ?? now,\n ...(profile.lastUsed\n ? { lastUsed: profile.lastUsed }\n : existing?.lastUsed\n ? { lastUsed: existing.lastUsed }\n : {}),\n ...(existing?.isGPT5 ? { isGPT5: existing.isGPT5 } : {}),\n ...(existing?.validationStatus\n ? { validationStatus: existing.validationStatus }\n : {}),\n ...(existing?.lastValidation\n ? { lastValidation: existing.lastValidation }\n : {}),\n }\n })\n\n const mergedProfiles = options.replace\n ? importedProfiles\n : [\n ...existingProfiles.filter(\n p => !importedProfiles.some(i => i.modelName === p.modelName),\n ),\n ...importedProfiles,\n ]\n\n const nextPointers: ModelPointers = {\n ...(existingConfig.modelPointers ?? {\n main: '',\n task: '',\n compact: '',\n quick: '',\n }),\n }\n\n if (parsed.pointers) {\n const resolvedMain =\n parsed.pointers.main &&\n resolvePointerTarget(parsed.pointers.main, mergedProfiles)\n const resolvedTask =\n parsed.pointers.task &&\n resolvePointerTarget(parsed.pointers.task, mergedProfiles)\n const resolvedCompact =\n parsed.pointers.compact &&\n resolvePointerTarget(parsed.pointers.compact, mergedProfiles)\n const resolvedQuick =\n parsed.pointers.quick &&\n resolvePointerTarget(parsed.pointers.quick, mergedProfiles)\n\n if (parsed.pointers.main && !resolvedMain) {\n warnings.push(\n `[pointers.main] Unknown model '${parsed.pointers.main}' (expected modelName or profile name)`,\n )\n } else if (resolvedMain) {\n nextPointers.main = resolvedMain\n }\n\n if (parsed.pointers.task && !resolvedTask) {\n warnings.push(\n `[pointers.task] Unknown model '${parsed.pointers.task}' (expected modelName or profile name)`,\n )\n } else if (resolvedTask) {\n nextPointers.task = resolvedTask\n }\n\n if (parsed.pointers.compact && !resolvedCompact) {\n warnings.push(\n `[pointers.compact] Unknown model '${parsed.pointers.compact}' (expected modelName or profile name)`,\n )\n } else if (resolvedCompact) {\n nextPointers.compact = resolvedCompact\n }\n\n if (parsed.pointers.quick && !resolvedQuick) {\n warnings.push(\n `[pointers.quick] Unknown model '${parsed.pointers.quick}' (expected modelName or profile name)`,\n )\n } else if (resolvedQuick) {\n nextPointers.quick = resolvedQuick\n }\n }\n\n return {\n nextConfig: {\n ...existingConfig,\n modelProfiles: mergedProfiles,\n modelPointers: nextPointers,\n },\n warnings,\n }\n}\n", "import React, { useEffect, useState } from 'react'\nimport { CACHE_PATHS } from '@utils/log'\nimport { LogSelector } from '@components/LogSelector'\nimport type { LogOption, LogListProps } from '@kode-types/logs'\nimport { loadLogList } from '@utils/log'\nimport { logError } from '@utils/log'\n\ntype Props = LogListProps & {\n type: 'messages' | 'errors'\n logNumber?: number\n}\n\nexport function LogList({ context, type, logNumber }: Props): React.ReactNode {\n const [logs, setLogs] = useState<LogOption[]>([])\n const [didSelectLog, setDidSelectLog] = useState(false)\n\n useEffect(() => {\n loadLogList(\n type === 'messages' ? CACHE_PATHS.messages() : CACHE_PATHS.errors(),\n )\n .then(logs => {\n if (logNumber !== undefined) {\n const log = logs[logNumber >= 0 ? logNumber : 0]\n if (log) {\n console.log(JSON.stringify(log.messages, null, 2))\n process.exit(0)\n } else {\n console.error('No log found at index', logNumber)\n process.exit(1)\n }\n }\n\n setLogs(logs)\n })\n .catch(error => {\n logError(error)\n if (logNumber !== undefined) {\n process.exit(1)\n } else {\n context.unmount?.()\n }\n })\n }, [context, type, logNumber])\n\n function onSelect(index: number): void {\n const log = logs[index]\n if (!log) {\n return\n }\n setDidSelectLog(true)\n setTimeout(() => {\n console.log(JSON.stringify(log.messages, null, 2))\n process.exit(0)\n }, 100)\n }\n\n if (logNumber !== undefined) {\n return null\n }\n\n if (didSelectLog) {\n return null\n }\n\n return <LogSelector logs={logs} onSelect={onSelect} />\n}\n", "import React from 'react'\nimport { Box, Text } from 'ink'\nimport { Select } from './custom-select/select'\nimport type { LogOption } from '@kode-types/logs'\nimport { getTheme } from '@utils/theme'\nimport { useTerminalSize } from '@hooks/useTerminalSize'\nimport { formatDate } from '@utils/log'\n\ntype LogSelectorProps = {\n logs: LogOption[]\n onSelect: (logValue: number) => void\n}\n\nexport function LogSelector({\n logs,\n onSelect,\n}: LogSelectorProps): React.ReactNode {\n const { rows, columns } = useTerminalSize()\n if (logs.length === 0) {\n return null\n }\n\n const visibleCount = rows - 3\n const hiddenCount = Math.max(0, logs.length - visibleCount)\n\n const indexWidth = 7\n const modifiedWidth = 21\n const createdWidth = 21\n const countWidth = 9\n\n const options = logs.map((log, i) => {\n const index = `[${i}]`.padEnd(indexWidth)\n const modified = formatDate(log.modified).padEnd(modifiedWidth)\n const created = formatDate(log.created).padEnd(createdWidth)\n const msgCount = `${log.messageCount}`.padStart(countWidth)\n const prompt = log.firstPrompt\n let branchInfo = ''\n if (log.forkNumber) branchInfo += ` (fork #${log.forkNumber})`\n if (log.sidechainNumber)\n branchInfo += ` (sidechain #${log.sidechainNumber})`\n\n const labelTxt = `${index}${modified}${created}${msgCount} ${prompt}${branchInfo}`\n const truncated =\n labelTxt.length > columns - 2\n ? `${labelTxt.slice(0, columns - 5)}...`\n : labelTxt\n return {\n label: truncated,\n value: log.value.toString(),\n }\n })\n\n return (\n <Box flexDirection=\"column\" height=\"100%\" width=\"100%\">\n <Box paddingLeft={9}>\n <Text bold color={getTheme().text}>\n Modified\n </Text>\n <Text>{' '}</Text>\n <Text bold color={getTheme().text}>\n Created\n </Text>\n <Text>{' '}</Text>\n <Text bold color={getTheme().text}>\n # Messages\n </Text>\n <Text> </Text>\n <Text bold color={getTheme().text}>\n First message\n </Text>\n </Box>\n <Select\n options={options}\n onChange={index => onSelect(parseInt(index, 10))}\n visibleOptionCount={visibleCount}\n />\n {hiddenCount > 0 && (\n <Box paddingLeft={2}>\n <Text color={getTheme().secondaryText}>and {hiddenCount} more\u2026</Text>\n </Box>\n )}\n </Box>\n )\n}\n", "// @ts-nocheck\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {\n CallToolRequestSchema,\n CallToolResultSchema,\n ListToolsRequestSchema,\n ListToolsResultSchema,\n} from '@modelcontextprotocol/sdk/types.js'\nimport { z, ZodTypeAny } from 'zod'\nimport { zodToJsonSchema } from 'zod-to-json-schema'\nimport { hasPermissionsToUseTool } from '@permissions'\nimport { setCwd } from '@utils/state'\nimport { getModelManager } from '@utils/model'\nimport { logError } from '@utils/log'\nimport { Tool, getToolDescription } from '@tool'\nimport { getAllTools } from '@tools'\nimport { Command } from '@commands'\nimport review from '@commands/review'\nimport { lastX } from '@utils/text/generators'\nimport { MACRO } from '@constants/macros'\ntype ToolInput = Record<string, unknown>\n\nconst state: {\n readFileTimestamps: Record<string, number>\n} = {\n readFileTimestamps: {},\n}\n\nconst MCP_COMMANDS: Command[] = [review]\n\nconst MCP_TOOLS: Tool[] = [...getAllTools()]\n\nexport async function startMCPServer(cwd: string): Promise<void> {\n await setCwd(cwd)\n const server = new Server(\n {\n name: 'claude/tengu',\n version: MACRO.VERSION,\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n\n server.setRequestHandler(\n ListToolsRequestSchema,\n async (): Promise<z.infer<typeof ListToolsResultSchema>> => {\n const tools = await Promise.all(\n MCP_TOOLS.map(async tool => ({\n ...(tool as any),\n description: getToolDescription(tool),\n inputSchema: zodToJsonSchema(\n tool.inputSchema as unknown as z.ZodTypeAny,\n ) as ToolInput,\n })),\n )\n\n return {\n tools,\n }\n },\n )\n\n server.setRequestHandler(\n CallToolRequestSchema,\n async (request): Promise<z.infer<typeof CallToolResultSchema>> => {\n const { name, arguments: args } = request.params\n const tool = MCP_TOOLS.find(_ => _.name === name)\n if (!tool) {\n throw new Error(`Tool ${name} not found`)\n }\n\n try {\n if (!(await tool.isEnabled())) {\n throw new Error(`Tool ${name} is not enabled`)\n }\n const model = getModelManager().getModelName('main')\n const validationResult = await tool.validateInput?.(\n (args as never) ?? {},\n {\n abortController: new AbortController(),\n options: {\n commands: MCP_COMMANDS,\n tools: MCP_TOOLS,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n },\n messageId: undefined,\n readFileTimestamps: state.readFileTimestamps,\n } as any,\n )\n if (validationResult && !validationResult.result) {\n throw new Error(\n `Tool ${name} input is invalid: ${validationResult.message}`,\n )\n }\n const result = tool.call((args ?? {}) as never, {\n abortController: new AbortController(),\n messageId: undefined,\n options: {\n commands: MCP_COMMANDS,\n tools: MCP_TOOLS,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n },\n readFileTimestamps: state.readFileTimestamps,\n })\n\n const finalResult = await lastX(result)\n\n if (finalResult.type !== 'result') {\n throw new Error(`Tool ${name} did not return a result`)\n }\n\n return {\n content: Array.isArray(finalResult)\n ? finalResult.map(item => ({\n type: 'text' as const,\n text: 'text' in item ? item.text : JSON.stringify(item),\n }))\n : [\n {\n type: 'text' as const,\n text:\n typeof finalResult === 'string'\n ? finalResult\n : JSON.stringify(finalResult.data),\n },\n ],\n }\n } catch (error) {\n logError(error)\n return {\n isError: true,\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n }\n }\n },\n )\n\n async function runServer() {\n const transport = new StdioServerTransport()\n await server.connect(transport)\n }\n\n return await runServer()\n}\n// @ts-nocheck\n", "import fs from 'fs/promises'\nimport { logError } from '@utils/log'\nimport { Tool } from '@tool'\n\nexport async function loadMessagesFromLog(\n logPath: string,\n tools: Tool[],\n): Promise<any[]> {\n try {\n const content = await fs.readFile(logPath, 'utf-8')\n const messages = JSON.parse(content)\n return deserializeMessages(messages, tools)\n } catch (error) {\n logError(`Failed to load messages from ${logPath}: ${error}`)\n throw new Error(`Failed to load messages from log: ${error}`)\n }\n}\n\nexport function deserializeMessages(messages: any[], tools: Tool[]): any[] {\n const toolMap = new Map(tools.map(tool => [tool.name, tool]))\n\n return messages.map(message => {\n const clonedMessage = JSON.parse(JSON.stringify(message))\n\n if (clonedMessage.toolCalls) {\n clonedMessage.toolCalls = clonedMessage.toolCalls.map((toolCall: any) => {\n if (toolCall.tool && typeof toolCall.tool === 'string') {\n const actualTool = toolMap.get(toolCall.tool)\n if (actualTool) {\n toolCall.tool = actualTool\n }\n }\n return toolCall\n })\n }\n\n return clonedMessage\n })\n}\n", "import {\n ProjectConfig,\n getCurrentProjectConfig as getCurrentProjectConfigDefault,\n saveCurrentProjectConfig as saveCurrentProjectConfigDefault,\n} from '@utils/config'\n\nexport type ProjectConfigHandler = {\n getCurrentProjectConfig: () => ProjectConfig\n saveCurrentProjectConfig: (config: ProjectConfig) => void\n}\n\nconst defaultConfigHandler: ProjectConfigHandler = {\n getCurrentProjectConfig: getCurrentProjectConfigDefault,\n saveCurrentProjectConfig: saveCurrentProjectConfigDefault,\n}\n\nexport function handleListApprovedTools(\n cwd: string,\n projectConfigHandler: ProjectConfigHandler = defaultConfigHandler,\n): string {\n const projectConfig = projectConfigHandler.getCurrentProjectConfig()\n return `Allowed tools for ${cwd}:\\n${projectConfig.allowedTools.join('\\n')}`\n}\n\nexport function handleRemoveApprovedTool(\n tool: string,\n projectConfigHandler: ProjectConfigHandler = defaultConfigHandler,\n): { success: boolean; message: string } {\n const projectConfig = projectConfigHandler.getCurrentProjectConfig()\n const originalToolCount = projectConfig.allowedTools.length\n const updatedAllowedTools = projectConfig.allowedTools.filter(t => t !== tool)\n\n if (originalToolCount !== updatedAllowedTools.length) {\n projectConfig.allowedTools = updatedAllowedTools\n projectConfigHandler.saveCurrentProjectConfig(projectConfig)\n return {\n success: true,\n message: `Removed ${tool} from the list of approved tools`,\n }\n } else {\n return {\n success: false,\n message: `${tool} was not in the list of approved tools`,\n }\n }\n}\n", "import React from 'react'\nimport { Box, Newline, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\nimport { Select } from './custom-select/select'\nimport { render } from 'ink'\nimport { writeFileSync } from 'fs'\nimport { ConfigParseError } from '@utils/text/errors'\nimport { useExitOnCtrlCD } from '@hooks/useExitOnCtrlCD'\ninterface InvalidConfigHandlerProps {\n error: ConfigParseError\n}\n\ninterface InvalidConfigDialogProps {\n filePath: string\n errorDescription: string\n onExit: () => void\n onReset: () => void\n}\n\nfunction InvalidConfigDialog({\n filePath,\n errorDescription,\n onExit,\n onReset,\n}: InvalidConfigDialogProps): React.ReactNode {\n const theme = getTheme()\n\n useInput((_, key) => {\n if (key.escape) {\n onExit()\n }\n })\n\n const exitState = useExitOnCtrlCD(() => process.exit(0))\n\n const handleSelect = (value: string) => {\n if (value === 'exit') {\n onExit()\n } else {\n onReset()\n }\n }\n\n return (\n <>\n <Box\n flexDirection=\"column\"\n borderColor={theme.error}\n borderStyle=\"round\"\n padding={1}\n width={70}\n gap={1}\n >\n <Text bold>Configuration Error</Text>\n\n <Box flexDirection=\"column\" gap={1}>\n <Text>\n The configuration file at <Text bold>{filePath}</Text> contains\n invalid JSON.\n </Text>\n <Text>{errorDescription}</Text>\n </Box>\n\n <Box flexDirection=\"column\">\n <Text bold>Choose an option:</Text>\n <Select\n options={[\n { label: 'Exit and fix manually', value: 'exit' },\n { label: 'Reset with default configuration', value: 'reset' },\n ]}\n onChange={handleSelect}\n />\n </Box>\n </Box>\n {exitState.pending ? (\n <Text dimColor>Press {exitState.keyName} again to exit</Text>\n ) : (\n <Newline />\n )}\n </>\n )\n}\n\nexport function showInvalidConfigDialog({\n error,\n}: InvalidConfigHandlerProps): Promise<void> {\n return new Promise(resolve => {\n render(\n <InvalidConfigDialog\n filePath={error.filePath}\n errorDescription={error.message}\n onExit={() => {\n resolve()\n process.exit(1)\n }}\n onReset={() => {\n writeFileSync(\n error.filePath,\n JSON.stringify(error.defaultConfig, null, 2),\n )\n resolve()\n process.exit(0)\n }}\n />,\n { exitOnCtrlC: false },\n )\n })\n}\n", "#!/usr/bin/env bun\nimport '@utils/config/sanitizeAnthropicEnv'\nimport { initSentry } from '@services/sentry'\nimport {\n ensurePackagedRuntimeEnv,\n ensureYogaWasmPath,\n} from './cli/bootstrapEnv'\nimport { installProcessHandlers, runCli } from './cli/runCli'\n\ninitSentry()\nensurePackagedRuntimeEnv()\nensureYogaWasmPath(import.meta.url)\n\nimport * as dontcare from '@anthropic-ai/sdk/shims/node'\nObject.keys(dontcare)\n\ninstallProcessHandlers()\nvoid runCli()\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,cAAc,iBAAAA,sBAAqB;;;ACAjD,SAAS,sBAAsB,MAS9B;AACN,MAAI,KAAK,mCAAmC,WAAW,CAAC,KAAK,YAAY;AACvE,WAAO,KAAK;AAAA,EACd;AAEA,UAAQ,OACN,MACA,OACA,gBACA,qBACG;AACH,UAAM,OAAO,MAAM,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,KAAK,WAAW,KAAM,QAAO,EAAE,QAAQ,KAAc;AAEzD,UAAM,SAAS;AACf,QAAI,OAAO,qBAAqB,OAAO;AACrC,aAAO,EAAE,QAAQ,OAAgB,SAAS,OAAO,QAAQ;AAAA,IAC3D;AAEA,QAAI;AACF,YAAM,cACJ,OAAQ,OAAe,gBAAgB,WACnC,OAAQ,OAAe,WAAW,IAClC,OAAQ,OAAe,cAAc,WACnC,OAAQ,MAAc,SAAS,IAC/B,OAAQ,OAAe,kBAAkB,WACvC,OAAQ,MAAc,aAAa,IACnC,OAAQ,OAAe,SAAS,WAC9B,OAAQ,MAAc,IAAI,IAC1B;AAEZ,YAAM,iBACJ,OAAQ,OAAe,mBAAmB,WACtC,OAAQ,OAAe,cAAc,IACrC;AAEN,YAAM,WAAW,MAAM,KAAK,WAAW;AAAA,QACrC;AAAA,UACE,SAAS;AAAA,UACT,WAAW,KAAK;AAAA,UAChB;AAAA,UACA,GAAI,OAAO,gBAAgB,cAAc,YAAY,eAAe,YAChE,EAAE,aAAa,eAAe,UAAU,IACxC,CAAC;AAAA,UACL,GAAI,OAAO,gBAAgB,YAAY,YAAY,eAAe,UAC9D,EAAE,UAAU,eAAe,QAAQ,IACnC,CAAC;AAAA,UACL,GAAI,MAAM,QAAS,OAAe,WAAW,IACzC;AAAA,YACE,wBAAyB,OAAe;AAAA,UAC1C,IACA,CAAC;AAAA,UACL,GAAI,cAAc,EAAE,cAAc,YAAY,IAAI,CAAC;AAAA,UACnD,GAAI,iBAAiB,EAAE,iBAAiB,eAAe,IAAI,CAAC;AAAA,QAC9D;AAAA,QACA;AAAA,UACE,QAAQ,eAAe,gBAAgB;AAAA,UACvC,WAAW,KAAK;AAAA,QAClB;AAAA,MACF;AAEA,UAAI,YAAa,SAAiB,aAAa,SAAS;AACtD,cAAM,eACH,SAAiB,gBAAgB,OAAQ,SAAiB,iBAAiB,WACvE,SAAiB,eAClB;AACN,YAAI,cAAc;AAChB,iBAAO,OAAO,OAAO,YAAY;AAAA,QACnC;AAEA,cAAM,wBAAyB,SAAiB;AAChD,cAAM,qBACJ,MAAM,QAAQ,qBAAqB,KACnC,sBAAsB;AAAA,UACpB,OAAK,KAAK,OAAO,MAAM,YAAY,OAAQ,EAAU,SAAS;AAAA,QAChE,IACK,wBACD;AAEN,YAAI,sBAAsB,KAAK,aAAa,uBAAuB;AACjE,gBAAM,OAAO,KAAK;AAAA,YAChB,KAAK,aAAa;AAAA,YAClB;AAAA,UACF;AACA,eAAK,aAAa,wBAAwB;AAC1C,cAAI,gBAAgB,SAAS;AAC3B,2BAAe,QAAQ,wBAAwB;AAAA,UACjD;AACA,qBAAW,UAAU,oBAA2B;AAC9C,iBAAK,kCAAkC;AAAA,cACrC;AAAA,cACA,YAAY,KAAK;AAAA,YACnB,CAAC;AAAA,UACH;AAAA,QACF;AAEA,eAAO,EAAE,QAAQ,KAAc;AAAA,MACjC;AAEA,UAAI,YAAa,SAAiB,aAAa,QAAQ;AACrD,YAAK,SAAiB,cAAc,MAAM;AACxC,yBAAe,gBAAgB,MAAM;AAAA,QACvC;AAAA,MACF;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SACE,OAAQ,UAAkB,YAAY,WAClC,OAAQ,SAAiB,OAAO,IAChC,OAAO;AAAA,MACf;AAAA,IACF,SAAS,GAAG;AACV,YAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS,6BAA6B,GAAG;AAAA,QACzC,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;;;ACxIO,SAAS,qCAAqC,MAGtB;AAC7B,SAAO,OAAM,QAAO;AAClB,UAAM,UAAU,IAAI,SAAS;AAE7B,QAAI,YAAY,cAAc;AAC5B;AAAA,IACF;AAEA,QAAI,YAAY,uBAAuB;AACrC,YAAM,OAAQ,IAAI,SAAiB;AACnC,UACE,SAAS,aACT,SAAS,iBACT,SAAS,UACT,SAAS,aACT,SAAS,qBACT;AACA,YAAI,KAAK,aAAa,uBAAuB;AAC3C,eAAK,aAAa,sBAAsB,OAAO;AAAA,QACjD;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,YAAY,aAAa;AAC3B,YAAM,YAAa,IAAI,SAAiB;AACxC,UAAI,cAAc,WAAW;AAC3B,aAAK,aAAa,QAAQ;AAAA,MAC5B,WAAW,OAAO,cAAc,YAAY,UAAU,KAAK,GAAG;AAC5D,aAAK,aAAa,QAAQ,UAAU,KAAK;AAAA,MAC3C;AACA;AAAA,IACF;AAEA,QAAI,YAAY,2BAA2B;AACzC,YAAM,QAAS,IAAI,SAAiB;AACpC,UAAI,UAAU,MAAM;AAClB,aAAK,aAAa,oBAAoB;AAAA,MACxC,WAAW,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,SAAS,GAAG;AAC5E,aAAK,aAAa,oBAAoB;AAAA,MACxC;AACA;AAAA,IACF;AAEA,QAAI,YAAY,cAAc;AAC5B,aAAO;AAAA,QACL,YAAY,KAAK,WAAW,IAAI,QAAM;AAAA,UACpC,MAAM,EAAE;AAAA,UACR,QAAQ,EAAE;AAAA,UACV,GAAI,EAAE,SAAS,eAAe,EAAE,eAC5B,EAAE,YAAY,EAAE,aAAa,IAC7B,CAAC;AAAA,QACP,EAAE;AAAA,MACJ;AAAA,IACF;AAEA,QAAI,YAAY,eAAe;AAC7B,YAAM,aAAc,IAAI,SAAiB;AACzC,YAAM,UAAW,IAAI,SAAiB;AACtC,UAAI,OAAO,eAAe,YAAY,YAAY;AAChD,cAAM,QAAQ,KAAK,WAAW,KAAK,OAAK,EAAE,SAAS,UAAU;AAC7D,YAAI,SAAS,MAAM,SAAS,aAAa;AACvC,gBAAM,YAAa,MAAM,QAAgB;AACzC,cAAI,aAAa,OAAO,UAAU,cAAc,YAAY;AAC1D,sBAAU,UAAU,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,YAAY,mBAAmB;AACjC,aAAO,EAAE,IAAI,MAAM,mBAAmB,MAAM;AAAA,IAC9C;AAEA,QAAI,YAAY,gBAAgB;AAC9B,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,UAAM,IAAI,MAAM,wCAAwC,OAAO,OAAO,CAAC,EAAE;AAAA,EAC3E;AACF;;;ACpFA,eAAsB,8BAA8B,MAgBlC;AAChB,QAAM,EAAE,8BAA8B,IAAI,MAAM,OAC9C,0CACF;AAEA,QAAM,8BAA8B,IAAW;AACjD;;;ACpBO,SAAS,+BAA+B,MAMX;AAClC,MAAI,CAAC,KAAK,QAAS,QAAO;AAE1B,SAAO,IAAI,yBAAyB,KAAK,OAAO,KAAK,QAAQ;AAAA,IAC3D,aAAa,KAAK;AAAA,IAClB,kBAAkB,KAAK;AAAA,EACzB,CAAC;AACH;;;AC+BA,eAAsB,aAAa;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoC;AAClC,QAAM,yBAAyB,OAAO,gBAAgB,MAAM,EACzD,YAAY,EACZ,KAAK;AACR,QAAM,wBAAwB,OAAO,eAAe,MAAM,EACvD,YAAY,EACZ,KAAK;AAER,MAAI,CAAC,CAAC,QAAQ,aAAa,EAAE,SAAS,qBAAqB,GAAG;AAC5D,YAAQ;AAAA,MACN,kCAAkC,WAAW;AAAA,IAC/C;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,CAAC,CAAC,QAAQ,QAAQ,aAAa,EAAE,SAAS,sBAAsB,GAAG;AACrE,YAAQ;AAAA,MACN,mCAAmC,YAAY;AAAA,IACjD;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,2BAA2B,iBAAiB,CAAC,SAAS;AACxD,YAAQ;AAAA,MACN;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,iCAAiC,uBACnC,OAAO,oBAAoB,EAAE,KAAK,IAClC;AAEJ,MAAI,gCAAgC;AAClC,QAAI,mCAAmC,SAAS;AAC9C,cAAQ;AAAA,QACN,gDAAgD,8BAA8B;AAAA,MAChF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI,0BAA0B,eAAe;AAC3C,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI,2BAA2B,eAAe;AAC5C,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MACE,0BAA0B,iBAC1B,2BAA2B,eAC3B;AACA,YAAQ;AAAA,MACN;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,oBAAoB;AACtB,QACE,0BAA0B,iBAC1B,2BAA2B,eAC3B;AACA,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,0BAA0B,eAAe;AAC3C,QAAI,QAAQ;AACV,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI,cAAc;AAChB,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,OAAO;AACL,QAAI,CAAC,aAAa;AAChB,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,CAAC,SAAU,QAAO;AACtB,UAAM,MAAM,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAC1D,UAAM,YAAY,IACf,QAAQ,OAAK,OAAO,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,EACvC,IAAI,OAAK,EAAE,KAAK,CAAC;AACpB,QAAI,UAAU,WAAW,EAAG,QAAO;AAEnC,QAAI,UAAU,WAAW,KAAK,UAAU,CAAC,MAAM,GAAI,QAAO,CAAC;AAC3D,QAAI,UAAU,WAAW,KAAK,UAAU,CAAC,MAAM,UAAW,QAAO;AAEjE,UAAM,SAAS,IAAI,IAAI,UAAU,OAAO,OAAK,KAAK,MAAM,SAAS,CAAC;AAClE,UAAM,UAAU,CAAC,GAAG,MAAM,EAAE;AAAA,MAC1B,UAAQ,CAAC,MAAM,KAAK,OAAK,EAAE,SAAS,IAAI;AAAA,IAC1C;AACA,QAAI,QAAQ,SAAS,GAAG;AACtB,cAAQ,MAAM,sCAAsC,QAAQ,KAAK,IAAI,CAAC,EAAE;AACxE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,WAAO,MAAM,OAAO,OAAK,OAAO,IAAI,EAAE,IAAI,CAAC;AAAA,EAC7C,GAAG;AAEH,MAAI,2BAA2B,QAAQ;AACrC,iBAAa,WAAW;AACxB,UAAM,EAAE,YAAY,SAAS,IAAI,MAAM,IAAI;AAAA,MACzC;AAAA,MACA;AAAA,MACA,gBAAgB,eAAe,oBAAI,KAAK,CAAC;AAAA,MACzC,QAAQ;AAAA,MACR,KAAAA;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,MACA,gBAAgB,uBAAuB;AAAA,IACzC,CAAC;AACD,YAAQ,OAAO,MAAM,GAAG,QAAQ;AAAA,CAAI;AACpC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,wBAAiB;AAC5D,QAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,uBAAoB;AAC7D,QAAM,EAAE,YAAAC,YAAW,IAAI,MAAM,OAAO,uBAAU;AAC9C,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,2BAAc;AACpD,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,qBAAQ;AACvC,QAAM,EAAE,sBAAsB,IAC5B,MAAM,OAAO,kCAAoC;AACnD,QAAM,EAAE,yBAAyB,oBAAoB,qBAAqB,IACxE,MAAM,OAAO,mCAAqC;AACpD,QAAM,EAAE,0BAAAC,0BAAyB,IAC/B,MAAM,OAAO,wCAA0C;AACzD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI,MAAM,OAAO,sCAA2C;AAC5D,QAAM,EAAE,kCAAkC,IACxC,MAAM,OAAO,qCAAmC;AAElD,QAAM,kBAAkB,sBAAsB;AAC9C,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,cAAqB,CAAC;AAE5B,QAAM,mBACJ,OAAO,yBAAyB,YAAY,qBAAqB,KAAK,IAClE,CAAC,oBAAoB,IACrB,MAAM,gBAAgB,EAAE,qBAAqB,CAAC;AACpD,QAAM,eACJ,OAAO,uBAAuB,YAAY,mBAAmB,KAAK,IAC9D,CAAC,GAAG,kBAAkB,kBAAkB,IACxC;AAEN,QAAM,uBACJ,OAAO,eAAe,WAAW,WAAW,KAAK,IAAI;AACvD,QAAM,oBAAoB,MAAM;AAC9B,QAAI,CAAC,qBAAsB,QAAO;AAClC,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,oBAAoB;AAC9C,UAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE,cAAM,IAAI,MAAM,8BAA8B;AAAA,MAChD;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACjE,cAAQ,MAAM,iCAAiC,GAAG,EAAE;AACpD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,GAAG;AAEH,MAAI,kBAAkB;AACpB,iBAAa;AAAA,MACX;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,KAAK,UAAU,gBAAgB,CAAC;AAAA,MAClD,EAAE,KAAK,IAAI;AAAA,IACb;AAAA,EACF;AACA,QAAM,MAAM,MAAMD,YAAW;AAE7B,QAAM,oBACJ,CAAC,QACD,QAAQ,+BAA+B,KACvC,QAAQ,0BAA0B;AAEpC,MAAI,wBAAwB,kCAAkC;AAAA,IAC5D,YAAYD;AAAA,IACZ,0BAA0B;AAAA,IAC1B,kCAAkC;AAAA,EACpC,CAAC;AAED,QAAM,cAAc,CAAC,UAA6B;AAChD,QAAI,CAAC,MAAO,QAAO,CAAC;AACpB,UAAM,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACjD,WAAO,IACJ,QAAQ,OAAK,OAAO,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,EACvC,IAAI,OAAK,EAAE,KAAK,CAAC,EACjB,OAAO,OAAO;AAAA,EACnB;AAEA,QAAM,eAAe,YAAY,YAAY;AAC7C,QAAM,cAAc,YAAY,eAAe;AAC/C,QAAM,iBAAiB,YAAY,MAAM;AAEzC,QAAM,UAAiB,CAAC;AACxB,MAAI,aAAa,SAAS,GAAG;AAC3B,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,MACV,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,MAAI,YAAY,SAAS,GAAG;AAC1B,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,MACV,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,MAAI,eAAe,SAAS,GAAG;AAC7B,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAEA,QAAM,2BACJ,OAAO,mBAAmB,WAAW,eAAe,KAAK,IAAI;AAC/D,MAAI,0BAA0B;AAC5B,UAAM,aACJ,6BAA6B,aACzB,YACA;AACN,UAAM,UAAU,oBAAI,IAAI;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,CAAC,QAAQ,IAAI,UAAU,GAAG;AAC5B,cAAQ;AAAA,QACN,qCAAqC,wBAAwB;AAAA,MAC/D;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,MAAI,4BAA4B;AAC9B,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,MAAI,QAAQ,SAAS,GAAG;AACtB,4BAAwB;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,gBAAgB,uBAAuB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,8BAA8B,0BAA0B;AAAA,IACxD,OACE,OAAO,UAAU,YAAY,MAAM,KAAK,IACpC,MAAM,KAAK,IACV;AAAA,EACT;AAEA,QAAM,iBAAiB,cAAc,IAAI,OAAK,EAAE,IAAI;AACpD,QAAM,gBACJ,yBAAyB,OACrB,SACA,SAAS,OAAO,OAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,OAAK,IAAI,EAAE,eAAe,CAAC,EAAE;AACzE,QAAM,UAAU,mBAAmB;AAAA,IACjC,WAAW;AAAA,IACX,KAAAA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACF,CAAC;AAED,QAAM,eAAe,CAAC,QAAa;AACjC,YAAQ,OAAO,MAAM,KAAK,UAAU,GAAG,IAAI,IAAI;AAAA,EACjD;AAEA,MAAI,2BAA2B,eAAe;AAC5C,iBAAa,OAAO;AAAA,EACtB,OAAO;AACL,gBAAY,KAAK,OAAO;AAAA,EAC1B;AAEA,MAAI,4BAAoD;AACxD,QAAM,aAAa,+BAA+B;AAAA,IAChD,SAAS,0BAA0B;AAAA,IACnC,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,aAAa,MAAM;AACjB,iCAA2B,MAAM;AAAA,IACnC;AAAA,IACA,kBAAkB,qCAAqC;AAAA,MACrD;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,MAAI,WAAY,YAAW,MAAM;AAEjC,QAAM,uBAAuB,MAAM;AACjC,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,IAAI,MAAM,OAAO,GAAG,IAAI;AAC9B,WAAO,OAAO,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI;AAAA,EAC3C,GAAG;AAEH,QAAM,aAAa,sBAAsB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,0BAA0B,eAAe;AAC3C,QAAI,CAAC,YAAY;AACf,cAAQ,MAAM,0CAA0C;AACxD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,8BAA8B;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,YAAY;AAAA,MACZ,SAAS;AAAA,MACT;AAAA,MACA,oBAAoB;AAAA,QAClB,SAAS;AAAA,QACT,WAAW;AAAA,QACX,oBAAoB,CAAC;AAAA,QACrB,YAAY,MAAM;AAAA,QAAC;AAAA,MACrB;AAAA,MACA,oBAAoB,QAAQ,kBAAkB;AAAA,MAC9C,iBAAiB,MAAM,aAAa;AAAA,MACpC,oCAAoC,gBAAc;AAChD,oCAA4B;AAAA,MAC9B;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,KAAK,CAAC;AAAA,EAChB;AAGA,QAAM,kBAAkB,IAAI,gBAAgB;AAC5C,QAAM,UAAU,OAAO,YAAY;AACjC,QAAI,0BAA0B,eAAe;AAC3C,mBAAa,WAAW;AACxB,aAAO,kBAAkB,WAAW;AAAA,IACtC;AACA,QAAI,CAAC,YAAY;AACf,cAAQ,MAAM,0CAA0C;AACxD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAMG,WAAU,MAAM,WAAW,gBAAgB;AAAA,MAC/C,QAAQ,gBAAgB;AAAA,MACxB,WAAW;AAAA,IACb,CAAC;AAED,QAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,cAAQ,MAAM,yDAAyD;AACvE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,aAAcA,SAAgB;AACpC,UAAM,aAAa,YAAY;AAC/B,QAAI,OAAO,eAAe,YAAY,CAAC,MAAM,QAAQ,UAAU,GAAG;AAChE,cAAQ,MAAM,iDAAiD;AAC/D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,IAAI,kBAAkB,UAAiB;AAC7C,QAAI,OAAQA,SAAgB,SAAS,YAAaA,SAAgB,MAAM;AACtE;AAAC,MAAC,EAAU,OAAO,OAAQA,SAAgB,IAAI;AAAA,IACjD;AACA,WAAO;AAAA,EACT,GAAG;AAEH,QAAM,eAAe,CAAC,GAAI,mBAAmB,CAAC,GAAI,OAAO;AAEzD,QAAM,UAAU,wBAAwB,SAAgB,eAAe;AACvE,MAAI,SAAS;AACX,QAAI,2BAA2B,eAAe;AAC5C,mBAAa,OAAO;AAAA,IACtB,OAAO;AACL,kBAAY,KAAK,OAAO;AAAA,IAC1B;AAAA,EACF;AAEA,MAAI,gBAA4B;AAChC,MAAI,aAAsB;AAC1B,MAAI;AACF,qBAAiB,KAAK,MAAM,cAAc,cAAc,KAAK,YAAY;AAAA,MACvE,SAAS;AAAA,MACT;AAAA,MACA,WAAW;AAAA,MACX,oBAAoB,CAAC;AAAA,MACrB,YAAY,MAAM;AAAA,MAAC;AAAA,IACrB,CAAC,GAAG;AACF,UAAI,EAAE,SAAS,YAAa,iBAAgB;AAC5C,YAAM,MAAM,wBAAwB,GAAG,eAAe;AACtD,UAAI,CAAC,IAAK;AAEV,UAAI,2BAA2B,eAAe;AAC5C,qBAAa,GAAG;AAAA,MAClB,OAAO;AACL,oBAAY,KAAK,GAAG;AAAA,MACtB;AAAA,IACF;AAAA,EACF,SAAS,GAAG;AACV,oBAAgB,MAAM;AACtB,iBAAa;AAAA,EACf;AAEA,QAAM,oBAAoB,eAAe,SAAS,SAAS;AAAA,IACzD,CAAC,MAAW,EAAE,SAAS;AAAA,EACzB,GAAG;AACH,MAAI,OACF,OAAO,sBAAsB,WACzB,oBACA,sBAAsB,QACpB,WAAW,UACX,aACE,OAAO,UAAU,IACjB;AAEV,MAAI;AACJ,MAAI,oBAAoB,CAAC,YAAY;AACnC,QAAI;AACF,YAAM,MAAM,OAAO,sBAAsB,WAAW,oBAAoB;AACxE,YAAM,SAAS,IAAI,KAAK;AACxB,YAAM,YAAY,MAAM;AACtB,cAAM,IAAI,OAAO,MAAM,wCAAwC;AAC/D,eAAO,IAAI,EAAE,CAAC,EAAG,KAAK,IAAI;AAAA,MAC5B,GAAG;AAEH,YAAM,SAAS,KAAK,MAAM,QAAQ;AAClC,YAAM,OAAO,MAAM,OAAO,KAAK,GAAG;AAClC,YAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AACtD,YAAM,WAAW,IAAI,QAAQ,gBAAgB;AAC7C,YAAM,KAAK,SAAS,MAAM;AAC1B,UAAI,CAAC,IAAI;AACP,cAAM,YACJ,OAAO,IAAI,eAAe,aACtB,IAAI,WAAW,SAAS,QAAQ,EAAE,WAAW,KAAK,CAAC,IACnD,KAAK,UAAU,SAAS,UAAU,CAAC,CAAC;AAC1C,cAAM,IAAI;AAAA,UACR,oDAAoD,SAAS;AAAA,QAC/D;AAAA,MACF;AACA,UAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE,cAAM,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AACA,yBAAmB;AAAA,IACrB,SAAS,GAAG;AACV,YAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,mBAAa,IAAI,MAAM,GAAG;AAC1B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,QAAQ,eAAe,SAAS;AACtC,QAAM,eAAe,aAAa;AAClC,QAAM,aAAa,KAAK,IAAI,IAAI;AAChC,QAAM,YAAY,qBAAqB;AAAA,IACrC,WAAW;AAAA,IACX,QAAQ,OAAO,IAAI;AAAA,IACnB;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,SAAS,QAAQ,UAAU;AAAA,EAC7B,CAAC;AAED,MAAI,2BAA2B,eAAe;AAC5C,iBAAa,SAAS;AACtB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,cAAY,KAAK,SAAS;AAC1B,MAAI,SAAS;AACX,YAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAAA,CAAI;AAAA,EAClE,OAAO;AACL,YAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,WAAW,MAAM,CAAC,CAAC;AAAA,CAAI;AAAA,EAChE;AACA,UAAQ,KAAK,CAAC;AAChB;;;ACxmBA,SAAS,YAAY,UAAU;AAC/B,SAAS,YAAY;AAGrB,IAAM,iBAAiB,KAAK,KAAK,KAAK,KAAK;AAOpC,SAAS,sBAAsB,UAAwB;AAC5D,QAAM,SAAS,SACZ,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,qCAAqC,eAAe;AAC/D,SAAO,IAAI,KAAK,MAAM;AACxB;AAEA,eAAsB,yBAAiD;AACrE,QAAM,cAAc,YAAY,SAAS;AACzC,QAAM,YAAY,YAAY,OAAO;AACrC,QAAM,gBAAgB,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc;AAC1D,QAAM,gBAA+B,EAAE,UAAU,GAAG,QAAQ,EAAE;AAE9D,aAAW,QAAQ,CAAC,aAAa,SAAS,GAAG;AAC3C,QAAI;AACF,YAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAEnC,iBAAW,QAAQ,OAAO;AACxB,YAAI;AACF,gBAAM,YAAY,sBAAsB,IAAI;AAC5C,cAAI,YAAY,eAAe;AAC7B,kBAAM,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC;AAChC,gBAAI,SAAS,aAAa;AACxB,4BAAc;AAAA,YAChB,OAAO;AACL,4BAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF,SAAS,OAAgB;AACvB;AAAA,YACE,0BAA0B,IAAI,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,UAC3F;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAgB;AACvB,UACE,iBAAiB,SACjB,UAAU,SACV,MAAM,SAAS,UACf;AACA;AAAA,UACE,+BAA+B,IAAI,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,QAChG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qCAA2C;AACzD,QAAM,YAAY,aAAa,sBAAsB;AAErD,YAAU,MAAM;AAClB;;;AC1DA,eAAsB,MAAMC,MAAa,UAAmC;AAC1E,MAAIA,SAAQ,QAAQ,IAAI,GAAG;AACzB,mBAAeA,IAAG;AAAA,EACpB;AACA,QAAM,OAAOA,IAAG;AAEhB,oCAAkC;AAElC,MAAI;AACJ,MAAI;AACF,kBAAc,MAAM,OAAO,sBAAqB;AAAA,EAClD,QAAQ;AACN,kBAAc,MAAM,OAAO,sBAAqB;AAAA,EAClD;AACA,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,kBAAkB,MAAM;AAC5B,UAAY,KAAK,uBAAuB,EAAE,IAAI,KAAK,CAAC;AAAA,EACtD,CAAC;AAED,MAAI,UAAU;AACZ,QACE,QAAQ,aAAa,WACrB,OAAO,QAAQ,WAAW,cAC1B,QAAQ,OAAO,MAAM,GACrB;AACA,cAAQ;AAAA,QACN;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC;AAAA,EACF;AAEA,qCAAmC;AACnC,aAAW;AAEX,QAAM,gBAAgB,wBAAwB;AAC9C,MACE,cAAc,aAAa,UAC3B,cAAc,iBAAiB,QAC/B;AAAA,EACF;AAEF;;;ACrDA,OAAOC,YAAW;;;ACAlB,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AASpC,SAAS,eAAe;AAQjB,SAAS,YAAY,EAAE,OAAO,GAA2B;AAC9D,QAAM,QAAQ,SAAS;AACvB,QAAM,UAAU,MAAM;AAAA,EAAC,GAAG,CAAC,CAAC;AAE5B,WAAS,SAAS,OAAqB;AACrC,UAAM,SAAS,wBAAwB;AACvC,YAAQ,OAAO;AAAA,MACb,KAAK,OAAO;AACV,cAAM,YAAY,QAAQ,MAAM,OAAO;AAEvC,YAAI,CAAC,WAAW;AACd,mCAAyB;AAAA,YACvB,GAAG;AAAA,YACH,wBAAwB;AAAA,UAC1B,CAAC;AAAA,QACH;AACA,eAAO;AACP;AAAA,MACF;AAAA,MACA,KAAK,MAAM;AACT,gBAAQ,KAAK,CAAC;AACd;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,gBAAgB,MAAM,QAAQ,KAAK,CAAC,CAAC;AAEvD,WAAS,CAAC,QAAQ,QAAQ;AACxB,QAAI,IAAI,QAAQ;AACd,cAAQ,KAAK,CAAC;AACd;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,KAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,aAAa,MAAM;AAAA;AAAA,IAEnB,oCAAC,QAAK,MAAI,MAAC,OAAO,MAAM,WAAS,wCAEjC;AAAA,IACA,oCAAC,QAAK,MAAI,QAAE,QAAQ,IAAI,CAAE;AAAA,IAE1B,oCAAC,OAAI,eAAc,UAAS,KAAK,KAC/B,oCAAC,YACE,cAAa,wEACK,cAAa,mCAClC,GACA,oCAAC,YAAK,yBACkB,cAAa,wEAErC,CACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,EAAE,OAAO,gBAAgB,OAAO,MAAM;AAAA,UACtC,EAAE,OAAO,YAAY,OAAO,KAAK;AAAA,QACnC;AAAA,QACA,UAAU,WAAS,SAAS,KAAqB;AAAA;AAAA,IACnD;AAAA,EACF,GACA,oCAAC,OAAI,YAAY,KACf,oCAAC,QAAK,UAAQ,QACX,UAAU,UACT,0DAAE,UAAO,UAAU,SAAQ,gBAAc,IAEzC,0DAAE,mCAA8B,CAEpC,CACF,CACF;AAEJ;;;ACjGA,OAAOC,YAAW;AAClB,SAAS,cAAc;;;ACDvB,OAAOC,YAAW;AAClB,SAAS,OAAAC,MAAK,QAAAC,OAAM,YAAAC,iBAAgB;AAEpC,SAAS,mBAAmB;AAK5B,SAAS,iBAAiB;;;ACR1B,OAAOC,YAAW;AAClB,SAAS,QAAAC,aAAY;AACrB,OAAO,UAAU;AAGV,SAAS,sBAAuC;AACrD,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA,cAACC,OAAA,MAAK,oDAC6C,cAAa,6LAGzB,KACrC,gBAAAD,OAAA,cAAC,QAAK,KAAI,+DAA4D,mBAEtE,CACF,GAEA,gBAAAA,OAAA,cAACC,OAAA,EAAK,UAAQ,QAAC,oEAEZ,iBAAgB,6BACnB,CACF;AAEJ;;;ADPO,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,QAAQ,SAAS;AACvB,WAAS,SAAS,iBAA2B;AAC3C,UAAM,SAAS,wBAAwB;AAEvC,QAAI,CAAC,OAAO,sBAAsB;AAChC,aAAO,uBAAuB,CAAC;AAAA,IACjC;AACA,QAAI,CAAC,OAAO,sBAAsB;AAChC,aAAO,uBAAuB,CAAC;AAAA,IACjC;AAEA,UAAM,CAAC,iBAAiB,eAAe,IAAI;AAAA,MAAU;AAAA,MAAa,YAChE,gBAAgB,SAAS,MAAM;AAAA,IACjC;AAEA,WAAO,qBAAqB,KAAK,GAAG,eAAe;AACnD,WAAO,qBAAqB,KAAK,GAAG,eAAe;AAEnD,6BAAyB,MAAM;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,gBAAgB,MAAM,QAAQ,KAAK,CAAC;AAEtD,EAAAC,UAAS,CAAC,QAAQ,QAAQ;AACxB,QAAI,IAAI,QAAQ;AACd,YAAM,SAAS,wBAAwB;AACvC,UAAI,CAAC,OAAO,sBAAsB;AAChC,eAAO,uBAAuB,CAAC;AAAA,MACjC;AAEA,iBAAW,UAAU,aAAa;AAChC,YAAI,CAAC,OAAO,qBAAqB,SAAS,MAAM,GAAG;AACjD,iBAAO,qBAAqB,KAAK,MAAM;AAAA,QACzC;AAAA,MACF;AAEA,+BAAyB,MAAM;AAC/B,aAAO;AACP;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAc;AAAA,MACd,KAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,aAAa,MAAM;AAAA;AAAA,IAEnB,gBAAAD,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,MAAM,WAAS,0BAEjC;AAAA,IACA,gBAAAF,OAAA,cAACE,OAAA,MAAK,uEACgE,KACnE,YAAY,QAAO,0CACtB;AAAA,IACA,gBAAAF,OAAA,cAAC,yBAAoB;AAAA,IAErB,gBAAAA,OAAA,cAACE,OAAA,MAAK,+CAA6C;AAAA,IAEnD,gBAAAF,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,YAAY,IAAI,aAAW;AAAA,UAClC,OAAO;AAAA,UACP,OAAO;AAAA,QACT,EAAE;AAAA,QACF,cAAc;AAAA,QACd;AAAA;AAAA,IACF;AAAA,EACF,GACA,gBAAAA,OAAA,cAACC,MAAA,EAAI,YAAY,KACf,gBAAAD,OAAA,cAACE,OAAA,EAAK,UAAQ,QACX,UAAU,UACT,gBAAAF,OAAA,cAAAA,OAAA,gBAAE,UAAO,UAAU,SAAQ,gBAAc,IAEzC,gBAAAA,OAAA,cAAAA,OAAA,gBAAE,8DAAsD,CAE5D,CACF,CACF;AAEJ;;;AExGA,OAAOG,YAAW;AAClB,SAAS,OAAAC,MAAK,QAAAC,OAAM,YAAAC,iBAAgB;AAe7B,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,QAAQ,SAAS;AACvB,WAAS,SAAS,OAAqB;AACrC,UAAM,SAAS,wBAAwB;AACvC,YAAQ,OAAO;AAAA,MACb,KAAK,OAAO;AACV,YAAI,CAAC,OAAO,sBAAsB;AAChC,iBAAO,uBAAuB,CAAC;AAAA,QACjC;AACA,YAAI,CAAC,OAAO,qBAAqB,SAAS,UAAU,GAAG;AACrD,iBAAO,qBAAqB,KAAK,UAAU;AAAA,QAC7C;AACA,iCAAyB,MAAM;AAC/B,eAAO;AACP;AAAA,MACF;AAAA,MACA,KAAK,MAAM;AACT,YAAI,CAAC,OAAO,sBAAsB;AAChC,iBAAO,uBAAuB,CAAC;AAAA,QACjC;AACA,YAAI,CAAC,OAAO,qBAAqB,SAAS,UAAU,GAAG;AACrD,iBAAO,qBAAqB,KAAK,UAAU;AAAA,QAC7C;AACA,iCAAyB,MAAM;AAC/B,eAAO;AACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,gBAAgB,MAAM,QAAQ,KAAK,CAAC,CAAC;AAEvD,EAAAC,UAAS,CAAC,QAAQ,QAAQ;AACxB,QAAI,IAAI,QAAQ;AACd,aAAO;AACP;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAc;AAAA,MACd,KAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,aAAa,MAAM;AAAA;AAAA,IAEnB,gBAAAD,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,MAAM,WAAS,yBAEjC;AAAA,IACA,gBAAAF,OAAA,cAACE,OAAA,MAAK,gHAGN;AAAA,IACA,gBAAAF,OAAA,cAACE,OAAA,EAAK,MAAI,QAAE,UAAW;AAAA,IAEvB,gBAAAF,OAAA,cAAC,yBAAoB;AAAA,IAErB,gBAAAA,OAAA,cAACE,OAAA,MAAK,yCAAuC;AAAA,IAE7C,gBAAAF,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,EAAE,OAAO,4BAA4B,OAAO,MAAM;AAAA,UAClD,EAAE,OAAO,0BAA0B,OAAO,KAAK;AAAA,QACjD;AAAA,QACA,UAAU,WAAS,SAAS,KAAqB;AAAA;AAAA,IACnD;AAAA,EACF,GACA,gBAAAA,OAAA,cAACC,MAAA,EAAI,YAAY,KACf,gBAAAD,OAAA,cAACE,OAAA,EAAK,UAAQ,QACX,UAAU,UACT,gBAAAF,OAAA,cAAAA,OAAA,gBAAE,UAAO,UAAU,SAAQ,gBAAc,IAEzC,gBAAAA,OAAA,cAAAA,OAAA,gBAAE,qCAAgC,CAEtC,CACF,CACF;AAEJ;;;AH5FA,eAAsB,6BAA4C;AAChE,QAAM,EAAE,QAAQ,IAAI,+BAA+B;AACnD,QAAM,iBAAiB,OAAO,KAAK,OAAO,EAAE;AAAA,IAC1C,gBAAc,qBAAqB,UAAU,MAAM;AAAA,EACrD;AAEA,MAAI,eAAe,WAAW,GAAG;AAC/B;AAAA,EACF;AAEA,QAAM,IAAI,QAAc,aAAW;AACjC,UAAM,wBAAwB,MAAM;AAClC,cAAQ,OAAO,MAAM,wBAAwB,MAAM;AACjD,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAEA,QAAI,eAAe,WAAW,KAAK,eAAe,CAAC,MAAM,QAAW;AAClE,YAAM,SAAS;AAAA,QACb,gBAAAG,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,YAAY,eAAe,CAAC;AAAA,YAC5B,QAAQ,MAAM;AACZ,qBAAO,UAAU;AACjB,oCAAsB;AAAA,YACxB;AAAA;AAAA,QACF;AAAA,QACA,EAAE,aAAa,MAAM;AAAA,MACvB;AAAA,IACF,OAAO;AACL,YAAM,SAAS;AAAA,QACb,gBAAAA,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,QAAQ,MAAM;AACZ,qBAAO,UAAU;AACjB,oCAAsB;AAAA,YACxB;AAAA;AAAA,QACF;AAAA,QACA,EAAE,aAAa,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AFlCO,SAAS,qBAA2B;AACzC,QAAM,SAAS,gBAAgB;AAC/B,mBAAiB;AAAA,IACf,GAAG;AAAA,IACH,wBAAwB;AAAA,IACxB,uBAAuB,MAAM;AAAA,EAC/B,CAAC;AACH;AAEA,eAAsB,iBACpB,UACA,OACe;AACf,MAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC;AAAA,EACF;AAEA,QAAM,SAAS,gBAAgB;AAC/B,MAAI,CAAC,OAAO,SAAS,CAAC,OAAO,wBAAwB;AACnD,UAAM,cAAc;AACpB,UAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,UAAM,IAAI,QAAc,aAAW;AACjC,MAAAA;AAAA,QACE,gBAAAC,OAAA;AAAA,UAAC;AAAA;AAAA,YACC,QAAQ,YAAY;AAClB,iCAAmB;AACnB,oBAAM,cAAc;AACpB,sBAAQ;AAAA,YACV;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UACE,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO;AACV,QAAI,UAAU;AACZ,UAAI,CAAC,4BAA4B,GAAG;AAClC,cAAM,IAAI,QAAc,aAAW;AACjC,gBAAM,SAAS,MAAM;AACnB,8CAAkC;AAClC,oBAAQ;AAAA,UACV;AACC,WAAC,YAAY;AACZ,kBAAM,EAAE,QAAAD,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,YAAAA,QAAO,gBAAAC,OAAA,cAAC,eAAY,QAAgB,GAAI;AAAA,cACtC,aAAa;AAAA,YACf,CAAC;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,2BAA2B;AAAA,EACnC;AACF;;;ARjEA,OAAOC,aAAW;AAClB,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAGzB,SAAS,eAAe;AAgBxB,SAAS,WAAW;;;Ac3BpB,OAAO,UAAU;AACjB,SAAS,SAAS;AAGlB,IAAM,mBAAmB,EAAE,MAAM;AAAA,EAC/B,EACG,OAAO;AAAA,IACN,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,CAAC,EACA,OAAO;AAAA,EACV,EACG,OAAO;AAAA,IACN,OAAO,EAAE,OAAO;AAAA,EAClB,CAAC,EACA,OAAO;AACZ,CAAC;AAID,IAAM,yBAAyB,EAC5B,OAAO;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACzC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAE/B,QAAQ,iBAAiB,SAAS;AAAA,EAClC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAEtC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AACjD,CAAC,EACA,OAAO;AAEV,IAAM,0BAA0B,EAC7B,OAAO;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACjC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACjC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AACpC,CAAC,EACA,OAAO,EACP,SAAS;AAEZ,IAAM,wBAAwB,EAC3B,OAAO;AAAA,EACN,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,EAC9C,UAAU,EAAE,MAAM,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AAAA,EACpD,UAAU;AACZ,CAAC,EACA,OAAO;AAIV,SAAS,8BAA8B,UAAsC;AAC3E,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,sBACP,OAIA,gBACwC;AACxC,QAAM,WAAqB,CAAC;AAE5B,MAAI,MAAM,WAAW;AACnB,UAAM,WAAW,QAAQ,IAAI,MAAM,SAAS;AAC5C,QAAI,SAAU,QAAO,EAAE,QAAQ,UAAU,SAAS;AAClD,QAAI,eAAgB,QAAO,EAAE,QAAQ,gBAAgB,SAAS;AAC9D,aAAS,KAAK,oBAAoB,MAAM,SAAS,cAAc;AAC/D,WAAO,EAAE,QAAQ,IAAI,SAAS;AAAA,EAChC;AAEA,MAAI,MAAM,UAAU,aAAa,MAAM,QAAQ;AAC7C,UAAM,WAAW,QAAQ,IAAI,MAAM,OAAO,OAAO;AACjD,QAAI,SAAU,QAAO,EAAE,QAAQ,UAAU,SAAS;AAClD,QAAI,eAAgB,QAAO,EAAE,QAAQ,gBAAgB,SAAS;AAC9D,aAAS,KAAK,oBAAoB,MAAM,OAAO,OAAO,cAAc;AACpE,WAAO,EAAE,QAAQ,IAAI,SAAS;AAAA,EAChC;AAEA,MAAI,MAAM,UAAU,WAAW,MAAM,QAAQ;AAC3C,WAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,SAAS;AAAA,EAChD;AAEA,MAAI,eAAgB,QAAO,EAAE,QAAQ,gBAAgB,SAAS;AAE9D,WAAS;AAAA,IACP;AAAA,EACF;AACA,SAAO,EAAE,QAAQ,IAAI,SAAS;AAChC;AAEA,SAAS,qBACP,cACA,UACe;AACf,MAAI,SAAS,KAAK,OAAK,EAAE,cAAc,YAAY,EAAG,QAAO;AAC7D,QAAM,SAAS,SAAS,KAAK,OAAK,EAAE,SAAS,YAAY;AACzD,SAAO,QAAQ,aAAa;AAC9B;AAEO,SAAS,qBAAqB,UAAmC;AACtE,QAAM,SAAS,KAAK,KAAK,QAAQ;AACjC,SAAO,sBAAsB,MAAM,MAAM;AAC3C;AAEO,SAAS,gCAAgC,QAA8B;AAC5E,QAAM,gBAAgB,OAAO,iBAAiB,CAAC;AAC/C,QAAM,WAAW,OAAO;AAExB,QAAM,WAA4B;AAAA,IAChC,SAAS;AAAA,IACT,UAAU,cAAc,IAAI,OAAK;AAC/B,YAAM,eAAe,8BAA8B,EAAE,QAAQ;AAC7D,aAAO;AAAA,QACL,MAAM,EAAE;AAAA,QACR,UAAU,EAAE;AAAA,QACZ,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QAC1C,WAAW,EAAE;AAAA,QACb,eAAe,EAAE;AAAA,QACjB,GAAI,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,CAAC;AAAA,QAClE,UAAU,EAAE;AAAA,QACZ,WAAW,EAAE;AAAA,QACb,GAAI,OAAO,EAAE,aAAa,WAAW,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC;AAAA,QACjE,QAAQ,EAAE,SAAS,gBAAgB,UAAU;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,IACD,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACjC;AAEA,SAAO,KAAK,KAAK,UAAU;AAAA,IACzB,QAAQ;AAAA,IACR,WAAW;AAAA,EACb,CAAC;AACH;AAEO,SAAS,2BACd,gBACA,UACA,UAAiC,CAAC,GACgB;AAClD,QAAM,SAAS,qBAAqB,QAAQ;AAC5C,QAAM,WAAqB,CAAC;AAE5B,QAAM,mBAAmB,eAAe,iBAAiB,CAAC;AAC1D,QAAM,sBAAsB,IAAI;AAAA,IAC9B,iBAAiB,IAAI,OAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAAA,EAC5C;AAEA,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,mBAAmC,OAAO,SAAS,IAAI,aAAW;AACtE,UAAM,WAAW,oBAAoB,IAAI,QAAQ,SAAS;AAC1D,UAAM,WAAW;AAAA,MACf,EAAE,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,UAAU;AAAA,MACvD,UAAU;AAAA,IACZ;AACA,aAAS,KAAK,GAAG,SAAS,SAAS,IAAI,OAAK,IAAI,QAAQ,SAAS,KAAK,CAAC,EAAE,CAAC;AAE1E,WAAO;AAAA,MACL,MAAM,QAAQ;AAAA,MACd,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,GAAI,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAAA,MACtD,QAAQ,SAAS;AAAA,MACjB,WAAW,QAAQ;AAAA,MACnB,eAAe,QAAQ;AAAA,MACvB,GAAI,QAAQ,kBACR,EAAE,iBAAiB,QAAQ,gBAAgB,IAC3C,CAAC;AAAA,MACL,UAAU,QAAQ,YAAY;AAAA,MAC9B,WAAW,QAAQ,aAAa,UAAU,aAAa;AAAA,MACvD,GAAI,QAAQ,WACR,EAAE,UAAU,QAAQ,SAAS,IAC7B,UAAU,WACR,EAAE,UAAU,SAAS,SAAS,IAC9B,CAAC;AAAA,MACP,GAAI,UAAU,SAAS,EAAE,QAAQ,SAAS,OAAO,IAAI,CAAC;AAAA,MACtD,GAAI,UAAU,mBACV,EAAE,kBAAkB,SAAS,iBAAiB,IAC9C,CAAC;AAAA,MACL,GAAI,UAAU,iBACV,EAAE,gBAAgB,SAAS,eAAe,IAC1C,CAAC;AAAA,IACP;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,QAAQ,UAC3B,mBACA;AAAA,IACE,GAAG,iBAAiB;AAAA,MAClB,OAAK,CAAC,iBAAiB,KAAK,OAAK,EAAE,cAAc,EAAE,SAAS;AAAA,IAC9D;AAAA,IACA,GAAG;AAAA,EACL;AAEJ,QAAM,eAA8B;AAAA,IAClC,GAAI,eAAe,iBAAiB;AAAA,MAClC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,OAAO,UAAU;AACnB,UAAM,eACJ,OAAO,SAAS,QAChB,qBAAqB,OAAO,SAAS,MAAM,cAAc;AAC3D,UAAM,eACJ,OAAO,SAAS,QAChB,qBAAqB,OAAO,SAAS,MAAM,cAAc;AAC3D,UAAM,kBACJ,OAAO,SAAS,WAChB,qBAAqB,OAAO,SAAS,SAAS,cAAc;AAC9D,UAAM,gBACJ,OAAO,SAAS,SAChB,qBAAqB,OAAO,SAAS,OAAO,cAAc;AAE5D,QAAI,OAAO,SAAS,QAAQ,CAAC,cAAc;AACzC,eAAS;AAAA,QACP,kCAAkC,OAAO,SAAS,IAAI;AAAA,MACxD;AAAA,IACF,WAAW,cAAc;AACvB,mBAAa,OAAO;AAAA,IACtB;AAEA,QAAI,OAAO,SAAS,QAAQ,CAAC,cAAc;AACzC,eAAS;AAAA,QACP,kCAAkC,OAAO,SAAS,IAAI;AAAA,MACxD;AAAA,IACF,WAAW,cAAc;AACvB,mBAAa,OAAO;AAAA,IACtB;AAEA,QAAI,OAAO,SAAS,WAAW,CAAC,iBAAiB;AAC/C,eAAS;AAAA,QACP,qCAAqC,OAAO,SAAS,OAAO;AAAA,MAC9D;AAAA,IACF,WAAW,iBAAiB;AAC1B,mBAAa,UAAU;AAAA,IACzB;AAEA,QAAI,OAAO,SAAS,SAAS,CAAC,eAAe;AAC3C,eAAS;AAAA,QACP,mCAAmC,OAAO,SAAS,KAAK;AAAA,MAC1D;AAAA,IACF,WAAW,eAAe;AACxB,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AACF;;;ACvRA,OAAOC,UAAS,WAAW,gBAAgB;;;ACA3C,OAAOC,YAAW;AAClB,SAAS,OAAAC,MAAK,QAAAC,aAAY;AAYnB,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AACF,GAAsC;AACpC,QAAM,EAAE,MAAM,QAAQ,IAAI,gBAAgB;AAC1C,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,OAAO;AAC5B,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK,SAAS,YAAY;AAE1D,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,aAAa;AAEnB,QAAM,UAAU,KAAK,IAAI,CAAC,KAAK,MAAM;AACnC,UAAM,QAAQ,IAAI,CAAC,IAAI,OAAO,UAAU;AACxC,UAAM,WAAW,WAAW,IAAI,QAAQ,EAAE,OAAO,aAAa;AAC9D,UAAM,UAAU,WAAW,IAAI,OAAO,EAAE,OAAO,YAAY;AAC3D,UAAM,WAAW,GAAG,IAAI,YAAY,GAAG,SAAS,UAAU;AAC1D,UAAM,SAAS,IAAI;AACnB,QAAI,aAAa;AACjB,QAAI,IAAI,WAAY,eAAc,WAAW,IAAI,UAAU;AAC3D,QAAI,IAAI;AACN,oBAAc,gBAAgB,IAAI,eAAe;AAEnD,UAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,IAAI,MAAM,GAAG,UAAU;AAChF,UAAM,YACJ,SAAS,SAAS,UAAU,IACxB,GAAG,SAAS,MAAM,GAAG,UAAU,CAAC,CAAC,QACjC;AACN,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO,IAAI,MAAM,SAAS;AAAA,IAC5B;AAAA,EACF,CAAC;AAED,SACE,gBAAAC,OAAA,cAACC,MAAA,EAAI,eAAc,UAAS,QAAO,QAAO,OAAM,UAC9C,gBAAAD,OAAA,cAACC,MAAA,EAAI,aAAa,KAChB,gBAAAD,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,SAAS,EAAE,QAAM,UAEnC,GACA,gBAAAF,OAAA,cAACE,OAAA,MAAM,eAAgB,GACvB,gBAAAF,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,SAAS,EAAE,QAAM,SAEnC,GACA,gBAAAF,OAAA,cAACE,OAAA,MAAM,eAAgB,GACvB,gBAAAF,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,SAAS,EAAE,QAAM,YAEnC,GACA,gBAAAF,OAAA,cAACE,OAAA,MAAK,GAAC,GACP,gBAAAF,OAAA,cAACE,OAAA,EAAK,MAAI,MAAC,OAAO,SAAS,EAAE,QAAM,eAEnC,CACF,GACA,gBAAAF,OAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,UAAU,WAAS,SAAS,SAAS,OAAO,EAAE,CAAC;AAAA,MAC/C,oBAAoB;AAAA;AAAA,EACtB,GACC,cAAc,KACb,gBAAAA,OAAA,cAACC,MAAA,EAAI,aAAa,KAChB,gBAAAD,OAAA,cAACE,OAAA,EAAK,OAAO,SAAS,EAAE,iBAAe,QAAK,aAAY,aAAM,CAChE,CAEJ;AAEJ;;;ADvEO,SAAS,QAAQ,EAAE,SAAS,MAAM,UAAU,GAA2B;AAC5E,QAAM,CAAC,MAAM,OAAO,IAAI,SAAsB,CAAC,CAAC;AAChD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,YAAU,MAAM;AACd;AAAA,MACE,SAAS,aAAa,YAAY,SAAS,IAAI,YAAY,OAAO;AAAA,IACpE,EACG,KAAK,CAAAC,UAAQ;AACZ,UAAI,cAAc,QAAW;AAC3B,cAAM,MAAMA,MAAK,aAAa,IAAI,YAAY,CAAC;AAC/C,YAAI,KAAK;AACP,kBAAQ,IAAI,KAAK,UAAU,IAAI,UAAU,MAAM,CAAC,CAAC;AACjD,kBAAQ,KAAK,CAAC;AAAA,QAChB,OAAO;AACL,kBAAQ,MAAM,yBAAyB,SAAS;AAChD,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF;AAEA,cAAQA,KAAI;AAAA,IACd,CAAC,EACA,MAAM,WAAS;AACd,eAAS,KAAK;AACd,UAAI,cAAc,QAAW;AAC3B,gBAAQ,KAAK,CAAC;AAAA,MAChB,OAAO;AACL,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACL,GAAG,CAAC,SAAS,MAAM,SAAS,CAAC;AAE7B,WAAS,SAAS,OAAqB;AACrC,UAAM,MAAM,KAAK,KAAK;AACtB,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,oBAAgB,IAAI;AACpB,eAAW,MAAM;AACf,cAAQ,IAAI,KAAK,UAAU,IAAI,UAAU,MAAM,CAAC,CAAC;AACjD,cAAQ,KAAK,CAAC;AAAA,IAChB,GAAG,GAAG;AAAA,EACR;AAEA,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AAEA,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,gBAAAC,OAAA,cAAC,eAAY,MAAY,UAAoB;AACtD;;;AEhEA,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EAEA;AAAA,OAEK;AAEP,SAAS,uBAAuB;AAahC,IAAM,QAEF;AAAA,EACF,oBAAoB,CAAC;AACvB;AAEA,IAAM,eAA0B,CAAC,cAAM;AAEvC,IAAM,YAAoB,CAAC,GAAG,YAAY,CAAC;AAE3C,eAAsB,eAAeC,MAA4B;AAC/D,QAAM,OAAOA,IAAG;AAChB,QAAM,SAAS,IAAI;AAAA,IACjB;AAAA,MACE,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,MACE,cAAc;AAAA,QACZ,OAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,YAA4D;AAC1D,YAAM,QAAQ,MAAM,QAAQ;AAAA,QAC1B,UAAU,IAAI,OAAM,UAAS;AAAA,UAC3B,GAAI;AAAA,UACJ,aAAa,mBAAmB,IAAI;AAAA,UACpC,aAAa;AAAA,YACX,KAAK;AAAA,UACP;AAAA,QACF,EAAE;AAAA,MACJ;AAEA,aAAO;AAAA,QACL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,YAA2D;AAChE,YAAM,EAAE,MAAM,WAAW,KAAK,IAAI,QAAQ;AAC1C,YAAM,OAAO,UAAU,KAAK,OAAK,EAAE,SAAS,IAAI;AAChD,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,MAAM,QAAQ,IAAI,YAAY;AAAA,MAC1C;AAEA,UAAI;AACF,YAAI,CAAE,MAAM,KAAK,UAAU,GAAI;AAC7B,gBAAM,IAAI,MAAM,QAAQ,IAAI,iBAAiB;AAAA,QAC/C;AACA,cAAM,QAAQ,gBAAgB,EAAE,aAAa,MAAM;AACnD,cAAM,mBAAmB,MAAM,KAAK;AAAA,UACjC,QAAkB,CAAC;AAAA,UACpB;AAAA,YACE,iBAAiB,IAAI,gBAAgB;AAAA,YACrC,SAAS;AAAA,cACP,UAAU;AAAA,cACV,OAAO;AAAA,cACP,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,mBAAmB;AAAA,YACrB;AAAA,YACA,WAAW;AAAA,YACX,oBAAoB,MAAM;AAAA,UAC5B;AAAA,QACF;AACA,YAAI,oBAAoB,CAAC,iBAAiB,QAAQ;AAChD,gBAAM,IAAI;AAAA,YACR,QAAQ,IAAI,sBAAsB,iBAAiB,OAAO;AAAA,UAC5D;AAAA,QACF;AACA,cAAM,SAAS,KAAK,KAAM,QAAQ,CAAC,GAAa;AAAA,UAC9C,iBAAiB,IAAI,gBAAgB;AAAA,UACrC,WAAW;AAAA,UACX,SAAS;AAAA,YACP,UAAU;AAAA,YACV,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,UACrB;AAAA,UACA,oBAAoB,MAAM;AAAA,QAC5B,CAAC;AAED,cAAM,cAAc,MAAM,MAAM,MAAM;AAEtC,YAAI,YAAY,SAAS,UAAU;AACjC,gBAAM,IAAI,MAAM,QAAQ,IAAI,0BAA0B;AAAA,QACxD;AAEA,eAAO;AAAA,UACL,SAAS,MAAM,QAAQ,WAAW,IAC9B,YAAY,IAAI,WAAS;AAAA,YACvB,MAAM;AAAA,YACN,MAAM,UAAU,OAAO,KAAK,OAAO,KAAK,UAAU,IAAI;AAAA,UACxD,EAAE,IACF;AAAA,YACE;AAAA,cACE,MAAM;AAAA,cACN,MACE,OAAO,gBAAgB,WACnB,cACA,KAAK,UAAU,YAAY,IAAI;AAAA,YACvC;AAAA,UACF;AAAA,QACN;AAAA,MACF,SAAS,OAAO;AACd,iBAAS,KAAK;AACd,eAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,YACxE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,iBAAe,YAAY;AACzB,UAAM,YAAY,IAAI,qBAAqB;AAC3C,UAAM,OAAO,QAAQ,SAAS;AAAA,EAChC;AAEA,SAAO,MAAM,UAAU;AACzB;;;AC5JA,OAAOC,SAAQ;AAIf,eAAsB,oBACpB,SACA,OACgB;AAChB,MAAI;AACF,UAAM,UAAU,MAAMC,IAAG,SAAS,SAAS,OAAO;AAClD,UAAM,WAAW,KAAK,MAAM,OAAO;AACnC,WAAO,oBAAoB,UAAU,KAAK;AAAA,EAC5C,SAAS,OAAO;AACd,aAAS,gCAAgC,OAAO,KAAK,KAAK,EAAE;AAC5D,UAAM,IAAI,MAAM,qCAAqC,KAAK,EAAE;AAAA,EAC9D;AACF;AAEO,SAAS,oBAAoB,UAAiB,OAAsB;AACzE,QAAM,UAAU,IAAI,IAAI,MAAM,IAAI,UAAQ,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAE5D,SAAO,SAAS,IAAI,aAAW;AAC7B,UAAM,gBAAgB,KAAK,MAAM,KAAK,UAAU,OAAO,CAAC;AAExD,QAAI,cAAc,WAAW;AAC3B,oBAAc,YAAY,cAAc,UAAU,IAAI,CAAC,aAAkB;AACvE,YAAI,SAAS,QAAQ,OAAO,SAAS,SAAS,UAAU;AACtD,gBAAM,aAAa,QAAQ,IAAI,SAAS,IAAI;AAC5C,cAAI,YAAY;AACd,qBAAS,OAAO;AAAA,UAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT,CAAC;AACH;;;AC3BA,IAAM,uBAA6C;AAAA,EACjD;AAAA,EACA;AACF;AAEO,SAAS,wBACdC,MACA,uBAA6C,sBACrC;AACR,QAAM,gBAAgB,qBAAqB,wBAAwB;AACnE,SAAO,qBAAqBA,IAAG;AAAA,EAAM,cAAc,aAAa,KAAK,IAAI,CAAC;AAC5E;AAEO,SAAS,yBACd,MACA,uBAA6C,sBACN;AACvC,QAAM,gBAAgB,qBAAqB,wBAAwB;AACnE,QAAM,oBAAoB,cAAc,aAAa;AACrD,QAAM,sBAAsB,cAAc,aAAa,OAAO,OAAK,MAAM,IAAI;AAE7E,MAAI,sBAAsB,oBAAoB,QAAQ;AACpD,kBAAc,eAAe;AAC7B,yBAAqB,yBAAyB,aAAa;AAC3D,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,WAAW,IAAI;AAAA,IAC1B;AAAA,EACF,OAAO;AACL,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,GAAG,IAAI;AAAA,IAClB;AAAA,EACF;AACF;;;AnBuBA,SAAS,kBAAkB;;;AoBpE3B,OAAOC,YAAW;AAClB,SAAS,OAAAC,MAAK,SAAS,QAAAC,OAAM,YAAAC,iBAAgB;AAG7C,SAAS,UAAAC,eAAc;AACvB,SAAS,qBAAqB;AAc9B,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,QAAQ,SAAS;AAEvB,EAAAC,UAAS,CAAC,GAAG,QAAQ;AACnB,QAAI,IAAI,QAAQ;AACd,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,YAAY,gBAAgB,MAAM,QAAQ,KAAK,CAAC,CAAC;AAEvD,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,UAAU,QAAQ;AACpB,aAAO;AAAA,IACT,OAAO;AACL,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,SACE,gBAAAC,OAAA,cAAAA,OAAA,gBACE,gBAAAA,OAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAa,MAAM;AAAA,MACnB,aAAY;AAAA,MACZ,SAAS;AAAA,MACT,OAAO;AAAA,MACP,KAAK;AAAA;AAAA,IAEL,gBAAAD,OAAA,cAACE,OAAA,EAAK,MAAI,QAAC,qBAAmB;AAAA,IAE9B,gBAAAF,OAAA,cAACC,MAAA,EAAI,eAAc,UAAS,KAAK,KAC/B,gBAAAD,OAAA,cAACE,OAAA,MAAK,8BACsB,gBAAAF,OAAA,cAACE,OAAA,EAAK,MAAI,QAAE,QAAS,GAAO,yBAExD,GACA,gBAAAF,OAAA,cAACE,OAAA,MAAM,gBAAiB,CAC1B;AAAA,IAEA,gBAAAF,OAAA,cAACC,MAAA,EAAI,eAAc,YACjB,gBAAAD,OAAA,cAACE,OAAA,EAAK,MAAI,QAAC,mBAAiB,GAC5B,gBAAAF,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,EAAE,OAAO,yBAAyB,OAAO,OAAO;AAAA,UAChD,EAAE,OAAO,oCAAoC,OAAO,QAAQ;AAAA,QAC9D;AAAA,QACA,UAAU;AAAA;AAAA,IACZ,CACF;AAAA,EACF,GACC,UAAU,UACT,gBAAAA,OAAA,cAACE,OAAA,EAAK,UAAQ,QAAC,UAAO,UAAU,SAAQ,gBAAc,IAEtD,gBAAAF,OAAA,cAAC,aAAQ,CAEb;AAEJ;AAEO,SAAS,wBAAwB;AAAA,EACtC;AACF,GAA6C;AAC3C,SAAO,IAAI,QAAQ,aAAW;AAC5B,IAAAG;AAAA,MACE,gBAAAH,OAAA;AAAA,QAAC;AAAA;AAAA,UACC,UAAU,MAAM;AAAA,UAChB,kBAAkB,MAAM;AAAA,UACxB,QAAQ,MAAM;AACZ,oBAAQ;AACR,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAAA,UACA,SAAS,MAAM;AACb;AAAA,cACE,MAAM;AAAA,cACN,KAAK,UAAU,MAAM,eAAe,MAAM,CAAC;AAAA,YAC7C;AACA,oBAAQ;AACR,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAAA;AAAA,MACF;AAAA,MACA,EAAE,aAAa,MAAM;AAAA,IACvB;AAAA,EACF,CAAC;AACH;;;ApBtBA,SAAS,SACP,UACG,MACS;AACZ,QAAM,SAAS,EAAE,GAAG,MAAM;AAC1B,aAAW,OAAO,MAAM;AACtB,WAAQ,OAAe,GAAU;AAAA,EACnC;AACA,SAAO;AACT;AAEA,eAAsB,SAAS;AAC7B,kBAAgB;AAEhB,MAAI;AACF,kBAAc;AAEd,mBAAe,MAAM;AACnB,UAAI;AACF,yCAAiC;AAAA,MACnC,SAAS,aAAa;AACpB,iBAAS,0CAA0C,WAAW,EAAE;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH,SAAS,OAAgB;AACvB,QAAI,iBAAiB,kBAAkB;AACrC,YAAM,wBAAwB,EAAE,MAAM,CAAC;AACvC;AAAA,IACF;AAAA,EACF;AAGA,MAAI,cAAc;AAClB,MAAI,gBAA2C;AAAA,IAC7C,aAAa;AAAA,IAEb,YAAY;AAAA,IAAC;AAAA,EACf;AAEA,QAAM,uBACJ,QAAQ,KAAK;AAAA,IACX,CAAC,KAAK,KAAK,QACT,QAAQ,oBAAoB,IAAI,MAAM,CAAC,MAAM;AAAA,EACjD,KAAK,QAAQ,KAAK,KAAK,SAAO,IAAI,WAAW,4BAA4B,CAAC;AAE5E,MACE,CAAC,QAAQ,MAAM,SACf,CAAC,QAAQ,IAAI,MACb,CAAC,QAAQ,KAAK,SAAS,KAAK,KAC5B,CAAC,sBACD;AACA,kBAAc,MAAM,MAAM;AAC1B,QAAI,QAAQ,aAAa,SAAS;AAChC,UAAI;AACF,cAAM,QAAQ,SAAS,YAAY,GAAG;AACtC,wBAAgB,EAAE,GAAG,eAAe,OAAO,IAAI,WAAW,KAAK,EAAE;AAAA,MACnE,SAAS,KAAK;AACZ,iBAAS,4BAA4B,GAAG,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,aAAa,aAAa;AAC5C;AAEA,eAAe,UACb,cACA,eACkB;AAClB,QAAM,UAAU,IAAI,QAAQ;AAE5B,QAAM,+BAA+B;AAAA,IACnC,GAAG;AAAA,IACH,aAAa;AAAA,EACf;AAEA,UACG,KAAK,eAAe,EACpB;AAAA,IACC,GAAG,YAAY;AAAA,EACjB,EACC,SAAS,YAAY,eAAe,MAAM,EAC1C,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC,OAAO,0BAA0B,6BAA6B,MAAM,IAAI,EACxE;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,4BAA4B,sCAAsC,EACzE;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,OAAO,aAAmC;AACzC,YAAM,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC;AACnD,YAAM,OAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAClD,aAAO,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,OAAO;AAAA,IAC1C;AAAA,IACA,CAAC;AAAA,EACH,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,OACE,QACA;AAAA,MACE,KAAAI;AAAA,MACA,OAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAAC;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF,MACG;AACH,UAAI;AACF,wCAAgC,cAAc;AAAA,MAChD,SAAS,KAAK;AACZ,gBAAQ,OAAO;AAAA,UACb,uCAAuC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA;AAAA,QACzF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,+BAAyB,MAAM;AAC/B,sBAAgB;AAChB,4BAAsB;AAEtB,YAAM,MAAMF,MAAK,IAAI;AACrB,YAAM,iBAAiB,MAAM,KAAK;AAElC,uBAAiB;AAEjB;AACE,cAAM,YACJ,MAAM,QAAQ,SAAS,KAAK,UAAU,SAAS,IAAI,YAAY,CAAC;AAClE,cAAM,EAAE,oCAAoC,IAC1C,MAAM,OAAO,gCAA4B;AAC3C,cAAM,YAAY,oCAAoC;AAEtD,cAAM,MAAM,CAAC,GAAG,WAAW,GAAG,SAAS,EAAE,OAAO,OAAO;AACvD,cAAM,UAAU,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC;AAEvC,YAAI,QAAQ,SAAS,GAAG;AACtB,gBAAM,EAAE,wBAAwB,IAC9B,MAAM,OAAO,6BAAyB;AACxC,gBAAM,EAAE,OAAO,IAAI,MAAM,wBAAwB;AAAA,YAC/C,YAAY;AAAA,UACd,CAAC;AACD,qBAAW,OAAO,QAAQ;AACxB,oBAAQ,KAAK,GAAG;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,YAAM,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,GAAG,EAAE,YAAY,CAAC,IAAI,MAAM,QAAQ,IAAI;AAAA,QACjE,OAAO,mBAAU;AAAA,QACjB,OAAO,qBAAQ;AAAA,QACf,OAAO,wBAAW;AAAA,MACpB,CAAC;AACD,YAAM,WAAW,MAAM,YAAY;AAEnC,YAAM,oBACH,MAAM,QAAQ,SAAS,KAAK,UAAU,SAAS,KAChD,oBAAoB,OAChB,0BAA0B;AAAA,QACxB,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC;AAAA,QACnD,iBAAiB,oBAAoB;AAAA,QACrC,YAAYA;AAAA,MACd,CAAC,IACD,WAAW;AAEjB,YAAM,CAAC,UAAU,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC/C;AAAA,UACE,mBAAmB,wBAAwB,EAAE;AAAA,QAC/C;AAAA,QACA;AAAA,MACF,CAAC;AACD,YAAM,QACJ,yBAAyB,OACrB,SAAS,OAAO,OAAK,EAAE,SAAS,cAAc,IAC9C;AACN,YAAM,cAAc,CAAC,QAAQ,YAAY,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAEpE,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,MAAM,OAAO,oCAAsC;AACvD,YAAM,EAAE,uBAAuB,+BAA+B,IAC5D,MAAM,OAAO,sCAAwC;AACvD,YAAM,EAAE,OAAO,IAAI,MAAM,OAAO,oBAAkB;AAClD,YAAM,EAAE,uBAAuB,sBAAsB,IACnD,MAAM,OAAO,kCAAoC;AACnD,YAAM,EAAE,WAAW,IAAI,MAAM,OAAO,QAAQ;AAE5C,YAAM,gBAAgB,QAAQ,oBAAoB;AAClD,YAAM,cAAc,WAAW;AAC/B,YAAM,YAAY,QAAQ,WAAW;AAErC,UAAI,aAAa,CAAC,OAAO,OAAO,SAAS,CAAC,GAAG;AAC3C,gBAAQ,MAAM,0CAA0C;AACxD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI,cAAc,iBAAiB,gBAAgB,CAAC,WAAW;AAC7D,gBAAQ;AAAA,UACN;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI;AACJ,UAAI,uBAAsC;AAC1C,UAAI,sBAAsB;AAE1B,UAAI,eAAe;AACjB,cAAM,SAAS,iCAAiCA,IAAG;AACnD,YAAI,CAAC,QAAQ;AACX,kBAAQ,MAAM,mCAAmC;AACjD,kBAAQ,KAAK,CAAC;AAAA,QAChB;AACA,0BAAkB,6BAA6B;AAAA,UAC7C,KAAAA;AAAA,UACA,WAAW;AAAA,QACb,CAAC;AACD,+BAAuB;AAAA,MACzB,WAAW,aAAa;AACtB,YAAI,WAAW,MAAM;AACnB,gCAAsB;AAAA,QACxB,OAAO;AACL,gBAAM,aAAa,OAAO,MAAM;AAChC,gBAAM,WAAW,+BAA+B,EAAE,KAAAA,MAAK,WAAW,CAAC;AACnE,cAAI,SAAS,SAAS,MAAM;AAC1B,8BAAkB,6BAA6B;AAAA,cAC7C,KAAAA;AAAA,cACA,WAAW,SAAS;AAAA,YACtB,CAAC;AACD,mCAAuB,SAAS;AAAA,UAClC,WAAW,SAAS,SAAS,uBAAuB;AAClD,oBAAQ;AAAA,cACN,SAAS,WACL,yDAAyD,SAAS,QAAQ,KAC1E;AAAA,YACN;AACA,oBAAQ,KAAK,CAAC;AAAA,UAChB,WAAW,SAAS,SAAS,aAAa;AACxC,oBAAQ;AAAA,cACN,mCAAmC,UAAU,MAAM,SAAS,mBAAmB;AAAA,gBAC7E;AAAA,cACF,CAAC;AAAA,YACH;AACA,oBAAQ,KAAK,CAAC;AAAA,UAChB,OAAO;AACL,oBAAQ;AAAA,cACN,kDAAkD,UAAU;AAAA,YAC9D;AACA,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,uBAAuB,OAAO;AAChC,gBAAQ;AAAA,UACN;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI,CAAC,qBAAqB;AACxB,cAAM,sBAAsB,MAAM;AAChC,cAAI,sBAAsB;AACxB,gBAAI,UAAW,QAAO,YAAY,OAAO,SAAS,IAAI,WAAW;AACjE,mBAAO;AAAA,UACT;AACA,cAAI,UAAW,QAAO,OAAO,SAAS;AACtC,iBAAO,sBAAsB;AAAA,QAC/B,GAAG;AAEH,8BAAsB,kBAAkB;AAAA,MAC1C;AAEA,UAAI,OAAO;AACT,cAAM,aAAa;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,UACA,KAAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAAE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AACD;AAAA,MACF,OAAO;AACL,YAAI,uBAAuB,OAAO;AAChC,kBAAQ;AAAA,YACN;AAAA,UACF;AACA,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAM,aAAa,OAAO,YAAY;AACpC,cAAI;AACF,kBAAM;AAAA,cACJ,EAAE,kBAAkB,4BAA4B;AAAA,cAChD;AAAA,YACF,IAAI,MAAM,QAAQ,IAAI;AAAA,cACpB,OAAO,2BAA4B;AAAA,cACnC,OAAO,QAAQ;AAAA,YACjB,CAAC;AACD,kBAAM,SAAe,WAAmB,WAAW;AACnD,kBAAM,KAAK,QAAQ;AACnB,gBAAI,OAAO,OAAO;AAChB,qBAAO;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU;AAAA,cACZ;AAEF,kBAAM,SAAS,MAAM,iBAAiB;AACtC,gBAAI,UAAU,GAAG,QAAQ,MAAM,OAAO,GAAG;AACvC,oBAAM,OAAO,MAAM,4BAA4B;AAC/C,qBAAO,EAAE,SAAS,QAAkB,UAAU,KAAiB;AAAA,YACjE;AAAA,UACF,QAAQ;AAAA,UAAC;AACT,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAEH,YAAI,qBAAqB;AACvB,gBAAM,WAAW,sBAAsB,EAAE,KAAAF,KAAI,CAAC;AAC9C,cAAI,SAAS,WAAW,GAAG;AACzB,oBAAQ,MAAM,iCAAiC;AAC/C,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAEA,gBAAMG,WAAoC,CAAC;AAC1C,WAAC,YAAY;AACZ,kBAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,kBAAM,EAAE,QAAQ,IAAIA;AAAA,cAClB,gBAAAC,QAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,KAAKL;AAAA,kBACL,SAASG;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,UAAU;AAAA,kBACV,OAAO,QAAQF,MAAK;AAAA,kBACpB,sBAAsB,yBAAyB;AAAA,kBAC/C;AAAA,kBACA,eAAe;AAAA,kBACf,aAAa;AAAA,kBACb,eAAe,YAAY,OAAO,SAAS,IAAI;AAAA,kBAC/C,sBAAsB,WAAW;AAAA,kBACjC,uBAAuB,WAAW;AAAA;AAAA,cACpC;AAAA,cACA;AAAA,YACF;AACA,YAAAE,SAAQ,UAAU;AAAA,UACpB,GAAG;AACH;AAAA,QACF;AAEA,cAAM,iBAAiB,MAAM,6BAA6B;AAE1D;AACE,gBAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,gBAAM,EAAE,KAAK,IAAI,MAAM,OAAO,oBAAe;AAC7C,UAAAA;AAAA,YACE,gBAAAC,QAAA;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,OAAO,QAAQJ,MAAK;AAAA,gBACpB,sBAAsB,yBAAyB;AAAA,gBAC/C,eAAe;AAAA,gBACf,gBAAgB,eAAe,oBAAI,KAAK,CAAC;AAAA,gBACzC,uBAAuB;AAAA,gBACvB;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,sBAAsB,WAAW;AAAA,gBACjC,uBAAuB,WAAW;AAAA,gBAClC;AAAA;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,EACC,QAAQ,MAAM,SAAS,eAAe;AAGzC,QAAM,SAAS,QACZ,QAAQ,QAAQ,EAChB;AAAA,IACC,6BAA6B,eAAe;AAAA,EAC9C;AAEF,SACG,QAAQ,WAAW,EACnB,YAAY,oBAAoB,EAChC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,gBAAgB,mBAAmB,EAC1C,OAAO,OAAO,KAAK,EAAE,KAAAD,MAAK,OAAO,MAAM;AACtC,UAAM,MAAMA,MAAK,KAAK;AACtB,YAAQ,IAAI,gBAAgB,KAAK,UAAU,KAAK,CAAC;AACjD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,SACG,QAAQ,mBAAmB,EAC3B,YAAY,oBAAoB,EAChC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,gBAAgB,mBAAmB,EAC1C,OAAO,OAAO,KAAK,OAAO,EAAE,KAAAA,MAAK,OAAO,MAAM;AAC7C,UAAM,MAAMA,MAAK,KAAK;AACtB,oBAAgB,KAAK,OAAO,UAAU,KAAK;AAC3C,YAAQ,IAAI,OAAO,GAAG,OAAO,KAAK,EAAE;AACpC,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,SACG,QAAQ,cAAc,EACtB,YAAY,uBAAuB,EACnC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,gBAAgB,mBAAmB,EAC1C,OAAO,OAAO,KAAK,EAAE,KAAAA,MAAK,OAAO,MAAM;AACtC,UAAM,MAAMA,MAAK,KAAK;AACtB,uBAAmB,KAAK,UAAU,KAAK;AACvC,YAAQ,IAAI,WAAW,GAAG,EAAE;AAC5B,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,SACG,QAAQ,MAAM,EACd,YAAY,wBAAwB,EACpC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,gBAAgB,qBAAqB,KAAK,EACjD,OAAO,OAAO,EAAE,KAAAA,MAAK,OAAO,MAAM;AACjC,UAAM,MAAMA,MAAK,KAAK;AACtB,YAAQ;AAAA,MACN,KAAK;AAAA,QACH,SAAS,iBAAiB,IAAI,IAAI,iBAAiB,KAAK;AAAA,QACxD;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAGH,QAAM,YAAY,QACf,QAAQ,QAAQ,EAChB,YAAY,kDAAkD;AAEjE,YACG,QAAQ,QAAQ,EAChB;AAAA,IACC;AAAA,EACF,EACC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,uBAAuB,sCAAsC,EACpE,OAAO,OAAO,EAAE,KAAAA,MAAK,OAAO,MAAM;AACjC,QAAI;AACF,YAAM,MAAMA,MAAK,KAAK;AACtB,YAAM,WAAW,gCAAgC,gBAAgB,CAAC;AAClE,UAAI,QAAQ;AACV,QAAAM,eAAc,QAAQ,UAAU,OAAO;AACvC,gBAAQ,IAAI,8BAA8B,MAAM,EAAE;AAAA,MACpD,OAAO;AACL,gBAAQ,IAAI,QAAQ;AAAA,MACtB;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,eAAe,EACvB,YAAY,8CAA8C,EAC1D,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,aAAa,oDAAoD,EACxE,OAAO,OAAO,MAAc,EAAE,KAAAN,MAAK,QAAQ,MAAM;AAChD,QAAI;AACF,YAAM,MAAMA,MAAK,KAAK;AAEtB,YAAM,WAAW,aAAa,MAAM,OAAO;AAC3C,YAAM,EAAE,YAAY,SAAS,IAAI;AAAA,QAC/B,gBAAgB;AAAA,QAChB;AAAA,QACA,EAAE,SAAS,CAAC,CAAC,QAAQ;AAAA,MACvB;AACA,uBAAiB,UAAU;AAE3B,YAAM,OAAO,qBAAc,EAAE,KAAK,CAAC,EAAE,mBAAmB,MAAM;AAC5D,2BAAmB;AAAA,MACrB,CAAC;AAED,UAAI,SAAS,SAAS,GAAG;AACvB,gBAAQ,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,MACnC;AACA,cAAQ,IAAI,mCAAmC,IAAI,EAAE;AACrD,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,MAAM,EACd,YAAY,6CAA6C,EACzD,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,UAAU,gBAAgB,EACjC,OAAO,OAAO,YAAiB;AAC9B,QAAI;AACF,YAAM,aAAa,OAAO,SAAS,QAAQ,WAAW,QAAQ,MAAM,IAAI;AACxE,YAAM,SAAS,SAAS,SAAS;AACjC,YAAM,MAAM,YAAY,KAAK;AAC7B,YAAM,EAAE,oBAAoB,iBAAAO,iBAAgB,IAAI,MAAM,OAAO,qBAAc;AAC3E,yBAAmB;AACnB,YAAM,UAAUA,iBAAgB;AAChC,YAAMC,UAAS,gBAAgB;AAE/B,YAAM,WAAY,CAAC,QAAQ,QAAQ,WAAW,OAAO,EAAY;AAAA,QAC/D,aAAW;AACT,gBAAM,YAAYA,QAAO,gBAAgB,OAAO,KAAK;AACrD,gBAAM,WAAW,QAAQ,qBAAqB,OAAO;AACrD,gBAAM,UAAU,SAAS,UAAU,SAAS,UAAU;AACtD,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,UAAU,UACN;AAAA,cACE,MAAM,QAAQ;AAAA,cACd,UAAU,QAAQ;AAAA,cAClB,WAAW,QAAQ;AAAA,cACnB,UAAU,QAAQ;AAAA,YACpB,IACA;AAAA,YACJ,OAAO,SAAS,UAAU,OAAO,SAAS,SAAS;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAEA,YAAM,YAAYA,QAAO,iBAAiB,CAAC,GAAG,IAAI,QAAM;AAAA,QACtD,MAAM,EAAE;AAAA,QACR,UAAU,EAAE;AAAA,QACZ,WAAW,EAAE;AAAA,QACb,SAAS,EAAE,WAAW;AAAA,QACtB,WAAW,EAAE;AAAA,QACb,eAAe,EAAE;AAAA,QACjB,iBAAiB,EAAE,mBAAmB;AAAA,QACtC,UAAU,EAAE;AAAA,QACZ,WAAW,EAAE;AAAA,QACb,UAAU,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW;AAAA,QACxD,QAAQ,EAAE,UAAU;AAAA,QACpB,kBAAkB,EAAE,oBAAoB;AAAA,QACxC,gBAAgB,OAAO,EAAE,mBAAmB,WAAW,EAAE,iBAAiB;AAAA,QAC1E,WAAW,QAAQ,EAAE,MAAM;AAAA,MAC7B,EAAE;AAEF,UAAI,QAAQ;AACV,gBAAQ,IAAI,KAAK,UAAU,EAAE,UAAU,SAAS,GAAG,MAAM,CAAC,CAAC;AAC3D,gBAAQ,WAAW;AACnB;AAAA,MACF;AAEA,cAAQ,IAAI,mBAAmB;AAC/B,iBAAW,OAAO,UAAU;AAC1B,cAAM,gBAAgB,IAAI,WACtB,GAAG,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,QAAQ,IAAI,IAAI,SAAS,SAAS,MACxE;AACJ,cAAM,aAAa,IAAI,YAAY,OAAO,IAAI,SAAS,KAAK;AAC5D,cAAM,MAAM,IAAI,QAAQ,KAAK,IAAI,KAAK,MAAM;AAC5C,gBAAQ,IAAI,OAAO,IAAI,OAAO,GAAG,UAAU,KAAK,aAAa,GAAG,GAAG,EAAE;AAAA,MACvE;AAEA,YAAM,SAAS,SAAS,OAAO,OAAK,EAAE,QAAQ;AAC9C,cAAQ,IAAI;AAAA,kBAAqB,OAAO,MAAM,IAAI,SAAS,MAAM;AAAA,CAAa;AAC9E,iBAAW,KAAK,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,GAAG;AACrE,cAAM,SAAS,EAAE,WAAW,WAAW;AACvC,gBAAQ,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,GAAG;AACvC,gBAAQ,IAAI,gBAAgB,EAAE,QAAQ,cAAc,EAAE,SAAS,EAAE;AACjE,YAAI,EAAE,QAAS,SAAQ,IAAI,eAAe,EAAE,OAAO,EAAE;AAAA,MACvD;AAEA,cAAQ,WAAW;AACnB;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,YAAY,QACf,QAAQ,QAAQ,EAChB,YAAY,4CAA4C;AAE3D,YACG,QAAQ,qBAAqB,EAC7B,YAAY,qEAAqE,EACjF,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,UAAU,gBAAgB,EACjC,OAAO,oBAAoB,sDAAsD,EACjF;AAAA,IACC,OAAO,OAA6B,YAAiB;AACnD,UAAI;AACF,cAAM,aAAa,OAAO,SAAS,QAAQ,WAAW,QAAQ,MAAM,IAAI;AACxE,cAAM,MAAM,YAAY,KAAK;AAC7B,cAAM,EAAE,uBAAuB,IAAI,MAAM,OAAO,8BAAkB;AAClE,cAAM,SAAS,MAAM,uBAAuB;AAAA,UAC1C,KAAK;AAAA,UACL,OAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,UACvC,YAAY,QAAQ,eAAe;AAAA,QACrC,CAAC;AAED,YAAI,QAAQ,MAAM;AAChB,kBAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C,kBAAQ,WAAW,OAAO,KAAK,IAAI;AACnC;AAAA,QACF;AAEA,gBAAQ;AAAA,UACN,aAAa,OAAO,QAAQ,MAAM,mBAAmB,OAAO,UAAU,cAAc,OAAO,YAAY;AAAA;AAAA,QACzG;AAEA,mBAAW,KAAK,OAAO,SAAS;AAC9B,gBAAM,MAAM,EAAE;AACd,gBAAM,QAAQ,EAAE,YAAY,GAAG,EAAE,SAAS,KAAK;AAC/C,kBAAQ,IAAI,GAAG,KAAK,WAAM,GAAG,EAAE;AAC/B,cAAI,EAAE,OAAO;AACX,kBAAM,aAAa,EAAE,kBAAkB,iBAAiB,EAAE,eAAe,MAAM;AAC/E,oBAAQ,IAAI,YAAY,EAAE,KAAK,GAAG,UAAU,EAAE;AAAA,UAChD;AACA,cAAI,EAAE,OAAO,WAAW,GAAG;AACzB,oBAAQ,IAAI,MAAM;AAAA,UACpB,OAAO;AACL,uBAAW,SAAS,EAAE,QAAQ;AAC5B,sBAAQ,IAAI,OAAO,MAAM,KAAK,KAAK,MAAM,OAAO,EAAE;AAAA,YACpD;AAAA,UACF;AACA,kBAAQ,IAAI,EAAE;AAAA,QAChB;AAEA,gBAAQ,WAAW,OAAO,KAAK,IAAI;AACnC;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAO,MAAgB,OAAO;AACtC,gBAAQ,WAAW;AACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGF,QAAM,8BAA8B,CAACC,oBAA4B;AAC/D,IAAAA,gBACG,QAAQ,cAAc,EACtB,YAAY,oDAAoD,EAChE,OAAO,OAAO,WAAmB;AAChC,UAAI;AACF,cAAM,EAAE,eAAe,IAAI,MAAM,OAAO,gCAA4B;AACpE,gBAAQ,IAAI,uBAAuB;AACnC,cAAM,EAAE,KAAK,IAAI,MAAM,eAAe,MAAM;AAC5C,gBAAQ,IAAI,mCAAmC,IAAI,EAAE;AACrD,gBAAQ,KAAK,CAAC;AAAA,MAChB,SAAS,OAAO;AACd,gBAAQ,MAAO,MAAgB,OAAO;AACtC,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,CAAC;AAEH,IAAAA,gBACG,QAAQ,MAAM,EACd,YAAY,kCAAkC,EAC9C,OAAO,UAAU,gBAAgB,EACjC,OAAO,OAAO,YAAgC;AAC7C,UAAI;AACF,cAAM,EAAE,iBAAiB,IACvB,MAAM,OAAO,gCAA4B;AAC3C,cAAM,eAAe,iBAAiB;AAEtC,YAAI,QAAQ,MAAM;AAChB,kBAAQ,IAAI,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AACjD,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAM,QAAQ,OAAO,KAAK,YAAY,EAAE,KAAK;AAC7C,YAAI,MAAM,WAAW,GAAG;AACtB,kBAAQ,IAAI,4BAA4B;AACxC,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,gBAAQ,IAAI,4BAA4B;AACxC,mBAAW,QAAQ,OAAO;AACxB,gBAAM,QAAQ,aAAa,IAAI;AAC/B,kBAAQ,IAAI,OAAO,IAAI,EAAE;AACzB,gBAAM,MAAM,OAAO;AACnB,cAAI,KAAK,WAAW,UAAU;AAC5B,oBAAQ,IAAI,uBAAuB,IAAI,IAAI,GAAG;AAAA,UAChD,WAAW,KAAK,WAAW,OAAO;AAChC,oBAAQ,IAAI,oBAAoB,IAAI,GAAG,GAAG;AAAA,UAC5C,WAAW,KAAK,WAAW,OAAO;AAChC,oBAAQ,IAAI,oBAAoB,IAAI,GAAG,GAAG;AAAA,UAC5C,WAAW,KAAK,WAAW,aAAa;AACtC,oBAAQ,IAAI,0BAA0B,IAAI,IAAI,GAAG;AAAA,UACnD,WAAW,KAAK,WAAW,QAAQ;AACjC,oBAAQ,IAAI,qBAAqB,IAAI,IAAI,GAAG;AAAA,UAC9C,WAAW,KAAK,WAAW,OAAO;AAChC,oBAAQ,IAAI,oBAAoB,IAAI,OAAO,GAAG;AAAA,UAChD;AACA,kBAAQ,IAAI,EAAE;AAAA,QAChB;AAEA,gBAAQ,KAAK,CAAC;AAAA,MAChB,SAAS,OAAO;AACd,gBAAQ,MAAO,MAAgB,OAAO;AACtC,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,CAAC;AAEH,IAAAA,gBACG,QAAQ,eAAe,EACvB,MAAM,IAAI,EACV,YAAY,iCAAiC,EAC7C,OAAO,OAAO,SAAiB;AAC9B,UAAI;AACF,cAAM,EAAE,kBAAkB,IACxB,MAAM,OAAO,gCAA4B;AAC3C,0BAAkB,IAAI;AACtB,gBAAQ,IAAI,qCAAqC,IAAI,EAAE;AACvD,gBAAQ,KAAK,CAAC;AAAA,MAChB,SAAS,OAAO;AACd,gBAAQ,MAAO,MAAgB,OAAO;AACtC,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,CAAC;AAEH,IAAAA,gBACG,QAAQ,eAAe,EACvB;AAAA,MACC;AAAA,IACF,EACC,OAAO,OAAO,MAA0B,aAAkB;AACzD,UAAI;AACF,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI,MAAM,OAAO,gCAA4B;AAE7C,cAAM,UAAU,OAAO,SAAS,WAAW,KAAK,KAAK,IAAI;AACzD,YAAI,SAAS;AACX,kBAAQ,IAAI,yBAAyB,OAAO,KAAK;AACjD,gBAAM,wBAAwB,OAAO;AACrC,kBAAQ,IAAI,qCAAqC,OAAO,EAAE;AAC1D,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAM,eAAe,iBAAiB;AACtC,cAAM,QAAQ,OAAO,KAAK,YAAY;AACtC,YAAI,MAAM,WAAW,GAAG;AACtB,kBAAQ,IAAI,4BAA4B;AACxC,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,gBAAQ,IAAI,YAAY,MAAM,MAAM,oBAAoB;AACxD,cAAM,4BAA4B,aAAW;AAC3C,kBAAQ,IAAI,OAAO;AAAA,QACrB,CAAC;AACD,gBAAQ,IAAI,wBAAwB,MAAM,MAAM,iBAAiB;AACjE,gBAAQ,KAAK,CAAC;AAAA,MAChB,SAAS,OAAO;AACd,gBAAQ,MAAO,MAAgB,OAAO;AACtC,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACL;AAEA,QAAM,YAAY,QACf,QAAQ,QAAQ,EAChB,YAAY,iCAAiC;AAEhD,QAAM,uBAAuB,UAC1B,QAAQ,aAAa,EACrB;AAAA,IACC;AAAA,EACF;AAEF,8BAA4B,oBAAoB;AAEhD,QAAM,gBAAgB,CAAC,QAAQ,WAAW,OAAO;AAGjD,QAAM,mBAAmB,CAAC,UAAuC;AAC/D,UAAM,aAAa,OAAO,SAAS,MAAM;AACzC,WAAO,cAAc,SAAS,UAAU,IAAI,aAAa;AAAA,EAC3D;AAEA,YACG,QAAQ,kBAAkB,EAC1B,MAAM,GAAG,EACT;AAAA,IACC;AAAA,EACF,EACC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,WAAW,sCAAsC,MAAM,IAAI,EAClE,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,QAAQ,iBAAiB,QAAQ,KAAK;AAC5C,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,kBAAkB,OAAO,QAAQ,KAAK,CAAC,qBAAqB,cAAc,KAAK,IAAI,CAAC;AAAA,QACtF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,gCAA4B;AAC3C,YAAM,SAAS,mBAAmB,QAAQ;AAAA,QACxC;AAAA,QACA,OAAO,QAAQ,UAAU;AAAA,MAC3B,CAAC;AAED,YAAM,YACJ,OAAO,gBAAgB,SAAS,IAC5B,WAAW,OAAO,gBAAgB,KAAK,IAAI,CAAC,KAC5C;AACN,cAAQ,IAAI,aAAa,OAAO,UAAU;AAAA,EAAK,SAAS,EAAE;AAC1D,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,oBAAoB,EAC5B,MAAM,QAAQ,EACd,MAAM,IAAI,EACV,YAAY,+BAA+B,EAC3C,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA,yBAAyB,cAAc,KAAK,IAAI,CAAC;AAAA,IACjD;AAAA,EACF,EACC,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,QAAQ,iBAAiB,QAAQ,KAAK;AAC5C,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,kBAAkB,OAAO,QAAQ,KAAK,CAAC,qBAAqB,cAAc,KAAK,IAAI,CAAC;AAAA,QACtF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,EAAE,QAAAA,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,qBAAqB,IAC3B,MAAM,OAAO,gCAA4B;AAC3C,YAAM,SAAS,qBAAqB,QAAQ,EAAE,MAAM,CAAC;AACrD,YAAM,YACJ,OAAO,cAAc,SAAS,IAC1B,WAAW,OAAO,cAAc,KAAK,IAAI,CAAC,KAC1C;AACN,cAAQ,IAAI,eAAe,OAAO,UAAU;AAAA,EAAK,SAAS,EAAE;AAC5D,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,MAAM,EACd,YAAY,wBAAwB,EACpC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA,oBAAoB,cAAc,KAAK,IAAI,CAAC;AAAA,IAC5C;AAAA,EACF,EACC,OAAO,UAAU,gBAAgB,EACjC,OAAO,OAAO,YAAiB;AAC9B,QAAI;AACF,YAAM,QAAQ,iBAAiB,QAAQ,KAAK;AAC5C,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,kBAAkB,OAAO,QAAQ,KAAK,CAAC,qBAAqB,cAAc,KAAK,IAAI,CAAC;AAAA,QACtF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,EAAE,QAAAA,SAAQ,QAAAC,QAAO,IAAI,MAAM,OAAO,qBAAc;AACtD,YAAMD,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,0BAA0B,IAChC,MAAM,OAAO,gCAA4B;AAC3C,YAAM,MAAM,0BAA0B;AACtC,YAAM,WAAW,OAAO;AAAA,QACtB,OAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,MAAM;AACzC,cAAK,QAAgB,UAAU,MAAO,QAAO;AAC7C,cAAI,UAAU,OAAQ,QAAO;AAC7B,iBAAQ,QAAgB,gBAAgBC,QAAO;AAAA,QACjD,CAAC;AAAA,MACH;AAEA,UAAI,QAAQ,MAAM;AAChB,gBAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,QAAQ,OAAO,KAAK,QAAQ,EAAE,KAAK;AACzC,UAAI,MAAM,WAAW,GAAG;AACtB,gBAAQ,IAAI,sBAAsB;AAClC,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,cAAQ,IAAI,4BAA4B,KAAK;AAAA,CAAM;AACnD,iBAAW,QAAQ,OAAO;AACxB,cAAM,SAAS,SAAS,IAAI;AAC5B,cAAM,UAAU,QAAQ,cAAc,QAAQ,aAAa;AAC3D,gBAAQ,IAAI,OAAO,IAAI,KAAK,OAAO,GAAG;AAAA,MACxC;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,iBAAiB,EACzB,YAAY,0BAA0B,EACtC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA,uBAAuB,cAAc,KAAK,IAAI,CAAC;AAAA,IAC/C;AAAA,EACF,EACC,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,QAAQ,iBAAiB,QAAQ,KAAK;AAC5C,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,kBAAkB,OAAO,QAAQ,KAAK,CAAC,qBAAqB,cAAc,KAAK,IAAI,CAAC;AAAA,QACtF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,EAAE,QAAAD,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,gCAA4B;AACvE,YAAM,SAAS,kBAAkB,QAAQ,EAAE,MAAM,CAAC;AAClD,cAAQ,IAAI,WAAW,OAAO,UAAU,EAAE;AAC1C,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,kBAAkB,EAC1B,YAAY,2BAA2B,EACvC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE;AAAA,IACC;AAAA,IACA,uBAAuB,cAAc,KAAK,IAAI,CAAC;AAAA,IAC/C;AAAA,EACF,EACC,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,QAAQ,iBAAiB,QAAQ,KAAK;AAC5C,UAAI,CAAC,OAAO;AACV,gBAAQ;AAAA,UACN,kBAAkB,OAAO,QAAQ,KAAK,CAAC,qBAAqB,cAAc,KAAK,IAAI,CAAC;AAAA,QACtF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,EAAE,QAAAA,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,gCAA4B;AAC3C,YAAM,SAAS,mBAAmB,QAAQ,EAAE,MAAM,CAAC;AACnD,cAAQ,IAAI,YAAY,OAAO,UAAU,EAAE;AAC3C,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,iBAAiB,EACzB,YAAY,2CAA2C,EACvD,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,MAAc,YAAiB;AAC5C,QAAI;AACF,YAAM,EAAE,QAAAA,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,wBAAwB,gCAAgC,IAC9D,MAAM,OAAO,gCAA4B;AAE3C,YAAM,SAAS,gCAAgC,IAAI;AACnD,cAAQ;AAAA,QACN,cAAc,OAAO,QAAQ,cAAc,OAAO,QAAQ;AAAA;AAAA,MAC5D;AACA,cAAQ,IAAI,uBAAuB,MAAM,CAAC;AAC1C,cAAQ,KAAK,OAAO,UAAU,IAAI,CAAC;AAAA,IACrC,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,uCACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAGH,QAAM,YAAY,QACf,QAAQ,QAAQ,EAChB,YAAY,sCAAsC;AAErD,QAAM,iBAAiB,UACpB,QAAQ,aAAa,EACrB;AAAA,IACC;AAAA,EACF;AAEF,8BAA4B,cAAc;AAE1C,YACG,QAAQ,kBAAkB,EAC1B,YAAY,sDAAsD,EAClE,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,aAAa,yCAAyC,MAAM,IAAI,EACvE,OAAO,WAAW,sCAAsC,MAAM,IAAI,EAClE,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,EAAE,QAAAA,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,gCAA4B;AAC3C,YAAM,SAAS,mBAAmB,QAAQ;AAAA,QACxC,SAAS,QAAQ,YAAY;AAAA,QAC7B,OAAO,QAAQ,UAAU;AAAA,MAC3B,CAAC;AACD,YAAM,YACJ,OAAO,gBAAgB,SAAS,IAC5B,WAAW,OAAO,gBAAgB,KAAK,IAAI,CAAC,KAC5C;AACN,cAAQ,IAAI,aAAa,MAAM;AAAA,EAAK,SAAS,EAAE;AAC/C,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,oBAAoB,EAC5B,YAAY,wDAAwD,EACpE,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,aAAa,2CAA2C,MAAM,IAAI,EACzE,OAAO,OAAO,QAAgB,YAAiB;AAC9C,QAAI;AACF,YAAM,EAAE,QAAAA,QAAO,IAAI,MAAM,OAAO,qBAAc;AAC9C,YAAMA,QAAO,QAAQ,OAAO,IAAI,CAAC;AAEjC,YAAM,EAAE,qBAAqB,IAC3B,MAAM,OAAO,gCAA4B;AAC3C,YAAM,SAAS,qBAAqB,QAAQ;AAAA,QAC1C,SAAS,QAAQ,YAAY;AAAA,MAC/B,CAAC;AACD,YAAM,YACJ,OAAO,cAAc,SAAS,IAC1B,WAAW,OAAO,cAAc,KAAK,IAAI,CAAC,KAC1C;AACN,cAAQ,IAAI,eAAe,MAAM;AAAA,EAAK,SAAS,EAAE;AACjD,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,gBAAgB,EACxB,YAAY,8BAA8B,EAC1C,OAAO,YAAY;AAClB,QAAI;AACF,YAAM,EAAE,0BAA0B,IAChC,MAAM,OAAO,gCAA4B;AAC3C,cAAQ,IAAI,KAAK,UAAU,0BAA0B,GAAG,MAAM,CAAC,CAAC;AAChE,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAGH,QAAM,eAAe,QAClB,QAAQ,gBAAgB,EACxB,YAAY,uBAAuB;AAEtC,eACG,QAAQ,MAAM,EACd,YAAY,yBAAyB,EACrC,OAAO,YAAY;AAClB,UAAM,SAAS,wBAAwB,OAAO,CAAC;AAC/C,YAAQ,IAAI,MAAM;AAClB,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,eACG,QAAQ,eAAe,EACvB,YAAY,+CAA+C,EAC3D,OAAO,OAAO,SAAiB;AAC9B,UAAM,SAAS,yBAAyB,IAAI;AAC5C,YAAQ,IAAI,OAAO,OAAO;AAC1B,YAAQ,KAAK,OAAO,UAAU,IAAI,CAAC;AAAA,EACrC,CAAC;AAGH,QAAM,MAAM,QACT,QAAQ,KAAK,EACb,YAAY,kCAAkC;AAEjD,MACG,QAAQ,OAAO,EACf,YAAY,aAAa,YAAY,aAAa,EAClD,OAAO,YAAY;AAClB,UAAM,cAAe,QAAQ,KAAK,EAAuB,OAAO,IAAI;AAEpE,QAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,cAAQ,MAAM,oBAAoB,WAAW,iBAAiB;AAC9D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI;AACF,YAAM,MAAM,aAAa,KAAK;AAC9B,YAAM,eAAe,WAAW;AAAA,IAClC,SAAS,OAAO;AACd,cAAQ,MAAM,sCAAsC,KAAK;AACzD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,sBAAsB,EAC9B,YAAY,mBAAmB,EAC/B;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAM,KAAK,YAAY;AACpC,QAAI;AACF,YAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,YAAM,UAAU,gBAAgB,QAAQ,MAAM;AAE9C;AAAA,QACE;AAAA,QACA,EAAE,MAAM,OAAO,KAAK,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,EAAG;AAAA,QACpD,UAAU;AAAA,MACZ;AACA,cAAQ;AAAA,QACN,wBAAwB,IAAI,cAAc,GAAG,OAAO,UAAU,OAAO;AAAA,MACvE;AACA,UAAI,SAAS;AACX,gBAAQ,IAAI,YAAY,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,EAAE;AAAA,MAC5D;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,uBAAuB,EAC/B,YAAY,kCAAkC,EAC9C;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAM,KAAK,YAAY;AACpC,QAAI;AACF,YAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,YAAM,UAAU,gBAAgB,QAAQ,MAAM;AAC9C;AAAA,QACE;AAAA,QACA,EAAE,MAAM,QAAQ,KAAK,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,EAAG;AAAA,QACrD,UAAU;AAAA,MACZ;AACA,cAAQ;AAAA,QACN,yBAAyB,IAAI,cAAc,GAAG,OAAO,UAAU,OAAO;AAAA,MACxE;AACA,UAAI,SAAS;AACX,gBAAQ,IAAI,YAAY,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,EAAE;AAAA,MAC5D;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,qBAAqB,EAC7B,YAAY,4BAA4B,EACxC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAM,KAAK,YAAY;AACpC,QAAI;AACF,YAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,mBAAa,MAAM,EAAE,MAAM,MAAM,IAAI,GAAG,UAAU,KAAK;AACvD,cAAQ;AAAA,QACN,8BAA8B,IAAI,aAAa,GAAG,OAAO,UAAU,OAAO;AAAA,MAC5E;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,qCAAqC,EAC7C,YAAY,6DAA6D,EACzE;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAM,cAAc,MAAM,YAAY;AACnD,QAAI;AACF,UAAI,CAAC,MAAM;AACT,gBAAQ,IAAI,mDAAmD;AAC/D,cAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,UAAU;AACnD,cAAM,KAAK,gBAAgB;AAAA,UACzB,OAAO,QAAQ;AAAA,UACf,QAAQ,QAAQ;AAAA,QAClB,CAAC;AAED,cAAM,WAAW,CAAC,UAChB,IAAI,QAAgB,aAAW,GAAG,SAAS,OAAO,OAAO,CAAC;AAE5D,cAAM,aAAa,MAAM,SAAS,eAAe;AACjD,YAAI,CAAC,YAAY;AACf,kBAAQ,MAAM,gCAAgC;AAC9C,aAAG,MAAM;AACT,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAM,aAAa,MAAM;AAAA,UACvB;AAAA,QACF;AACA,cAAM,OACJ,cAAc,CAAC,SAAS,QAAQ,OAAO,IAAI,EAAE,SAAS,UAAU,IAC5D,aACA;AAEN,cAAM,SAAS,SAAS,UAAU,cAAc;AAChD,cAAM,oBAAoB,MAAM,SAAS,MAAM;AAC/C,YAAI,CAAC,mBAAmB;AACtB,kBAAQ;AAAA,YACN,UAAU,SAAS,UAAU,YAAY,KAAK;AAAA,UAChD;AACA,aAAG,MAAM;AACT,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,YAAI,aAAuB,CAAC;AAC5B,YAAI,YAAoC,CAAC;AAEzC,YAAI,SAAS,SAAS;AACpB,gBAAM,UAAU,MAAM;AAAA,YACpB;AAAA,UACF;AACA,uBAAa,UAAU,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,IAAI,CAAC;AAE7D,gBAAM,SAAS,MAAM;AAAA,YACnB;AAAA,UACF;AACA,cAAI,QAAQ;AACV,kBAAM,WAAW,OAAO,MAAM,GAAG,EAAE,IAAI,UAAQ,KAAK,KAAK,CAAC;AAC1D,wBAAY,aAAa,SAAS,IAAI,UAAQ,IAAI,CAAC;AAAA,UACrD;AAAA,QACF;AAEA,cAAM,WAAW,MAAM;AAAA,UACrB;AAAA,QACF;AACA,cAAM,YAAY,wBAAwB,QAAQ;AAClD,cAAM,cAAc,UAAU;AAE9B,WAAG,MAAM;AAET,YAAI,SAAS,QAAQ;AACnB;AAAA,YACE;AAAA,YACA,EAAE,MAAM,QAAQ,KAAK,kBAAkB;AAAA,YACvC;AAAA,UACF;AACA,kBAAQ;AAAA,YACN,yBAAyB,UAAU,aAAa,iBAAiB,OAAO,UAAU,OAAO;AAAA,UAC3F;AAAA,QACF,WAAW,SAAS,OAAO;AACzB;AAAA,YACE;AAAA,YACA,EAAE,MAAM,OAAO,KAAK,kBAAkB;AAAA,YACtC;AAAA,UACF;AACA,kBAAQ;AAAA,YACN,wBAAwB,UAAU,aAAa,iBAAiB,OAAO,UAAU,OAAO;AAAA,UAC1F;AAAA,QACF,WAAW,SAAS,MAAM;AACxB;AAAA,YACE;AAAA,YACA,EAAE,MAAM,MAAM,KAAK,kBAAkB;AAAA,YACrC;AAAA,UACF;AACA,kBAAQ;AAAA,YACN,8BAA8B,UAAU,aAAa,iBAAiB,OAAO,UAAU,OAAO;AAAA,UAChG;AAAA,QACF,OAAO;AACL;AAAA,YACE;AAAA,YACA;AAAA,cACE,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,cACN,KAAK;AAAA,YACP;AAAA,YACA;AAAA,UACF;AAEA,kBAAQ;AAAA,YACN,0BAA0B,UAAU,kBAAkB,iBAAiB,IAAI,WAAW,KAAK,GAAG,CAAC,OAAO,UAAU,OAAO;AAAA,UACzH;AAAA,QACF;AAAA,MACF,WAAW,QAAQ,cAAc;AAC/B,cAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,cAAM,gBAAgB,sBAAsB,QAAQ,SAAS;AAE7D,YAAI,cAAc,cAAc,SAAS;AACvC,cAAI,QAAQ,QAAQ,QAAQ;AAC1B,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,gBAAM,MAAM,aAAa,QAAQ,GAAG;AACpC,cAAI,CAAC,cAAc,YAAY,gBAAgB,YAAY,GAAG;AAC5D,oBAAQ;AAAA,cACN,aAAa,YAAY;AAAA,YAC3B;AACA,oBAAQ;AAAA,cACN,gDAAgD,eAAe,YAAY,IAAI,IAAI,YAAY;AAAA,YACjG;AACA,oBAAQ;AAAA,cACN,qDAAqD,eAAe,YAAY,IAAI,IAAI,YAAY;AAAA,YACtG;AAAA,UACF;AAEA;AAAA,YACE;AAAA,YACA,EAAE,MAAM,SAAS,SAAS,cAAc,MAAM,QAAQ,CAAC,GAAG,IAAI;AAAA,YAC9D,UAAU;AAAA,UACZ;AAEA,kBAAQ;AAAA,YACN,0BAA0B,IAAI,kBAAkB,YAAY,KAAK,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,UAAU,OAAO;AAAA,UAChH;AAAA,QACF,OAAO;AACL,cAAI,QAAQ,KAAK,QAAQ;AACvB,kBAAM,IAAI,MAAM,+CAA+C;AAAA,UACjE;AACA,cAAI,MAAM,QAAQ;AAChB,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,gBAAM,UAAU,gBAAgB,QAAQ,MAAM;AAC9C;AAAA,YACE;AAAA,YACA;AAAA,cACE,MAAM,cAAc;AAAA,cACpB,KAAK;AAAA,cACL,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,YAC/B;AAAA,YACA,UAAU;AAAA,UACZ;AAEA,gBAAM,OAAO,cAAc,UAAU,YAAY;AACjD,kBAAQ;AAAA,YACN,SAAS,IAAI,eAAe,IAAI,cAAc,YAAY,OAAO,UAAU,OAAO;AAAA,UACpF;AACA,cAAI,SAAS;AACX,oBAAQ,IAAI,YAAY,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,EAAE;AAAA,UAC5D;AAAA,QACF;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,UACN;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AACH,MACG,QAAQ,eAAe,EACvB,YAAY,sBAAsB,EAClC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAc,YAAgC;AAC3D,QAAI;AACF,UAAI,QAAQ,OAAO;AACjB,cAAM,YAAY,wBAAwB,QAAQ,KAAK;AACvD,wBAAgB,MAAM,UAAU,KAAK;AACrC,gBAAQ;AAAA,UACN,sBAAsB,IAAI,SAAS,UAAU,OAAO;AAAA,QACtD;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,UAGD,CAAC;AAEN,YAAM,gBAAgB,wBAAwB;AAC9C,UAAI,cAAc,aAAa,IAAI,GAAG;AACpC,gBAAQ,KAAK;AAAA,UACX,OAAO,kBAAkB,SAAS;AAAA,UAClC,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAEA,YAAM,eAAe,gBAAgB;AACrC,UAAI,aAAa,aAAa,IAAI,GAAG;AACnC,gBAAQ,KAAK,EAAE,OAAO,kBAAkB,QAAQ,GAAG,SAAS,OAAO,CAAC;AAAA,MACtE;AAEA,YAAM,yBAAyB,+BAA+B;AAC9D,UAAI,uBAAuB,QAAQ,IAAI,GAAG;AACxC,cAAM,SAAS,uBAAuB,QAAQ,IAAI;AAClD,YAAI,WAAW,aAAa;AAC1B,kBAAQ,KAAK;AAAA,YACX,OAAO,kBAAkB,SAAS;AAAA,YAClC,SAAS;AAAA,UACX,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,KAAK;AAAA,YACX,OAAO,kBAAkB,OAAO;AAAA,YAChC,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAEA,UAAI,QAAQ,WAAW,GAAG;AACxB,cAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,MAC1D;AAEA,UAAI,QAAQ,SAAS,GAAG;AACtB,gBAAQ;AAAA,UACN,eAAe,IAAI,gCAAgC,QAChD,IAAI,OAAK,EAAE,OAAO,EAClB,KAAK,IAAI,CAAC;AAAA,QACf;AACA,gBAAQ,MAAM,4CAA4C;AAC1D,mBAAWE,UAAS,SAAS;AAC3B,kBAAQ;AAAA,YACN,KAAK,eAAe,eAAe,IAAI,YAAYA,OAAM,OAAO;AAAA,UAClE;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,QAAQ,QAAQ,CAAC;AACvB,sBAAgB,MAAM,MAAM,KAAK;AACjC,cAAQ,IAAI,sBAAsB,IAAI,SAAS,MAAM,OAAO,SAAS;AACrE,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,MAAM,EACd,YAAY,6BAA6B,EACzC,OAAO,YAAY;AAClB,QAAI;AACF,YAAM,UAAU,eAAe;AAC/B,UAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AACrC,gBAAQ;AAAA,UACN,oCAAoC,eAAe;AAAA,QACrD;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,qBAAqB,+BAA+B;AAC1D,YAAM,UAAU,MAAM,WAAW;AACjC,YAAM,eAAe,oBAAI,IAAsC;AAC/D,iBAAW,UAAU,SAAS;AAC5B,qBAAa,IAAI,OAAO,MAAM,MAAM;AAAA,MACtC;AAEA,YAAM,QAAQ,OAAO,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACpE,iBAAW,QAAQ,OAAO;AACxB,cAAM,SAAS,QAAQ,IAAI;AAE3B,cAAM,SAAS,aAAa,IAAI,IAAI;AACpC,cAAM,SACJ,QAAQ,SAAS,cACb,cACA,QAAQ,SAAS,WACf,WACA,mBAAmB,QAAQ,IAAI,KAC5B,MAAM;AACL,gBAAM,WAAW,qBAAqB,IAAI;AAC1C,cAAI,aAAa,UAAW,QAAO;AACnC,cAAI,aAAa,WAAY,QAAO;AACpC,iBAAO;AAAA,QACT,GAAG,IACH;AAEV,cAAM,WAAW,MAAM;AACrB,kBAAQ,OAAO,MAAM;AAAA,YACnB,KAAK;AACH,qBAAO,GAAG,OAAO,GAAG;AAAA,YACtB,KAAK;AACH,qBAAO,GAAG,OAAO,GAAG;AAAA,YACtB,KAAK;AACH,qBAAO,GAAG,OAAO,GAAG;AAAA,YACtB,KAAK;AACH,qBAAO,GAAG,OAAO,GAAG;AAAA,YACtB,KAAK;AACH,qBAAO,GAAG,OAAO,GAAG;AAAA,YACtB,KAAK;AAAA,YACL;AACE,qBAAO,GAAG,OAAO,OAAO,KAAK,OAAO,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC;AAAA,UAC7D;AAAA,QACF,GAAG;AAEH,gBAAQ,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK,MAAM,GAAG;AAAA,MAC/C;AAEA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,wBAAwB,EAChC,YAAY,sCAAsC,EAClD;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAO,MAAM,SAAS,YAAY;AACxC,QAAI;AACF,YAAM,QAAQ,kBAAkB,QAAQ,KAAK;AAE7C,UAAI;AACJ,UAAI;AACF,uBAAe,KAAK,MAAM,OAAO;AAAA,MACnC,SAAS,GAAG;AACV,gBAAQ,MAAM,4BAA4B;AAC1C,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UACE,CAAC,aAAa,QACd,CAAC,CAAC,SAAS,OAAO,QAAQ,MAAM,WAAW,QAAQ,EAAE;AAAA,QACnD,aAAa;AAAA,MACf,GACA;AACA,gBAAQ;AAAA,UACN;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UACE,CAAC,OAAO,QAAQ,MAAM,WAAW,QAAQ,EAAE;AAAA,QACzC,aAAa;AAAA,MACf,KACA,CAAC,aAAa,KACd;AACA,gBAAQ,MAAM,8CAA8C;AAC5D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI,aAAa,SAAS,WAAW,CAAC,aAAa,SAAS;AAC1D,gBAAQ,MAAM,yCAAyC;AACvD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UACE,CAAC,WAAW,QAAQ,EAAE,SAAS,aAAa,IAAI,KAChD,CAAC,aAAa,SACd;AACA,gBAAQ,MAAM,6CAA6C;AAC3D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAGA,mBAAa,MAAM,cAAc,KAAK;AAEtC,cAAQ,aAAa,MAAM;AAAA,QACzB,KAAK;AACH,kBAAQ;AAAA,YACN,yBAAyB,IAAI,aAAa,aAAa,GAAG,OAAO,KAAK;AAAA,UACxE;AACA;AAAA,QACF,KAAK;AACH,kBAAQ;AAAA,YACN,wBAAwB,IAAI,aAAa,aAAa,GAAG,OAAO,KAAK;AAAA,UACvE;AACA;AAAA,QACF,KAAK;AACH,kBAAQ;AAAA,YACN,4BAA4B,IAAI,aAAa,aAAa,GAAG,OAAO,KAAK;AAAA,UAC3E;AACA;AAAA,QACF,KAAK;AACH,kBAAQ;AAAA,YACN,uBAAuB,IAAI,aAAa,aAAa,GAAG,OAAO,KAAK;AAAA,UACtE;AACA;AAAA,QACF,KAAK;AACH,kBAAQ;AAAA,YACN,2BAA2B,IAAI,aAAa,aAAa,GAAG,OAAO,KAAK;AAAA,UAC1E;AACA;AAAA,QACF,KAAK;AAAA,QACL;AACE,kBAAQ;AAAA,YACN,0BAA0B,IAAI,kBAAkB,aAAa,OAAO,KAClE,aAAa,QAAQ,CAAC,GACtB,KAAK,GAAG,CAAC,OAAO,KAAK;AAAA,UACzB;AACA;AAAA,MACJ;AAEA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,YAAY,EACpB,YAAY,iCAAiC,EAC7C,OAAO,OAAO,SAAiB;AAC9B,QAAI;AACF,YAAM,SAAS,aAAa,IAAI;AAChC,UAAI,CAAC,QAAQ;AACX,gBAAQ,MAAM,kCAAkC,IAAI,EAAE;AACtD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,qBAAqB,+BAA+B;AAC1D,YAAM,UAAU,MAAM,WAAW;AACjC,YAAM,SAAS,QAAQ,KAAK,OAAK,EAAE,SAAS,IAAI;AAEhD,YAAM,SACJ,QAAQ,SAAS,cACb,cACA,QAAQ,SAAS,WACf,WACA,mBAAmB,QAAQ,IAAI,KAC5B,MAAM;AACL,cAAM,WAAW,qBAAqB,IAAI;AAC1C,YAAI,aAAa,UAAW,QAAO;AACnC,YAAI,aAAa,WAAY,QAAO;AACpC,eAAO;AAAA,MACT,GAAG,IACH;AAEV,YAAM,gBAAgB,MAAM;AAC1B,gBAAQ,OAAO,OAAO;AAAA,UACpB,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT;AACE,mBAAO,OAAO;AAAA,QAClB;AAAA,MACF,GAAG;AAEH,cAAQ,IAAI,GAAG,IAAI,GAAG;AACtB,cAAQ,IAAI,aAAa,MAAM,EAAE;AACjC,cAAQ,IAAI,YAAY,YAAY,EAAE;AAEtC,YAAM,eAAe,CAAC,YAAgD;AACpE,YAAI,CAAC,WAAW,OAAO,KAAK,OAAO,EAAE,WAAW,EAAG;AACnD,gBAAQ,IAAI,YAAY;AACxB,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,kBAAQ,IAAI,OAAO,GAAG,KAAK,KAAK,EAAE;AAAA,QACpC;AAAA,MACF;AAEA,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK;AACH,kBAAQ,IAAI,cAAc;AAC1B,kBAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAClC,uBAAa,OAAO,OAAO;AAC3B;AAAA,QACF,KAAK;AACH,kBAAQ,IAAI,aAAa;AACzB,kBAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAClC,uBAAa,OAAO,OAAO;AAC3B;AAAA,QACF,KAAK;AACH,kBAAQ,IAAI,iBAAiB;AAC7B,kBAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAClC,kBAAQ,IAAI,UAAU,OAAO,OAAO,EAAE;AACtC,uBAAa,OAAO,OAAO;AAC3B;AAAA,QACF,KAAK;AACH,kBAAQ,IAAI,YAAY;AACxB,kBAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAClC;AAAA,QACF,KAAK;AACH,kBAAQ,IAAI,gBAAgB;AAC5B,kBAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAClC,kBAAQ,IAAI,UAAU,OAAO,OAAO,EAAE;AACtC;AAAA,QACF,KAAK;AAAA,QACL;AACE,kBAAQ,IAAI,eAAe;AAC3B,kBAAQ,IAAI,cAAc,OAAO,OAAO,EAAE;AAC1C,kBAAQ,IAAI,YAAY,OAAO,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACtD,cAAI,OAAO,KAAK;AACd,oBAAQ,IAAI,gBAAgB;AAC5B,uBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG,GAAG;AACrD,sBAAQ,IAAI,OAAO,GAAG,IAAI,KAAK,EAAE;AAAA,YACnC;AAAA,UACF;AACA;AAAA,MACJ;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAO,MAAgB,OAAO;AACtC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MACG,QAAQ,yBAAyB,EACjC;AAAA,IACC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,OAAM,YAAW;AACvB,QAAI;AACF,YAAM,QAAQ,kBAAkB,QAAQ,KAAK;AAC7C,YAAM,WAAW,QAAQ;AAEzB,YAAM,EAAE,YAAAC,aAAY,cAAAC,cAAa,IAAI,MAAM,OAAO,IAAI;AACtD,YAAM,EAAE,MAAAC,MAAK,IAAI,MAAM,OAAO,MAAM;AACpC,YAAM,EAAE,KAAK,IAAI,MAAM,OAAO,eAAe;AAE7C,YAAM,QACJ,aAAa,WACbF,YAAW,eAAe,KAC1BC,cAAa,iBAAiB,OAAO,EAClC,YAAY,EACZ,SAAS,WAAW;AAEzB,UAAI,aAAa,YAAY,aAAa,WAAW,CAAC,OAAO;AAC3D,gBAAQ;AAAA,UACN;AAAA,QACF;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI;AACJ,UAAI,aAAa,UAAU;AACzB,qBAAaC;AAAA,UACX,QAAQ,IAAI,QAAQ;AAAA,UACpB;AAAA,QACF;AAAA,MACF,WAAW,aAAa,SAAS;AAC/B,qBAAaA;AAAA,UACX,QAAQ,IAAI,WAAW;AAAA,UACvB;AAAA,QACF;AAAA,MACF,WAAW,OAAO;AAChB,cAAM,gBAAgB,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AACnE;AAAA,YACE;AAAA,YACA,CAAC,KAAY,WAAmB;AAC9B,kBAAI,IAAK,QAAO,GAAG;AAAA,kBACd,SAAQ,OAAO,KAAK,EAAE,MAAM,IAAI,EAAE,IAAI,KAAK,EAAE;AAAA,YACpD;AAAA,UACF;AAAA,QACF,CAAC;AAED,qBAAa,gBAAgB,aAAa;AAAA,MAC5C;AAEA,UAAI,CAACF,YAAW,UAAU,GAAG;AAC3B,gBAAQ,MAAM,mCAAmC,UAAU,EAAE;AAC7D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAIL;AACJ,UAAI;AACF,cAAM,gBAAgBM,cAAa,YAAY,OAAO;AACtD,QAAAN,UAAS,KAAK,MAAM,aAAa;AAAA,MACnC,SAAS,KAAK;AACZ,gBAAQ,MAAM,8BAA8B,GAAG,EAAE;AACjD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,aAAaA,QAAO,cAAc,CAAC;AACzC,YAAM,cAAc,OAAO,KAAK,UAAU;AAC1C,YAAM,aAAa,YAAY;AAE/B,UAAI,eAAe,GAAG;AACpB,gBAAQ,IAAI,4CAA4C;AACxD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,cAAc,YAAY,IAAI,UAAQ;AAC1C,cAAM,SAAS,WAAW,IAAI;AAC9B,YAAI,cAAc;AAElB,gBAAQ,OAAO,MAAM;AAAA,UACnB,KAAK;AACH,0BAAc,SAAS,OAAO,GAAG;AACjC;AAAA,UACF,KAAK;AACH,0BAAc,QAAQ,OAAO,GAAG;AAChC;AAAA,UACF,KAAK;AACH,0BAAc,YAAY,OAAO,OAAO,MAAM,OAAO,GAAG;AACxD;AAAA,UACF,KAAK;AACH,0BAAc,OAAO,OAAO,GAAG;AAC/B;AAAA,UACF,KAAK;AACH,0BAAc,WAAW,OAAO,OAAO,MAAM,OAAO,GAAG;AACvD;AAAA,UACF,KAAK;AAAA,UACL;AACE,0BAAc,UAAU,OAAO,OAAO,KAAK,OAAO,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC;AACvE;AAAA,QACJ;AAEA,eAAO,EAAE,MAAM,aAAa,OAAO;AAAA,MACrC,CAAC;AAED,YAAM,MAAM,MAAM,OAAO,KAAK;AAC9B,YAAM,cAAc,MAAM,OAAO,OAAO;AACxC,YAAM,UAAU,MAAM,OAAO,WAAW;AACxC,YAAM,aAAa,MAAM,OAAO,qBAAc;AAE9C,YAAM,EAAE,QAAAJ,QAAO,IAAI;AACnB,YAAMC,UAAQ;AACd,YAAM,EAAE,aAAAW,aAAY,IAAI;AACxB,YAAM,EAAE,KAAAC,MAAK,MAAAC,MAAK,IAAI;AACtB,YAAM,EAAE,UAAAC,UAAS,IAAI;AAErB,YAAM,IAAI,QAAc,aAAW;AACjC,iBAAS,sBAAsB;AAC7B,gBAAM,EAAE,UAAAC,UAAS,IAAI;AACrB,gBAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,gBAAM,CAAC,eAAe,gBAAgB,IAAIA;AAAA,YACxC,CAAC;AAAA,UACH;AACA,gBAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,KAAK;AACpD,gBAAM,QAAQD,UAAS;AAEvB,gBAAM,gBAAgB,OAAO,oBAA8B;AACzD,2BAAe,IAAI;AACnB,kBAAM,UAAU,CAAC;AAEjB,uBAAW,QAAQ,iBAAiB;AAClC,kBAAI;AACF,sBAAM,SAAS,WAAW,IAAI;AAE9B,sBAAM,iBAAiB,aAAa,IAAI;AACxC,oBAAI,gBAAgB;AAClB;AAAA,gBACF;AAEA,6BAAa,MAAM,QAA2B,KAAK;AACnD,wBAAQ,KAAK,EAAE,MAAM,SAAS,KAAK,CAAC;AAAA,cACtC,SAAS,KAAK;AACZ,wBAAQ,KAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,cACvC;AAAA,YACF;AAEA,6BAAiB,OAAO;AACxB,2BAAe,KAAK;AACpB,0BAAc,IAAI;AAElB,uBAAW,MAAM;AACf,sBAAQ;AAAA,YACV,GAAG,GAAI;AAAA,UACT;AAEA,gBAAM,gBAAgB,OAAO,oBAA8B;AACzD,kBAAM,kBAAkB,gBAAgB;AAAA,cAAO,UAC7C,aAAa,IAAI;AAAA,YACnB;AAEA,gBAAI,gBAAgB,SAAS,GAAG;AAC9B,oBAAM,UAAU,CAAC;AAEjB,oBAAM,aAAa,gBAAgB;AAAA,gBACjC,UAAQ,CAAC,aAAa,IAAI;AAAA,cAC5B;AACA,yBAAW,QAAQ,YAAY;AAC7B,oBAAI;AACF,wBAAM,SAAS,WAAW,IAAI;AAC9B,+BAAa,MAAM,QAA2B,KAAK;AACnD,0BAAQ,KAAK,EAAE,MAAM,SAAS,KAAK,CAAC;AAAA,gBACtC,SAAS,KAAK;AACZ,0BAAQ,KAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,gBACvC;AAAA,cACF;AAEA,yBAAW,QAAQ,iBAAiB;AAClC,oBAAI;AACF,wBAAM,SAAS,WAAW,IAAI;AAC9B,+BAAa,MAAM,QAA2B,KAAK;AACnD,0BAAQ,KAAK,EAAE,MAAM,SAAS,KAAK,CAAC;AAAA,gBACtC,SAAS,KAAK;AACZ,0BAAQ,KAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,gBACvC;AAAA,cACF;AAEA,+BAAiB,OAAO;AACxB,6BAAe,KAAK;AACpB,4BAAc,IAAI;AAElB,yBAAW,MAAM;AACf,wBAAQ;AAAA,cACV,GAAG,GAAI;AAAA,YACT,OAAO;AACL,oBAAM,cAAc,eAAe;AAAA,YACrC;AAAA,UACF;AAEA,iBACE,gBAAAd,QAAA,cAACY,MAAA,EAAI,eAAc,UAAS,SAAS,KACnC,gBAAAZ,QAAA;AAAA,YAACY;AAAA,YAAA;AAAA,cACC,eAAc;AAAA,cACd,aAAY;AAAA,cACZ,aAAa,MAAM;AAAA,cACnB,SAAS;AAAA,cACT,OAAO;AAAA;AAAA,YAEP,gBAAAZ,QAAA,cAACa,OAAA,EAAK,MAAI,MAAC,OAAO,MAAM,QAAM,wCAE9B;AAAA,YAEA,gBAAAb,QAAA,cAACY,MAAA,EAAI,SAAS,KACZ,gBAAAZ,QAAA,cAACa,OAAA,MAAK,UACG,YAAW,qCACpB,CACF;AAAA,YAEA,gBAAAb,QAAA,cAACa,OAAA,MAAK,+CAA6C;AAAA,YAEnD,gBAAAb,QAAA,cAACY,MAAA,EAAI,WAAW,KACd,gBAAAZ,QAAA;AAAA,cAACW;AAAA,cAAA;AAAA,gBACC,SAAS,YAAY,IAAI,WAAS;AAAA,kBAChC,OAAO;AAAA,kBACP,OAAO;AAAA,gBACT,EAAE;AAAA,gBACF,cAAc;AAAA,gBACd,UAAU;AAAA;AAAA,YACZ,CACF;AAAA,UACF,GAEA,gBAAAX,QAAA,cAACY,MAAA,EAAI,WAAW,GAAG,YAAY,KAC7B,gBAAAZ,QAAA,cAACa,OAAA,EAAK,UAAQ,QAAC,0DAEf,CACF,GAEC,cACC,gBAAAb,QAAA,cAACY,MAAA,EAAI,WAAW,KACd,gBAAAZ,QAAA,cAACa,OAAA,EAAK,OAAO,MAAM,WAAS,yBACJ,KACrB,cAAc,OAAO,OAAK,EAAE,OAAO,EAAE,QAAO,8BAE/C,CACF,CAEJ;AAAA,QAEJ;AAEA,cAAM,EAAE,QAAQ,IAAId,QAAO,gBAAAC,QAAA,cAAC,yBAAoB,CAAE;AAElD,mBAAW,MAAM;AACf,kBAAQ;AACR,kBAAQ;AAAA,QACV,GAAG,GAAK;AAAA,MACV,CAAC;AAED,cAAQ,KAAK,CAAC;AAAA,IAChB,SAAS,OAAO;AACd,cAAQ,MAAM,UAAW,MAAgB,OAAO,EAAE;AAClD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,QAAM,kBAAkB,MAAM;AAC5B,UAAMG,UAAS,wBAAwB;AACvC,6BAAyB;AAAA,MACvB,GAAGA;AAAA,MACH,sBAAsB,CAAC;AAAA,MACvB,sBAAsB,CAAC;AAAA,IACzB,CAAC;AACD,YAAQ;AAAA,MACN;AAAA,IACF;AACA,YAAQ;AAAA,MACN,yDAAyD,YAAY;AAAA,IACvE;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MACG,QAAQ,uBAAuB,EAC/B;AAAA,IACC;AAAA,EACF,EACC,OAAO,MAAM;AACZ,oBAAgB;AAAA,EAClB,CAAC;AAEH,MACG,QAAQ,qBAAqB,EAC7B;AAAA,IACC;AAAA,EACF,EACC,OAAO,MAAM;AACZ,oBAAgB;AAAA,EAClB,CAAC;AAEH,UACG,QAAQ,QAAQ,EAChB,YAAY,4BAA4B,YAAY,eAAe,EACnE,OAAO,YAAY;AAClB,UAAM,IAAI,QAAc,aAAW;AACjC;AAAC,OAAC,YAAY;AACZ,cAAM,EAAE,QAAAJ,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,QAAAA,QAAO,gBAAAC,QAAA,cAAC,UAAO,QAAQ,MAAM,QAAQ,GAAG,YAAY,MAAM,CAAE;AAAA,MAC9D,GAAG;AAAA,IACL,CAAC;AACD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAGH,UACG,QAAQ,QAAQ,EAChB,YAAY,gDAAgD,EAC5D,OAAO,YAAY;AAClB,YAAQ,IAAI,oBAAoB,MAAM,OAAO,EAAE;AAC/C,YAAQ,IAAI,yBAAyB;AAErC,UAAM,EAAE,kBAAkB,4BAA4B,IACpD,MAAM,OAAO,2BAA4B;AAC3C,UAAM,gBAAgB,MAAM,iBAAiB;AAE7C,QAAI,CAAC,eAAe;AAClB,cAAQ,MAAM,6BAA6B;AAC3C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI,kBAAkB,MAAM,SAAS;AACnC,cAAQ,IAAI,GAAG,YAAY,gBAAgB;AAC3C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,YAAQ,IAAI,0BAA0B,aAAa,EAAE;AACrD,UAAM,OAAO,MAAM,4BAA4B;AAC/C,YAAQ,IAAI,gDAAgD;AAC5D,eAAW,KAAK,KAAM,SAAQ,IAAI,KAAK,CAAC,EAAE;AAC1C,QAAI,QAAQ,aAAa,SAAS;AAChC,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,UACG,QAAQ,KAAK,EACb,YAAY,2BAA2B,EACvC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,QAAQ,EAAE,KAAAL,KAAI,MAAM;AACjC,UAAM,MAAMA,MAAK,KAAK;AAEtB,UAAMG,WAAoC,CAAC;AAC1C,KAAC,YAAY;AACZ,YAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,YAAM,EAAE,QAAQ,IAAIA;AAAA,QAClB,gBAAAC,QAAA,cAAC,WAAQ,SAASF,UAAS,MAAK,YAAW,WAAW,QAAQ;AAAA,QAC9D;AAAA,MACF;AACA,MAAAA,SAAQ,UAAU;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AAEH,UACG,QAAQ,QAAQ,EAChB;AAAA,IACC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,0BAA0B,6BAA6B,MAAM,IAAI,EACxE,OAAO,iBAAiB,kCAAkC,MAAM,IAAI,EACpE;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,EACC;AAAA,IACC,OACE,YACA,EAAE,KAAAH,MAAK,iBAAiB,MAAM,SAAS,qBAAqB,MACzD;AACH,YAAM,MAAMA,MAAK,IAAI;AACrB,uBAAiB;AAEjB,YAAM,CAAC,EAAE,SAAS,GAAG,EAAE,YAAY,CAAC,IAAI,MAAM,QAAQ,IAAI;AAAA,QACxD,OAAO,qBAAQ;AAAA,QACf,OAAO,wBAAW;AAAA,MACpB,CAAC;AACD,YAAM,CAAC,UAAU,UAAU,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,QACzD;AAAA,UACE,mBAAmB,wBAAwB,EAAE;AAAA,QAC/C;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,MACb,CAAC;AACD,YAAM,QACJ,yBAAyB,OACrB,SAAS,OAAO,OAAK,EAAE,SAAS,cAAc,IAC9C;AAEN,UAAI,eAAe,QAAW;AAC5B,cAAM,EAAE,6BAA6B,IACnC,MAAM,OAAO,oCAAsC;AACrD,cAAM,EAAE,+BAA+B,IACrC,MAAM,OAAO,sCAAwC;AACvD,cAAM,EAAE,sBAAsB,IAC5B,MAAM,OAAO,kCAAoC;AAEnD,cAAM,gBAAgB,OAAO,UAAU,EAAE,KAAK;AAC9C,cAAM,iBAAiB,WAAW,KAAK,aAAa;AACpD,cAAM,eAAe,CAAC,kBAAkB,WAAW,aAAa;AAEhE,YAAI;AACJ,YAAI,iBAAyB,eAAe,oBAAI,KAAK,CAAC;AACtD,YAAI,oBAAwC;AAE5C,YAAI;AACF,cAAI,kBAAkB,cAAc;AAClC,kBAAM,OAAO,MAAM,YAAY,YAAY,SAAS,CAAC;AACrD,gBAAI,gBAAgB;AAClB,oBAAM,SAAS,KAAK,IAAI,SAAS,eAAe,EAAE,CAAC;AACnD,oBAAM,MAAM,KAAK,MAAM;AACvB,kBAAI,CAAC,KAAK;AACR,wBAAQ,MAAM,kCAAkC,MAAM;AACtD,wBAAQ,KAAK,CAAC;AAAA,cAChB;AACA,yBAAW,MAAM,oBAAoB,IAAI,UAAU,KAAK;AACxD,+BAAiB,IAAI;AACrB,kCAAoB;AAAA,gBAClB,IAAI;AAAA,gBACJ,IAAI,cAAc;AAAA,gBAClB;AAAA,cACF;AAAA,YACF,OAAO;AACL,yBAAW,MAAM,oBAAoB,eAAe,KAAK;AACzD,oBAAM,eAAe,cAAc,MAAM,GAAG;AAC5C,oBAAM,WACJ,aAAa,aAAa,SAAS,CAAC,KAAK;AAC3C,oBAAM,EAAE,MAAM,WAAW,IAAI,iBAAiB,QAAQ;AACtD,+BAAiB;AACjB,kCAAoB;AAAA,gBAClB;AAAA,gBACA,cAAc;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,kBAAM,WAAW,+BAA+B;AAAA,cAC9C,KAAAA;AAAA,cACA,YAAY;AAAA,YACd,CAAC;AACD,gBAAI,SAAS,SAAS,MAAM;AAC1B,oCAAsB,SAAS,SAAS;AACxC,yBAAW,6BAA6B;AAAA,gBACtC,KAAAA;AAAA,gBACA,WAAW,SAAS;AAAA,cACtB,CAAC;AAAA,YACH,WAAW,SAAS,SAAS,uBAAuB;AAClD,sBAAQ;AAAA,gBACN,SAAS,WACL,yDAAyD,SAAS,QAAQ,KAC1E;AAAA,cACN;AACA,sBAAQ,KAAK,CAAC;AAAA,YAChB,WAAW,SAAS,SAAS,aAAa;AACxC,sBAAQ;AAAA,gBACN,mCAAmC,aAAa,MAAM,SAAS,mBAAmB;AAAA,kBAChF;AAAA,gBACF,CAAC;AAAA,cACH;AACA,sBAAQ,KAAK,CAAC;AAAA,YAChB,OAAO;AACL,sBAAQ;AAAA,gBACN,kDAAkD,aAAa;AAAA,cACjE;AACA,sBAAQ,KAAK,CAAC;AAAA,YAChB;AAAA,UACF;AAEA,gBAAM,iBAAiB,MAAM,6BAA6B;AAC1D;AACE,kBAAM,EAAE,QAAAI,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,kBAAM,EAAE,KAAK,IAAI,MAAM,OAAO,oBAAe;AAC7C,YAAAA;AAAA,cACE,gBAAAC,QAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAc;AAAA,kBACd;AAAA,kBACA;AAAA,kBACA,uBAAuB;AAAA,kBACvB;AAAA,kBACA;AAAA,kBACA,sBAAsB,yBAAyB;AAAA,kBAC/C;AAAA,kBACA,UAAU;AAAA,kBACV,iBAAiB;AAAA,kBACjB;AAAA,kBACA;AAAA;AAAA,cACF;AAAA,cACA,EAAE,aAAa,MAAM;AAAA,YACvB;AAAA,UACF;AAAA,QACF,SAAS,OAAO;AACd,mBAAS,gCAAgC,KAAK,EAAE;AAChD,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF,OAAO;AACL,cAAM,EAAE,sBAAsB,IAC5B,MAAM,OAAO,sCAAwC;AACvD,cAAM,WAAW,sBAAsB,EAAE,KAAAL,KAAI,CAAC;AAC9C,YAAI,SAAS,WAAW,GAAG;AACzB,kBAAQ,MAAM,iCAAiC;AAC/C,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAMG,WAAoC,CAAC;AAC1C,SAAC,YAAY;AACZ,gBAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,gBAAM,EAAE,QAAQ,IAAIA;AAAA,YAClB,gBAAAC,QAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAKL;AAAA,gBACL,SAASG;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,gBACV,sBAAsB,yBAAyB;AAAA,gBAC/C;AAAA,gBACA,eAAc;AAAA;AAAA,YAChB;AAAA,YACA;AAAA,UACF;AACA,UAAAA,SAAQ,UAAU;AAAA,QACpB,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAEF,UACG,QAAQ,OAAO,EACf;AAAA,IACC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,QAAQ,EAAE,KAAAH,KAAI,MAAM;AACjC,UAAM,MAAMA,MAAK,KAAK;AAEtB,UAAMG,WAAoC,CAAC;AAC1C,KAAC,YAAY;AACZ,YAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,KAAK;AACrC,YAAM,EAAE,QAAQ,IAAIA;AAAA,QAClB,gBAAAC,QAAA,cAAC,WAAQ,SAASF,UAAS,MAAK,UAAS,WAAW,QAAQ;AAAA,QAC5D;AAAA,MACF;AACA,MAAAA,SAAQ,UAAU;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AAEH,QAAM,UAAU,QACb,QAAQ,SAAS,EACjB;AAAA,IACC,2BAA2B,eAAe;AAAA,EAC5C;AAEF,UACG,QAAQ,WAAW,EACnB,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,YAAY,0BAA0B,EACtC,OAAO,OAAO,KAAK,EAAE,KAAAH,KAAI,MAAM;AAC9B,UAAM,MAAMA,MAAK,KAAK;AAEtB,UAAMG,WAAU;AAAA,MACd,MAAM,WAAW;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AACA,YAAQ,IAAIA,SAAQ,GAAG,CAAC;AACxB,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,UACG,QAAQ,mBAAmB,EAC3B,YAAY,wBAAwB,EACpC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,KAAK,OAAO,EAAE,KAAAH,KAAI,MAAM;AACrC,UAAM,MAAMA,MAAK,KAAK;AAEtB,eAAW,KAAK,KAAK;AACrB,YAAQ,IAAI,eAAe,GAAG,QAAQ,KAAK,GAAG;AAC9C,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,UACG,QAAQ,MAAM,EACd,YAAY,yBAAyB,EACrC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,EAAE,KAAAA,KAAI,MAAM;AACzB,UAAM,MAAMA,MAAK,KAAK;AAEtB,UAAMG,WAAU;AAAA,MACd,MAAM,WAAW;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,YAAQ,IAAI,KAAK,UAAUA,UAAS,MAAM,CAAC,CAAC;AAC5C,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,UACG,QAAQ,cAAc,EACtB,YAAY,6BAA6B,EACzC,OAAO,eAAe,iCAAiC,QAAQ,IAAI,CAAC,EACpE,OAAO,OAAO,KAAK,EAAE,KAAAH,KAAI,MAAM;AAC9B,UAAM,MAAMA,MAAK,KAAK;AAEtB,kBAAc,GAAG;AACjB,YAAQ,IAAI,mBAAmB,GAAG,EAAE;AACpC,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAEH,QAAM,QAAQ,WAAW,QAAQ,IAAI;AACrC,SAAO;AACT;AAEA,eAAe,QAAQ;AACrB,MAAI,QAAQ,MAAM,OAAO;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO;AACX,mBAAiB,SAAS,QAAQ,MAAO,SAAQ;AACjD,SAAO;AACT;AAEA,IAAI,2BAA2B;AAC/B,eAAe,aAAa,OAAO,GAAG;AACpC,MAAI,0BAA0B;AAC5B,YAAQ,KAAK,IAAI;AACjB;AAAA,EACF;AACA,6BAA2B;AAE3B,MAAI;AACF,UAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,yBAA0B;AACtE,UAAM,EAAE,sBAAsB,IAC5B,MAAM,OAAO,kCAAoC;AACnD,UAAM,EAAE,OAAO,IAAI,MAAM,OAAO,IAAI;AACpC,UAAM,EAAE,MAAAe,MAAK,IAAI,MAAM,OAAO,MAAM;AAEpC,UAAM,YAAY,sBAAsB;AACxC,UAAM,iBAAiBA;AAAA,MACrB,OAAO;AAAA,MACP;AAAA,MACA,GAAG,SAAS;AAAA,IACd;AAEA,UAAM,EAAE,QAAQ,QAAQ,KAAK,MAAM;AACjC,UACE,OAAO,gBAAgB,eACvB,OAAQ,YAAoB,YAAY,YACxC;AACA,eAAO;AAAA,UACL,QAAS,YAAoB,QAAQ,GAAI;AAAA,UACzC,SAAS,MAAM;AAAA,UAAC;AAAA,QAClB;AAAA,MACF;AACA,YAAM,aAAa,IAAI,gBAAgB;AACvC,YAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,GAAI;AACvD,aAAO,EAAE,QAAQ,WAAW,QAAQ,SAAS,MAAM,aAAa,KAAK,EAAE;AAAA,IACzE,GAAG;AAEH,QAAI;AACF,YAAM,mBAAmB;AAAA,QACvB,QAAQ;AAAA,QACR,KAAK,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,UAAE;AACA,cAAQ;AAAA,IACV;AAAA,EACF,QAAQ;AAAA,EAAC;AAET,MAAI;AACF,gBAAY;AAAA,EACd,QAAQ;AAAA,EAAC;AACT,MAAI;AACF,aAAS,YAAY,EAAE,MAAM;AAAA,EAC/B,QAAQ;AAAA,EAAC;AACT,UAAQ,KAAK,IAAI;AACnB;AAEA,IAAI,4BAA4B;AACzB,SAAS,yBAA+B;AAC7C,MAAI,0BAA2B;AAC/B,8BAA4B;AAE5B,UAAQ,GAAG,QAAQ,MAAM;AACvB,gBAAY;AACZ,aAAS,YAAY,EAAE,MAAM;AAAA,EAC/B,CAAC;AAED,UAAQ,GAAG,UAAU,MAAM,KAAK,aAAa,CAAC,CAAC;AAC/C,UAAQ,GAAG,WAAW,MAAM,KAAK,aAAa,CAAC,CAAC;AAChD,UAAQ,GAAG,YAAY,MAAM,KAAK,aAAa,CAAC,CAAC;AACjD,UAAQ,GAAG,sBAAsB,SAAO;AACtC,YAAQ,MAAM,wBAAwB,GAAG;AACzC,SAAK,aAAa,CAAC;AAAA,EACrB,CAAC;AACD,UAAQ,GAAG,qBAAqB,SAAO;AACrC,YAAQ,MAAM,uBAAuB,GAAG;AACxC,SAAK,aAAa,CAAC;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,cAAc;AACrB,QAAM,WAAW,QAAQ,OAAO,QAC5B,QAAQ,SACR,QAAQ,OAAO,QACb,QAAQ,SACR;AACN,YAAU,MAAM,YAAc,UAAU,EAAE;AAC5C;;;AqBtyFA,YAAY,cAAc;AAJ1B,WAAW;AACX,yBAAyB;AACzB,mBAAmB,YAAY,GAAG;AAGlC,OAAO,KAAK,QAAQ;AAEpB,uBAAuB;AACvB,KAAK,OAAO;",
6
+ "names": ["writeFileSync", "cwd", "getContext", "KodeAgentStructuredStdio", "sdkUser", "cwd", "React", "React", "React", "Box", "Text", "useInput", "React", "Text", "React", "Text", "useInput", "React", "Box", "Text", "React", "Box", "Text", "useInput", "useInput", "React", "Box", "Text", "React", "render", "React", "React", "React", "React", "Box", "Text", "React", "Box", "Text", "logs", "React", "cwd", "fs", "fs", "cwd", "React", "Box", "Text", "useInput", "render", "useInput", "React", "Box", "Text", "render", "cwd", "debug", "allowedTools", "context", "render", "React", "writeFileSync", "getModelManager", "config", "marketplaceCmd", "setCwd", "getCwd", "match", "existsSync", "readFileSync", "join", "MultiSelect", "Box", "Text", "getTheme", "useState"]
7
+ }