explorbot 0.0.1

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 (329) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +267 -0
  3. package/assets/sample-files/sample.docx +0 -0
  4. package/assets/sample-files/sample.mp3 +0 -0
  5. package/assets/sample-files/sample.mp4 +0 -0
  6. package/assets/sample-files/sample.pdf +21 -0
  7. package/assets/sample-files/sample.png +0 -0
  8. package/assets/sample-files/sample.xlsx +0 -0
  9. package/assets/sample-files/sample.zip +0 -0
  10. package/dist/assets/sample-files/sample.docx +0 -0
  11. package/dist/assets/sample-files/sample.mp3 +0 -0
  12. package/dist/assets/sample-files/sample.mp4 +0 -0
  13. package/dist/assets/sample-files/sample.pdf +21 -0
  14. package/dist/assets/sample-files/sample.png +0 -0
  15. package/dist/assets/sample-files/sample.xlsx +0 -0
  16. package/dist/assets/sample-files/sample.zip +0 -0
  17. package/dist/bin/explorbot-cli.js +683 -0
  18. package/dist/bin/explorbot-cli.js.map +1 -0
  19. package/dist/boat/api-tester/bin/apibot-cli.js +5 -0
  20. package/dist/boat/api-tester/bin/apibot-cli.js.map +1 -0
  21. package/dist/boat/api-tester/example/apibot.config.js +31 -0
  22. package/dist/boat/api-tester/example/apibot.config.js.map +1 -0
  23. package/dist/boat/api-tester/src/ai/chief/styles.js +13 -0
  24. package/dist/boat/api-tester/src/ai/chief/styles.js.map +1 -0
  25. package/dist/boat/api-tester/src/ai/chief.js +301 -0
  26. package/dist/boat/api-tester/src/ai/chief.js.map +1 -0
  27. package/dist/boat/api-tester/src/ai/curler-tools.js +263 -0
  28. package/dist/boat/api-tester/src/ai/curler-tools.js.map +1 -0
  29. package/dist/boat/api-tester/src/ai/curler.js +271 -0
  30. package/dist/boat/api-tester/src/ai/curler.js.map +1 -0
  31. package/dist/boat/api-tester/src/api-client.js +26 -0
  32. package/dist/boat/api-tester/src/api-client.js.map +1 -0
  33. package/dist/boat/api-tester/src/apibot.js +166 -0
  34. package/dist/boat/api-tester/src/apibot.js.map +1 -0
  35. package/dist/boat/api-tester/src/cli.js +262 -0
  36. package/dist/boat/api-tester/src/cli.js.map +1 -0
  37. package/dist/boat/api-tester/src/config.js +159 -0
  38. package/dist/boat/api-tester/src/config.js.map +1 -0
  39. package/dist/prompts/audit-rules.md +124 -0
  40. package/dist/rules/chief/general.md +11 -0
  41. package/dist/rules/chief/styles/curious.md +12 -0
  42. package/dist/rules/chief/styles/hacker.md +19 -0
  43. package/dist/rules/chief/styles/normal.md +11 -0
  44. package/dist/rules/chief/styles/psycho.md +17 -0
  45. package/dist/rules/navigator/multiple-locator.md +47 -0
  46. package/dist/rules/navigator/output.md +69 -0
  47. package/dist/rules/navigator/verification-actions.md +122 -0
  48. package/dist/rules/navigator/verification-output.md +53 -0
  49. package/dist/rules/planner/styles/curious.md +39 -0
  50. package/dist/rules/planner/styles/normal.md +21 -0
  51. package/dist/rules/planner/styles/psycho.md +14 -0
  52. package/dist/rules/researcher/list-element.md +11 -0
  53. package/dist/rules/researcher/screenshot-ui-map.md +30 -0
  54. package/dist/rules/researcher/section-ui-map.md +18 -0
  55. package/dist/rules/researcher/ui-map-table.md +18 -0
  56. package/dist/src/action-result.js +574 -0
  57. package/dist/src/action-result.js.map +1 -0
  58. package/dist/src/action.js +388 -0
  59. package/dist/src/action.js.map +1 -0
  60. package/dist/src/activity.js +86 -0
  61. package/dist/src/activity.js.map +1 -0
  62. package/dist/src/ai/agent.js +2 -0
  63. package/dist/src/ai/agent.js.map +1 -0
  64. package/dist/src/ai/bosun.js +443 -0
  65. package/dist/src/ai/bosun.js.map +1 -0
  66. package/dist/src/ai/captain/idle-mode.js +102 -0
  67. package/dist/src/ai/captain/idle-mode.js.map +1 -0
  68. package/dist/src/ai/captain/mixin.js +11 -0
  69. package/dist/src/ai/captain/mixin.js.map +1 -0
  70. package/dist/src/ai/captain/test-mode.js +251 -0
  71. package/dist/src/ai/captain/test-mode.js.map +1 -0
  72. package/dist/src/ai/captain/web-mode.js +124 -0
  73. package/dist/src/ai/captain/web-mode.js.map +1 -0
  74. package/dist/src/ai/captain.js +442 -0
  75. package/dist/src/ai/captain.js.map +1 -0
  76. package/dist/src/ai/conversation.js +176 -0
  77. package/dist/src/ai/conversation.js.map +1 -0
  78. package/dist/src/ai/experience-compactor.js +232 -0
  79. package/dist/src/ai/experience-compactor.js.map +1 -0
  80. package/dist/src/ai/fisherman-tools.js +154 -0
  81. package/dist/src/ai/fisherman-tools.js.map +1 -0
  82. package/dist/src/ai/fisherman.js +184 -0
  83. package/dist/src/ai/fisherman.js.map +1 -0
  84. package/dist/src/ai/historian.js +384 -0
  85. package/dist/src/ai/historian.js.map +1 -0
  86. package/dist/src/ai/navigator.js +493 -0
  87. package/dist/src/ai/navigator.js.map +1 -0
  88. package/dist/src/ai/pilot.js +684 -0
  89. package/dist/src/ai/pilot.js.map +1 -0
  90. package/dist/src/ai/planner/session-dedup.js +28 -0
  91. package/dist/src/ai/planner/session-dedup.js.map +1 -0
  92. package/dist/src/ai/planner/styles.js +15 -0
  93. package/dist/src/ai/planner/styles.js.map +1 -0
  94. package/dist/src/ai/planner/subpages.js +118 -0
  95. package/dist/src/ai/planner/subpages.js.map +1 -0
  96. package/dist/src/ai/planner.js +486 -0
  97. package/dist/src/ai/planner.js.map +1 -0
  98. package/dist/src/ai/provider.js +540 -0
  99. package/dist/src/ai/provider.js.map +1 -0
  100. package/dist/src/ai/quartermaster.js +210 -0
  101. package/dist/src/ai/quartermaster.js.map +1 -0
  102. package/dist/src/ai/researcher/cache.js +95 -0
  103. package/dist/src/ai/researcher/cache.js.map +1 -0
  104. package/dist/src/ai/researcher/coordinates.js +210 -0
  105. package/dist/src/ai/researcher/coordinates.js.map +1 -0
  106. package/dist/src/ai/researcher/deep-analysis.js +364 -0
  107. package/dist/src/ai/researcher/deep-analysis.js.map +1 -0
  108. package/dist/src/ai/researcher/fingerprint-worker.js +46 -0
  109. package/dist/src/ai/researcher/fingerprint-worker.js.map +1 -0
  110. package/dist/src/ai/researcher/focus.js +37 -0
  111. package/dist/src/ai/researcher/focus.js.map +1 -0
  112. package/dist/src/ai/researcher/locators.js +242 -0
  113. package/dist/src/ai/researcher/locators.js.map +1 -0
  114. package/dist/src/ai/researcher/mixin.js +3 -0
  115. package/dist/src/ai/researcher/mixin.js.map +1 -0
  116. package/dist/src/ai/researcher/parser.js +160 -0
  117. package/dist/src/ai/researcher/parser.js.map +1 -0
  118. package/dist/src/ai/researcher/research-result.js +110 -0
  119. package/dist/src/ai/researcher/research-result.js.map +1 -0
  120. package/dist/src/ai/researcher.js +776 -0
  121. package/dist/src/ai/researcher.js.map +1 -0
  122. package/dist/src/ai/rules.js +368 -0
  123. package/dist/src/ai/rules.js.map +1 -0
  124. package/dist/src/ai/task-agent.js +110 -0
  125. package/dist/src/ai/task-agent.js.map +1 -0
  126. package/dist/src/ai/tester.js +840 -0
  127. package/dist/src/ai/tester.js.map +1 -0
  128. package/dist/src/ai/tools.js +980 -0
  129. package/dist/src/ai/tools.js.map +1 -0
  130. package/dist/src/api/api-client.js +91 -0
  131. package/dist/src/api/api-client.js.map +1 -0
  132. package/dist/src/api/request-result.js +177 -0
  133. package/dist/src/api/request-result.js.map +1 -0
  134. package/dist/src/api/request-store.js +109 -0
  135. package/dist/src/api/request-store.js.map +1 -0
  136. package/dist/src/api/spec-reader.js +148 -0
  137. package/dist/src/api/spec-reader.js.map +1 -0
  138. package/dist/src/api/xhr-capture.js +91 -0
  139. package/dist/src/api/xhr-capture.js.map +1 -0
  140. package/dist/src/browser-server.js +67 -0
  141. package/dist/src/browser-server.js.map +1 -0
  142. package/dist/src/command-handler.js +363 -0
  143. package/dist/src/command-handler.js.map +1 -0
  144. package/dist/src/commands/add-rule-command.js +52 -0
  145. package/dist/src/commands/add-rule-command.js.map +1 -0
  146. package/dist/src/commands/base-command.js +14 -0
  147. package/dist/src/commands/base-command.js.map +1 -0
  148. package/dist/src/commands/clean-command.js +67 -0
  149. package/dist/src/commands/clean-command.js.map +1 -0
  150. package/dist/src/commands/context-aria-command.js +18 -0
  151. package/dist/src/commands/context-aria-command.js.map +1 -0
  152. package/dist/src/commands/context-command.js +57 -0
  153. package/dist/src/commands/context-command.js.map +1 -0
  154. package/dist/src/commands/context-data-command.js +25 -0
  155. package/dist/src/commands/context-data-command.js.map +1 -0
  156. package/dist/src/commands/context-experience-command.js +41 -0
  157. package/dist/src/commands/context-experience-command.js.map +1 -0
  158. package/dist/src/commands/context-html-command.js +26 -0
  159. package/dist/src/commands/context-html-command.js.map +1 -0
  160. package/dist/src/commands/context-knowledge-command.js +36 -0
  161. package/dist/src/commands/context-knowledge-command.js.map +1 -0
  162. package/dist/src/commands/debug-command.js +12 -0
  163. package/dist/src/commands/debug-command.js.map +1 -0
  164. package/dist/src/commands/drill-command.js +29 -0
  165. package/dist/src/commands/drill-command.js.map +1 -0
  166. package/dist/src/commands/exit-command.js +26 -0
  167. package/dist/src/commands/exit-command.js.map +1 -0
  168. package/dist/src/commands/explore-command.js +124 -0
  169. package/dist/src/commands/explore-command.js.map +1 -0
  170. package/dist/src/commands/freesail-command.js +84 -0
  171. package/dist/src/commands/freesail-command.js.map +1 -0
  172. package/dist/src/commands/help-command.js +7 -0
  173. package/dist/src/commands/help-command.js.map +1 -0
  174. package/dist/src/commands/index.js +63 -0
  175. package/dist/src/commands/index.js.map +1 -0
  176. package/dist/src/commands/knows-command.js +54 -0
  177. package/dist/src/commands/knows-command.js.map +1 -0
  178. package/dist/src/commands/learn-command.js +35 -0
  179. package/dist/src/commands/learn-command.js.map +1 -0
  180. package/dist/src/commands/navigate-command.js +16 -0
  181. package/dist/src/commands/navigate-command.js.map +1 -0
  182. package/dist/src/commands/path-command.js +70 -0
  183. package/dist/src/commands/path-command.js.map +1 -0
  184. package/dist/src/commands/plan-clear-command.js +13 -0
  185. package/dist/src/commands/plan-clear-command.js.map +1 -0
  186. package/dist/src/commands/plan-command.js +36 -0
  187. package/dist/src/commands/plan-command.js.map +1 -0
  188. package/dist/src/commands/plan-edit-command.js +8 -0
  189. package/dist/src/commands/plan-edit-command.js.map +1 -0
  190. package/dist/src/commands/plan-load-command.js +16 -0
  191. package/dist/src/commands/plan-load-command.js.map +1 -0
  192. package/dist/src/commands/plan-reload-command.js +23 -0
  193. package/dist/src/commands/plan-reload-command.js.map +1 -0
  194. package/dist/src/commands/plan-save-command.js +22 -0
  195. package/dist/src/commands/plan-save-command.js.map +1 -0
  196. package/dist/src/commands/research-command.js +38 -0
  197. package/dist/src/commands/research-command.js.map +1 -0
  198. package/dist/src/commands/start-command.js +12 -0
  199. package/dist/src/commands/start-command.js.map +1 -0
  200. package/dist/src/commands/status-command.js +19 -0
  201. package/dist/src/commands/status-command.js.map +1 -0
  202. package/dist/src/commands/test-command.js +85 -0
  203. package/dist/src/commands/test-command.js.map +1 -0
  204. package/dist/src/components/ActivityPane.js +55 -0
  205. package/dist/src/components/ActivityPane.js.map +1 -0
  206. package/dist/src/components/AddKnowledge.js +122 -0
  207. package/dist/src/components/AddKnowledge.js.map +1 -0
  208. package/dist/src/components/AddRule.js +117 -0
  209. package/dist/src/components/AddRule.js.map +1 -0
  210. package/dist/src/components/App.js +313 -0
  211. package/dist/src/components/App.js.map +1 -0
  212. package/dist/src/components/Autocomplete.js +43 -0
  213. package/dist/src/components/Autocomplete.js.map +1 -0
  214. package/dist/src/components/InputPane.js +207 -0
  215. package/dist/src/components/InputPane.js.map +1 -0
  216. package/dist/src/components/InputReadline.js +598 -0
  217. package/dist/src/components/InputReadline.js.map +1 -0
  218. package/dist/src/components/LogPane.js +123 -0
  219. package/dist/src/components/LogPane.js.map +1 -0
  220. package/dist/src/components/PlanEditor.js +126 -0
  221. package/dist/src/components/PlanEditor.js.map +1 -0
  222. package/dist/src/components/PlanPane.js +51 -0
  223. package/dist/src/components/PlanPane.js.map +1 -0
  224. package/dist/src/components/SessionTimer.js +26 -0
  225. package/dist/src/components/SessionTimer.js.map +1 -0
  226. package/dist/src/components/StateTransitionPane.js +107 -0
  227. package/dist/src/components/StateTransitionPane.js.map +1 -0
  228. package/dist/src/components/StatusPane.js +37 -0
  229. package/dist/src/components/StatusPane.js.map +1 -0
  230. package/dist/src/components/TaskPane.js +96 -0
  231. package/dist/src/components/TaskPane.js.map +1 -0
  232. package/dist/src/components/Welcome.js +52 -0
  233. package/dist/src/components/Welcome.js.map +1 -0
  234. package/dist/src/components/WelcomeChecklist.js +96 -0
  235. package/dist/src/components/WelcomeChecklist.js.map +1 -0
  236. package/dist/src/components/WelcomeCommands.js +61 -0
  237. package/dist/src/components/WelcomeCommands.js.map +1 -0
  238. package/dist/src/components/autocomplete-store.js +22 -0
  239. package/dist/src/components/autocomplete-store.js.map +1 -0
  240. package/dist/src/components/parse-keypress.js +174 -0
  241. package/dist/src/components/parse-keypress.js.map +1 -0
  242. package/dist/src/config.js +249 -0
  243. package/dist/src/config.js.map +1 -0
  244. package/dist/src/execution-controller.js +92 -0
  245. package/dist/src/execution-controller.js.map +1 -0
  246. package/dist/src/experience-tracker.js +294 -0
  247. package/dist/src/experience-tracker.js.map +1 -0
  248. package/dist/src/explorbot.js +348 -0
  249. package/dist/src/explorbot.js.map +1 -0
  250. package/dist/src/explorer.js +611 -0
  251. package/dist/src/explorer.js.map +1 -0
  252. package/dist/src/index.js +56 -0
  253. package/dist/src/index.js.map +1 -0
  254. package/dist/src/knowledge-tracker.js +184 -0
  255. package/dist/src/knowledge-tracker.js.map +1 -0
  256. package/dist/src/observability.js +126 -0
  257. package/dist/src/observability.js.map +1 -0
  258. package/dist/src/reporter.js +185 -0
  259. package/dist/src/reporter.js.map +1 -0
  260. package/dist/src/state-manager.js +427 -0
  261. package/dist/src/state-manager.js.map +1 -0
  262. package/dist/src/stats.js +44 -0
  263. package/dist/src/stats.js.map +1 -0
  264. package/dist/src/test-plan.js +343 -0
  265. package/dist/src/test-plan.js.map +1 -0
  266. package/dist/src/utils/aria.js +588 -0
  267. package/dist/src/utils/aria.js.map +1 -0
  268. package/dist/src/utils/code-extractor.js +21 -0
  269. package/dist/src/utils/code-extractor.js.map +1 -0
  270. package/dist/src/utils/context-formatter.js +205 -0
  271. package/dist/src/utils/context-formatter.js.map +1 -0
  272. package/dist/src/utils/error-page.js +19 -0
  273. package/dist/src/utils/error-page.js.map +1 -0
  274. package/dist/src/utils/expandable.js +35 -0
  275. package/dist/src/utils/expandable.js.map +1 -0
  276. package/dist/src/utils/hooks-runner.js +77 -0
  277. package/dist/src/utils/hooks-runner.js.map +1 -0
  278. package/dist/src/utils/html-diff.js +734 -0
  279. package/dist/src/utils/html-diff.js.map +1 -0
  280. package/dist/src/utils/html.js +1163 -0
  281. package/dist/src/utils/html.js.map +1 -0
  282. package/dist/src/utils/logger.js +465 -0
  283. package/dist/src/utils/logger.js.map +1 -0
  284. package/dist/src/utils/loop.js +126 -0
  285. package/dist/src/utils/loop.js.map +1 -0
  286. package/dist/src/utils/markdown-parser.js +117 -0
  287. package/dist/src/utils/markdown-parser.js.map +1 -0
  288. package/dist/src/utils/markdown-query.js +393 -0
  289. package/dist/src/utils/markdown-query.js.map +1 -0
  290. package/dist/src/utils/markdown-terminal.js +40 -0
  291. package/dist/src/utils/markdown-terminal.js.map +1 -0
  292. package/dist/src/utils/research-parser.js +2 -0
  293. package/dist/src/utils/research-parser.js.map +1 -0
  294. package/dist/src/utils/retry.js +55 -0
  295. package/dist/src/utils/retry.js.map +1 -0
  296. package/dist/src/utils/rules-loader.js +104 -0
  297. package/dist/src/utils/rules-loader.js.map +1 -0
  298. package/dist/src/utils/strings.js +14 -0
  299. package/dist/src/utils/strings.js.map +1 -0
  300. package/dist/src/utils/test-plan-markdown.js +301 -0
  301. package/dist/src/utils/test-plan-markdown.js.map +1 -0
  302. package/dist/src/utils/throttle.js +16 -0
  303. package/dist/src/utils/throttle.js.map +1 -0
  304. package/dist/src/utils/unique-names.js +13 -0
  305. package/dist/src/utils/unique-names.js.map +1 -0
  306. package/dist/src/utils/url-matcher.js +48 -0
  307. package/dist/src/utils/url-matcher.js.map +1 -0
  308. package/dist/src/utils/web-element.js +131 -0
  309. package/dist/src/utils/web-element.js.map +1 -0
  310. package/dist/src/utils/xpath.js +110 -0
  311. package/dist/src/utils/xpath.js.map +1 -0
  312. package/package.json +119 -0
  313. package/prompts/audit-rules.md +124 -0
  314. package/rules/chief/general.md +11 -0
  315. package/rules/chief/styles/curious.md +12 -0
  316. package/rules/chief/styles/hacker.md +19 -0
  317. package/rules/chief/styles/normal.md +11 -0
  318. package/rules/chief/styles/psycho.md +17 -0
  319. package/rules/navigator/multiple-locator.md +47 -0
  320. package/rules/navigator/output.md +69 -0
  321. package/rules/navigator/verification-actions.md +122 -0
  322. package/rules/navigator/verification-output.md +53 -0
  323. package/rules/planner/styles/curious.md +39 -0
  324. package/rules/planner/styles/normal.md +21 -0
  325. package/rules/planner/styles/psycho.md +14 -0
  326. package/rules/researcher/list-element.md +11 -0
  327. package/rules/researcher/screenshot-ui-map.md +30 -0
  328. package/rules/researcher/section-ui-map.md +18 -0
  329. package/rules/researcher/ui-map-table.md +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher.js","sourceRoot":"","sources":["../../../src/ai/researcher.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAiB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAA0B,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAA4B,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAuB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,QAAQ,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,sDAAsD;IAC/D,IAAI,EAAE,0DAA0D;IAChE,MAAM,EAAE,qDAAqD;IAC7D,KAAK,EAAE,sDAAsD;IAC7D,OAAO,EAAE,mBAAmB;IAC5B,IAAI,EAAE,0DAA0D;IAChE,UAAU,EAAE,iDAAiD;CAC9D,CAAC;AAEF,MAAM,cAAc,GAAG,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,SAAyD,CAAC,CAAC,CAAC,CAAC;AAIlI,MAAM,OAAO,UAAW,SAAQ,cAAc;IACzB,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,GAAG,IAAI,CAAC;IAIL,iBAAiB,CAAqB;IACtC,sBAAsB,GAAG,KAAK,CAAC;IAE/B,WAAW,CAAe;IAElC,YAAY,QAAkB,EAAE,QAAkB;QAChD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAES,YAAY;QACpB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAES,oBAAoB;QAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IAC7C,CAAC;IAES,WAAW;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAmB;QAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACrF,OAAO,MAAM,CAAA;;;;;;;;;MASX,YAAY,IAAI,EAAE;KACnB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAmB,EAAE,OAAuJ,EAAE;QAC3L,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC3F,MAAM,UAAU,GAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAkB,EAAE,OAAO,IAAI,CAAC,CAAC;QAC3F,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAEjE,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,gCAAgC,CAAC,CAAC;gBAC3C,OAAO,wGAAwG,MAAM,EAAE,CAAC;YAC1H,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,EAAE,CAAC;QAEnB,MAAM,WAAW,GAAG,eAAe,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;YAC/F,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,+BAA+B,CAAC,CAAC;YACzE,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/E,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAE9D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9D,QAAQ,CAAC,aAAa,cAAc,iCAAiC,CAAC,CAAC;YACvE,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAExI,IAAI,WAAW,CAAC,IAAI,CAAC,YAAa,CAAC,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC1D,OAAO,MAAM,CAAA;;;mBAGJ,KAAK,CAAC,GAAG;qBACP,IAAI,CAAC,YAAa,CAAC,KAAK,IAAI,KAAK;;;WAG3C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,YAAa,CAAC,GAAG,CAAC,CAAC;YAE1D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,YAAY,EAAE,CAAC;YAE7D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACxD,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;oBACjE,IAAI,SAAS;wBAAE,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;oBAC9D,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrD,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,sBAAsB,CAAC,CAAC;oBAC/E,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7D,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAa,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC;YACzG,IAAI,CAAC,sBAAsB,GAAG,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,gBAAgB,CAAC;YAE1F,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,YAAY,CAAC,CAAC;YAE5F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEjC,IAAI,gBAA8E,CAAC;YACnF,IAAI,CAAC;gBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;YAClH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;oBAC/D,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;wBACxC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;oBAC9G,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;gBAC9E,WAAW,GAAG,CAAC,CAAC;gBAChB,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;gBACzD,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;YAClH,CAAC;YACD,IAAI,CAAC,gBAAgB;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7E,QAAQ,CAAC,sCAAsC,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;YAE3E,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC9E,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;wBAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnF,CAAC;oBACD,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7D,IAAI,SAAS;wBAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBACpD,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7D,OAAO,MAAM,CAAC,IAAI,CAAC;gBACrB,CAAC;gBACD,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;YAE9D,sCAAsC;YACtC,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,QAAQ,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAEvE,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,0CAA0C,UAAU,GAAG,WAAW,GAAG,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;gBAC/G,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,EAAS,CAAC,CAAC;YAC9F,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC;gBAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACvC,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACxE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpG,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,aAAa,CAAC,MAAM,0CAA0C,UAAU,GAAG,WAAW,GAAG,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;oBAC1I,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,EAAS,CAAC,CAAC;gBAC9F,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClC,IAAI,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/E,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;wBAClB,GAAG,CAAC,KAAK,GAAG,kBAAkB,CAAC;oBACjC,CAAC;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAEhC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;gBAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1F,IAAI,WAAW,GAAG,GAAG,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,wDAAwD,UAAU,GAAG,WAAW,GAAG,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC;oBAC7J,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,EAAS,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YAED,4DAA4D;YAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC9D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrD,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC/D,MAAM,WAAW,GAAG,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAChE,IAAI,WAAW;oBAAE,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC7D,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;gBACpD,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC9F,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,yBAAyB,EAAE,CAAC;gBACnF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBAClE,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC1D,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;oBACpE,MAAM,KAAK,GAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,YAAY,CAAC,WAAW;wBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBACvE,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;oBACpF,MAAM,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxD,CAAC;gBAED,mCAAmC;gBACnC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;oBACnE,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAED,kCAAkC;YAClC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,QAAQ;oBAAE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,IAAI,kBAAkB,aAAa,EAAE,CAAC;YACnD,CAAC;YAED,IAAI,WAAW,EAAE,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,IAAI,YAAY,GAAkB,IAAI,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAChF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/E,IAAI,WAAW;oBAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAa,EAAE,WAAW,CAAC,CAAC;YACzF,CAAC;YAED,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACtG,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;YAC1E,IAAI,YAAY;gBAAE,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC9E,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,UAAoB;QAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,QAAQ,CAAC,qCAAqC,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3G,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC;QACxG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;gBACrF,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7G,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,qCAAqC,CAAC,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,yCAAyC,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;IACtH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,UAAmB;QAC/C,MAAM,gBAAgB,GAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAkB,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAC3G,IAAI,gBAAgB,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,SAAS,CACb,KAAK,IAAI,EAAE;gBACT,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACvC,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBACtE,iBAAiB,EAAE,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;iBAC3D,CAAC,CAAC;gBACH,IAAI,WAAW,CAAC,IAAI,CAAC,YAAa,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC9E,CAAC,EACD;gBACE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC;gBAChD,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,qBAAqB;aAC3D,CACF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,cAAc,GAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAkB,EAAE,QAAgC,CAAC;QACnH,IAAI,CAAC,cAAc,EAAE,MAAM;YAAE,OAAO,iBAAiB,CAAC;QACtD,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,GAAG,IAAI,iBAAiB;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAqC,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACzE,CAAC;IAEO,aAAa;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;QAuBT,sBAAsB;;QAEtB,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;;;;QAIrH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,WAAW,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8Dd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;QAEhE,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,cAAc;iBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClB,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,cAAc,CAAC,MAAM,uBAAuB,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;YAClJ,SAAS,GAAG;;;;UAIR,gBAAgB;gBACV,CAAC;QACb,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QAExD,OAAO,MAAM,CAAA;;;;;;;;;;;;;;QAcT,IAAI,CAAC,aAAa,EAAE;;aAEf,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,SAAS;eAChC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS;;;;;;;;;QAS3C,IAAI;;QAEJ,YAAY,CAAC,CAAC,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;QAGjD,SAAS;;;;;;;gDAO+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAwB/F,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,OAAO,MAAM,CAAA;;;;;KAKZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAmB;QACnC,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;QAmBjB,IAAI;;KAEP,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAE3J,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAEO,sBAAsB,CAAC,KAAmB;QAChD,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAmB,EAAE,kBAA0B;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAA;;;;;;mDAM0B,kBAAkB;;;;;;;;;;;;;eAatD,YAAY,CAAC,GAAG,IAAI,SAAS;iBAC3B,YAAY,CAAC,KAAK,IAAI,SAAS;;;SAGvC,CAAC;QAEN,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,KAAmB,EAAE,QAAgB;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAA;;;;;;qEAM4C,QAAQ;;;;;;;;;;;;;;aAchE,YAAY,CAAC,GAAG,IAAI,SAAS;eAC3B,YAAY,CAAC,KAAK,IAAI,SAAS;;;OAGvC,CAAC;QAEJ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAmB;QACnC,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA4DZ,YAAY,CAAC,GAAG,IAAI,SAAS;eAC3B,YAAY,CAAC,KAAK,IAAI,SAAS;;;QAGtC,IAAI;KACP,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAE3J,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB,EAAE,OAAuC,EAAE;QAC1E,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAC1C,IAAI,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC;YACtC,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,YAAoB;QAC/B,OAAO,GAAG,CAAC,YAAY,CAAC;aACrB,KAAK,CAAC,UAAU,CAAC;aACjB,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,CAAC;iBACf,KAAK,CAAC,OAAO,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,SAAS;oBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE5C,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC;YAAE,OAAO;QAErG,MAAM,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,368 @@
1
+ import dedent from 'dedent';
2
+ export const recommendedCodeceptCommands = ['I.click', 'I.type', 'I.fillField', 'I.see', 'I.seeElement'];
3
+ export const locatorRule = dedent `
4
+ <locator_priority>
5
+ Use the following priority when selecting locators:
6
+
7
+ 1. ARIA locators (first choice) - target browser's accessibility tree, most reliable
8
+ Use JSON format: { "role": "button", "text": "Login" }
9
+ Best for: buttons, links, inputs, form controls, dropdowns, checkboxes, radio buttons
10
+
11
+ 2. Text locators (second choice) - use only when text is unique on the page
12
+ Example: 'Login', 'Submit', 'Username'
13
+ Skip if the same text appears multiple times on the page
14
+
15
+ 3. CSS selectors (third choice) - when ARIA/text don't work
16
+ Prefer semantic attributes: id, name, data-testid, aria-label, placeholder
17
+ Example: '#login-btn', '[data-testid="submit"]', 'form#login input[name="email"]'
18
+
19
+ 4. XPath (last resort) - for complex hierarchy or when CSS can't express the path
20
+ Always start with //, never use positional indices like [1], [2]
21
+ Example: '//form[@id="login"]//input[@name="email"]'
22
+ </locator_priority>
23
+
24
+ <context_simplification>
25
+ When container is available from UI map sections:
26
+ - Text + container is simplest and PREFERRED: I.click('Save', '.modal')
27
+ - ARIA + container for disambiguation: I.click({"role":"button","text":"Save"}, '.modal')
28
+ - ALWAYS use context parameter unless locator is XPath or unique ID
29
+ - No need for complex ARIA when container narrows scope sufficiently
30
+ </context_simplification>
31
+
32
+ <disambiguation>
33
+ When multiple elements could match the request, select based on intent:
34
+ 1. Match the context of recent actions - if filling a form, use elements in that same form
35
+ 2. Follow form flow - forms are filled top-to-bottom, left-to-right
36
+ - If you just filled a field, the next target is likely below/after it in the DOM
37
+ 3. Use ARIA snapshot to identify element state (focused, visible, selected, expanded, etc.)
38
+ 4. Match semantic proximity - elements near fields you just interacted with
39
+
40
+ Once the correct element is identified pick the best unique locator following priority: ARIA → CSS → XPath
41
+ </disambiguation>
42
+
43
+ ARIA locators must specify role. Specify locator type as JSON string with role and text keys.
44
+
45
+ For icon-only buttons/links with no visible text:
46
+ - Use aria-label value if present: { "role": "button", "text": "Close" } (from aria-label="Close")
47
+ - Use title attribute if present: { "role": "button", "text": "Settings" } (from title="Settings")
48
+ - If no accessible name exists, mark ARIA as "-" and use CSS/XPath:
49
+ * CSS: use partial href a[href*="settings"] or SVG icon class a:has(svg.md-icon-cog)
50
+ * XPath: use contains(@href,"settings") or SVG class //a[.//svg[contains(@class,"md-icon-cog")]]
51
+ - NEVER use empty text: { "role": "button", "text": "" } is INVALID and useless
52
+
53
+ <good_aria_locator_example>
54
+ { "role": "button", "text": "Login" },
55
+ { "role": "input", "text": "Name" },
56
+ { "role": "link", "text": "Forgot your password?" },
57
+ { "role": "link", "text": "Sign Up" },
58
+ { "role": "button", "text": "Sign In" },
59
+ { "role": "button", "text": "Submit" },
60
+ { "role": "button", "text": "Cancel" },
61
+ { "role": "button", "text": "Close" } // from aria-label
62
+ </good_aria_locator_example>
63
+
64
+ <bad_aria_locator_example>
65
+ { "role": "button", "text": "" } // INVALID - empty text is useless, use "-" instead
66
+ { "role": "button", "name": "Save" } // WRONG key - use "text", not "name"
67
+ </bad_aria_locator_example>
68
+
69
+ NEVER include \`eidx\` attribute in any locator (ARIA, CSS, XPath). It is an internal annotation.
70
+
71
+ If <aria> section is not present or element is not found there, fall back to CSS/XPath locators from <html> section.
72
+
73
+ Stick to semantic attributes like role, aria-*, id, class, name, data-id, etc.
74
+ Avoid IDs that follow framework auto-generation patterns (these change on every page load):
75
+ - Ember: #ember123, #ember-basic-dropdown-content-ember456
76
+ - React: #react-select-*, #rc-*
77
+ - Angular: #ng-*, #cdk-*, #mat-*
78
+ - Vue: data-v-* attributes
79
+ Avoid locators that seem to have generated ids or class names (long random numbers, uuids, hashes, etc)
80
+ Prefer text or ARIA locators over href-based ones. But for icon-only links with no accessible name, use:
81
+ - Partial href match: a[href*="settings"], a[href*="requirements"] (use path segments, not full URLs)
82
+ - SVG icon class: a:has(svg.md-icon-cog), button:has(svg.md-icon-plus) (target the SVG class inside the link/button)
83
+ Avoid full absolute href like a[href="/projects/imr_manual12/settings"] — use generic path segments instead
84
+ Avoid CSS framework utility classes as containers (Tailwind: flex, grid, space-x-*, justify-*, items-*, w-*, h-*, p-*, m-*, etc; Bootstrap: col-*, row, d-flex, etc)
85
+ Prefer semantic class names, roles, data attributes, or element hierarchy for containers
86
+
87
+ <css_rules>
88
+ CSS selectors must use semantic attributes and :has-text("text") for disambiguation.
89
+ ALLOWED: :has-text("text") pseudo class for matching elements by visible text.
90
+ DO NOT use positional pseudo classes in CSS: :nth-of-type, :nth-child, :first, :last, :nth-last-child, :only-child, :only-of-type, :empty, :not, etc.
91
+ </css_rules>
92
+
93
+ <xpath_rules>
94
+ XPath locators must start with //.
95
+ XPath should use positional indices [1], [2], [3] and contains(., "text") for disambiguation.
96
+ XPath should rely less on class names — prefer element hierarchy, position, and text content.
97
+ XPath and CSS MUST provide different strategies for finding the same element.
98
+ </xpath_rules>
99
+
100
+ <good locator example>
101
+ 'div[role=input][placeholder="Name"]'
102
+ '[aria-label="Name"]'
103
+ 'form#user_form input[name="name"]'
104
+ '#content-top #user_name'
105
+ '#content-top form input[name="name"]'
106
+ 'a.nav-item[href*="settings"]' // icon-only link matched by partial href
107
+ 'a.nav-item:has(svg.md-icon-cog)' // icon-only link matched by SVG icon class
108
+ '//nav//a[contains(@href,"settings")]' // XPath for icon-only nav link
109
+ </good locator example>
110
+
111
+ <bad locator example>
112
+ 'a.filter-tab:nth-of-type(1)' // WRONG: positional in CSS, use :has-text("Manual") instead
113
+ '//a[contains(@class,"filter-tab") and contains(@class,"active")]' // WRONG: XPath repeats CSS approach, use positional //a[contains(@class,"filter-tab")][1]
114
+ '//table//tbody/tr[1]//button[contains(@onclick,'fn()')]' // onclick is not semantic attribute
115
+ '//html/body/vue-button-123' // vue-framework specific locator
116
+ 'link "New Template"' // WRONG: malformed string, use {"role":"link","text":"New Template"}
117
+ 'a[href="/projects/imr_manual12/settings"]' // WRONG: full absolute href, use a[href*="settings"] instead
118
+ </bad locator example>
119
+
120
+ HTML locators must be valid JS strings
121
+ `;
122
+ export const fileUploadRule = dedent `
123
+ <file_upload>
124
+ Explorbot CAN upload files using I.attachFile() via form() tool.
125
+ When a test scenario involves file uploading, use the available sample files listed in <available_files>.
126
+ Use I.attachFile(locator, filePath) where locator points to an input[type="file"] element.
127
+ Works with drag-and-drop upload zones.
128
+ </file_upload>
129
+ `;
130
+ // in rage mode we do not protect from irreversible actions
131
+ export const protectionRule = dedent `
132
+ <important>
133
+ Do not sign out current user of the application.
134
+ Do not change current user account settings
135
+ </important>
136
+ `;
137
+ export const focusedElementRule = dedent `
138
+ <focused_element_actions>
139
+ When a text input element is focused (textbox, combobox, contenteditable):
140
+
141
+ To CLEAR the field before typing:
142
+ - I.pressKey(['Meta', 'a']); // Select all (use 'Control' on Windows/Linux)
143
+ - I.pressKey('Backspace'); // Delete selection
144
+
145
+ To TYPE into the focused element:
146
+ - I.type('text to enter'); // Types into currently focused element
147
+
148
+ For comboboxes/dropdowns:
149
+ - I.type('search text'); // Filter options by typing
150
+ - I.pressKey('Enter'); // Select highlighted option
151
+
152
+ IMPORTANT: type() works WITHOUT a locator when element is already focused.
153
+ If focus is on wrong element, click the correct field first.
154
+ </focused_element_actions>
155
+ `;
156
+ export const sectionContextRule = dedent `
157
+ <section_context_rule>
158
+ Context parameter is DEFAULT for all interactions. ALWAYS use container from UI map sections unless locator is XPath or unique ID.
159
+
160
+ 1. Identify which section contains the target element
161
+ 2. Get the Context Locator from that section in the UI map
162
+ 3. Pass container as the last parameter
163
+
164
+ Context works with ALL interaction methods:
165
+ - I.click('Submit', '.modal-content')
166
+ - I.click({"role":"button","text":"Save"}, '.main')
167
+ - I.fillField('Username', 'admin', '.login-form')
168
+ - I.selectOption('Country', 'USA', '.address-section')
169
+ - I.attachFile('input[type="file"]', 'path/to/file', '.upload-section')
170
+ - I.seeInField('Email', 'john@example.com', '.profile-form')
171
+ - I.dontSeeInField('Password', '', '.login-form')
172
+
173
+ For CSS locators - prepend section context:
174
+ - I.click('.main button.submit') // instead of I.click('button.submit')
175
+
176
+ Only omit context when:
177
+ - Locator is XPath (already includes path context)
178
+ - Locator is a unique ID (#specific-element)
179
+ </section_context_rule>
180
+
181
+ <unexpected_popup_rule>
182
+ If a modal/popup appeared that you didn't expect, dismiss it first before continuing with original task.
183
+ If elements become hidden or unclickable (timeout errors on visible elements), a dialog or overlay may have appeared on top.
184
+ If buttons are disabled unexpectedly, check if a popup is blocking interaction or if required form fields are empty.
185
+
186
+ Dismiss strategy (try in order):
187
+ 1. I.clickXY(0, 0) — click outside the popup to close it
188
+ 2. I.pressKey('Escape') — press Escape to dismiss
189
+ 3. I.click('Cancel') — click Cancel button if present
190
+ 4. I.click({ role: 'button', text: 'Close' }) — click X/close button if present
191
+ </unexpected_popup_rule>
192
+ `;
193
+ export function multipleTabsRule(tabs) {
194
+ const tabsList = tabs.map((tab, i) => ` ${i + 1}. ${tab.title} - ${tab.url}`).join('\n');
195
+ return dedent `
196
+ <multiple_tabs_warning>
197
+ ⚠️ MULTIPLE BROWSER TABS DETECTED!
198
+
199
+ Other open tabs:
200
+ ${tabsList}
201
+
202
+ You MUST handle these tabs before continuing:
203
+
204
+ Option 1 - If the other tab(s) are NOT needed (external docs, popups, etc.):
205
+ \`\`\`js
206
+ I.closeOtherTabs();
207
+ \`\`\`
208
+
209
+ Option 2 - If you need content from another tab:
210
+ \`\`\`js
211
+ I.switchToNextTab(); // switch to the next tab
212
+ // ... interact with that tab ...
213
+ I.closeOtherTabs(); // then close other tabs
214
+ \`\`\`
215
+
216
+ IMPORTANT: Always close extra tabs to avoid confusion. Multiple tabs can cause test failures.
217
+ </multiple_tabs_warning>
218
+ `;
219
+ }
220
+ export const actionRule = dedent `
221
+ <actions>
222
+ ### I.click
223
+
224
+ clicks on the element by its locator
225
+
226
+ I.click(<locator>, <context_locator>)
227
+
228
+ locators can be ARIA, CSS, or XPath locators.
229
+ Prefer ARIA locators as the main argument, use CSS/XPath only when ARIA is not available.
230
+
231
+ Use context parameter (second argument) to narrow click area when:
232
+ - The same text/button appears multiple times on page
233
+ - You need to click inside a specific form, modal, or section
234
+ Context should be a CSS selector pointing to a unique container.
235
+
236
+ <example>
237
+ I.click('Submit', '#login-form');
238
+ I.click('Button', '.sidebar');
239
+ I.click({ role: 'button', text: 'Button' }, '.sidebar');
240
+ I.click({ role: 'combobox', text: 'Select age' }, '.settings-panel');
241
+ I.click('.sidebar .button');
242
+ I.click('//form[@id="login"]//button');
243
+ </example>
244
+
245
+ Prefer text/ARIA locators with context over complex CSS/XPath selectors.
246
+ If locator doesn't work, try CSS or XPath locators.
247
+ If nothing works, use I.clickXY(x, y) as last resort.
248
+
249
+
250
+ ### I.fillField
251
+
252
+ fills the field with the given value
253
+
254
+ I.fillField(<locator>, <text>, <context>)
255
+
256
+ <example>
257
+ I.fillField('Username', 'John', '.login-form'); // fills Username inside .login-form
258
+ I.fillField('Username', 'John'); // fills the field located by name or placeholder or label "Username" with the text "John"
259
+ I.fillField('//user/input', 'John'); // fills the field located by XPath "//user/input" with the text "John"
260
+ </example>
261
+
262
+ ### I.type
263
+
264
+ Types text into the currently focused element. Use when fillField doesn't work,
265
+ for instance, for highly customized input fields like Monaco editors or rich text editors.
266
+
267
+ I.type(<text>)
268
+
269
+ <example>
270
+ I.type('John'); // types the text "John" into the active element
271
+ </example>
272
+
273
+ IMPORTANT: Requires an active/focused input field. Click the field first if not focused.
274
+ DOES NOT receive any locator, just text to type.
275
+ NEVER write: I.type('text', locator) or I.type('text', {locator: '...'}) — this is INVALID.
276
+ To type into a specific field: use I.fillField(locator, text) or I.click(locator) then I.type(text).
277
+
278
+ ### I.pressKey
279
+
280
+ Sends keyboard key presses to the browser. Use for special keys or key combinations.
281
+
282
+ I.pressKey(<key>)
283
+ I.pressKey([<modifier>, <key>])
284
+
285
+ <example>
286
+ I.pressKey('Enter'); // Press Enter key
287
+ I.pressKey('Escape'); // Press Escape key
288
+ I.pressKey('Tab'); // Press Tab key
289
+ I.pressKey('Backspace'); // Press Backspace key
290
+ I.pressKey(['Control', 'a']); // Select all (Ctrl+A)
291
+ I.pressKey(['Meta', 'a']); // Select all on Mac (Cmd+A)
292
+ I.pressKey(['Shift', 'Tab']); // Shift+Tab to go back
293
+ I.pressKey('ArrowDown'); // Navigate dropdown options
294
+ </example>
295
+
296
+ IMPORTANT: Requires an active/focused element for most keys.
297
+ Commonly used after I.type() to submit forms or navigate dropdowns.
298
+
299
+ ### I.switchTo
300
+
301
+ Switches browser context to/from an iframe.
302
+
303
+ I.switchTo(<locator>) - switch INTO an iframe
304
+ I.switchTo() - switch back to MAIN page (exit iframe)
305
+
306
+ <example>
307
+ I.switchTo('#payment-iframe'); // Enter iframe
308
+ I.fillField('Card', '4242'); // Interact inside iframe
309
+ I.switchTo(); // Exit back to main page
310
+ </example>
311
+
312
+ IMPORTANT: When inside an iframe, you can only interact with elements inside that iframe.
313
+ Call I.switchTo() without arguments to exit the iframe before interacting with main page elements.
314
+
315
+ ### I.selectOption
316
+
317
+ In case you deal with select elements, use selectOption instead of fillField.
318
+
319
+ I.selectOption(<locator>, <value>, <context>)
320
+
321
+ <example>
322
+ I.selectOption('Choose Plan', 'Monthly', '.billing-section'); // select inside section
323
+ I.selectOption('Choose Plan', 'Monthly'); // select by label
324
+ I.selectOption('subscription', 'Monthly'); // match option by text
325
+ I.selectOption('//form/select[@name=account]','Premium');
326
+ I.selectOption('form select[name=account]', 'Premium');
327
+ </example>
328
+
329
+ ### I.attachFile
330
+
331
+ Attaches a file to a file input element.
332
+
333
+ I.attachFile(<locator>, <filePath>, <context>)
334
+
335
+ <example>
336
+ I.attachFile('input[type="file"]', 'path/to/sample.png', '.upload-section')
337
+ I.attachFile('input[type="file"]', 'path/to/sample.png')
338
+ I.attachFile('#file-upload', 'path/to/sample.pdf')
339
+ </example>
340
+
341
+ IMPORTANT: Only works with input[type="file"] elements.
342
+ The locator must point to a file input or a label associated with one.
343
+ Use file paths exactly as listed in <available_files>.
344
+ For drag-and-drop upload zones, look for a hidden input[type="file"] inside the dropzone container.
345
+ Use the file paths from <available_files> section.
346
+
347
+ ### I.moveCursorTo
348
+
349
+ Moves the mouse cursor to an element, triggering hover effects. Does NOT click.
350
+ Use to discover hover-triggered UI: tooltips, popovers, dropdown menus, preview cards.
351
+
352
+ I.moveCursorTo(<locator>, <context>)
353
+
354
+ <example>
355
+ I.moveCursorTo('Settings');
356
+ I.moveCursorTo({ role: 'menuitem', text: 'Products' }, '.navigation');
357
+ I.moveCursorTo('.user-avatar');
358
+ </example>
359
+
360
+ After hovering, use see() or context() to check what appeared.
361
+
362
+ [DO NEVER USE OTHER CODECEPTJS COMMANDS THAN PROPOSED HERE]
363
+ [INTERACT ONLY WITH ELEMENTS THAT ARE ON THE PAGE HTML]
364
+ [DO NOT USE WAIT FUNCTIONS]
365
+
366
+ </actions>
367
+ `;
368
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/ai/rules.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,CAAU,CAAC;AAElH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHhC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;;;;;;;CAOnC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;;;;;CAKnC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;CAkBvC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCvC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAA2C;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1F,OAAO,MAAM,CAAA;;;;;MAKT,QAAQ;;;;;;;;;;;;;;;;;;GAkBX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmJ7B,CAAC"}
@@ -0,0 +1,110 @@
1
+ import dedent from 'dedent';
2
+ import { createDebug, pluralize, tag } from '../utils/logger.js';
3
+ const debugLog = createDebug('explorbot:task-agent');
4
+ export function isInteractive() {
5
+ return process.env.INK_RUNNING === 'true';
6
+ }
7
+ function createNullProxy() {
8
+ return new Proxy({}, {
9
+ get: () => async () => { },
10
+ });
11
+ }
12
+ export class TaskAgent {
13
+ consecutiveFailures = 0;
14
+ consecutiveEmptyResults = 0;
15
+ recentToolCalls = [];
16
+ _historian = null;
17
+ _quartermaster = null;
18
+ getKnowledge(actionResult) {
19
+ const knowledgeFiles = this.getKnowledgeTracker().getRelevantKnowledge(actionResult);
20
+ if (knowledgeFiles.length === 0)
21
+ return '';
22
+ const knowledgeContent = knowledgeFiles
23
+ .map((k) => k.content)
24
+ .filter((k) => !!k)
25
+ .join('\n\n');
26
+ tag('substep').log(`Found ${knowledgeFiles.length} relevant knowledge ${pluralize(knowledgeFiles.length, 'file')}`);
27
+ return dedent `
28
+ <knowledge>
29
+ Here is relevant knowledge for this page:
30
+
31
+ ${knowledgeContent}
32
+ </knowledge>
33
+ `;
34
+ }
35
+ getExperience(actionResult) {
36
+ const tracker = this.getExperienceTracker();
37
+ const relevantExperience = tracker.getRelevantExperience(actionResult);
38
+ if (relevantExperience.length === 0)
39
+ return '';
40
+ const allContent = relevantExperience
41
+ .map((e) => e.content)
42
+ .filter((e) => !!e)
43
+ .join('\n\n---\n\n');
44
+ const totalChars = allContent.length;
45
+ let experienceContent;
46
+ if (totalChars <= 10_000) {
47
+ debugLog(`injecting all experience (${Math.round(totalChars / 1000)}k chars)`);
48
+ experienceContent = allContent;
49
+ }
50
+ else {
51
+ experienceContent = tracker.getSuccessfulExperience(actionResult).join('\n\n---\n\n');
52
+ debugLog(`injecting success-only experience (${Math.round(experienceContent.length / 1000)}k chars, filtered from ${Math.round(totalChars / 1000)}k)`);
53
+ }
54
+ if (!experienceContent)
55
+ return '';
56
+ tag('substep').log(`Found ${relevantExperience.length} experience ${pluralize(relevantExperience.length, 'file')}`);
57
+ return dedent `
58
+ <experience>
59
+ Here is past experience of interacting with this page.
60
+ Use successful solutions first. Avoid repeating failed actions.
61
+
62
+ ${experienceContent}
63
+ </experience>
64
+ `;
65
+ }
66
+ setHistorian(historian) {
67
+ this._historian = historian;
68
+ }
69
+ getHistorian() {
70
+ if (this._historian)
71
+ return this._historian;
72
+ return createNullProxy();
73
+ }
74
+ setQuartermaster(quartermaster) {
75
+ this._quartermaster = quartermaster;
76
+ }
77
+ getQuartermaster() {
78
+ if (this._quartermaster)
79
+ return this._quartermaster;
80
+ return createNullProxy();
81
+ }
82
+ trackToolExecutions(toolExecutions) {
83
+ if (toolExecutions.length === 0) {
84
+ this.consecutiveEmptyResults++;
85
+ return;
86
+ }
87
+ this.consecutiveEmptyResults = 0;
88
+ const failedActions = toolExecutions.filter((e) => !e.wasSuccessful && this.ACTION_TOOLS.includes(e.toolName));
89
+ const successActions = toolExecutions.filter((e) => e.wasSuccessful && this.ACTION_TOOLS.includes(e.toolName));
90
+ const hasAnyActionTool = toolExecutions.some((e) => this.ACTION_TOOLS.includes(e.toolName));
91
+ if (hasAnyActionTool) {
92
+ this.recentToolCalls.push(...toolExecutions);
93
+ if (this.recentToolCalls.length > 20) {
94
+ this.recentToolCalls = this.recentToolCalls.slice(-20);
95
+ }
96
+ }
97
+ if (failedActions.length > 0) {
98
+ this.consecutiveFailures += failedActions.length;
99
+ }
100
+ if (successActions.length > 0) {
101
+ this.consecutiveFailures = 0;
102
+ }
103
+ }
104
+ resetFailureCount() {
105
+ this.consecutiveFailures = 0;
106
+ this.consecutiveEmptyResults = 0;
107
+ this.recentToolCalls = [];
108
+ }
109
+ }
110
+ //# sourceMappingURL=task-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-agent.js","sourceRoot":"","sources":["../../../src/ai/task-agent.ts"],"names":[],"mappings":"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"}