funolio-agent 1.0.53 → 1.1.65

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 (276) hide show
  1. package/dist/approval.d.ts +1 -6
  2. package/dist/approval.d.ts.map +1 -1
  3. package/dist/approval.js +2 -7
  4. package/dist/approval.js.map +1 -1
  5. package/dist/auth/credential-reader.d.ts.map +1 -1
  6. package/dist/auth/credential-reader.js +4 -3
  7. package/dist/auth/credential-reader.js.map +1 -1
  8. package/dist/auth/token-refresh.d.ts +8 -0
  9. package/dist/auth/token-refresh.d.ts.map +1 -1
  10. package/dist/auth/token-refresh.js +82 -52
  11. package/dist/auth/token-refresh.js.map +1 -1
  12. package/dist/auto-organizer.d.ts.map +1 -1
  13. package/dist/auto-organizer.js +6 -7
  14. package/dist/auto-organizer.js.map +1 -1
  15. package/dist/bench-prefix.d.ts +16 -0
  16. package/dist/bench-prefix.d.ts.map +1 -0
  17. package/dist/bench-prefix.js +25 -0
  18. package/dist/bench-prefix.js.map +1 -0
  19. package/dist/bot-manager.d.ts +5 -1
  20. package/dist/bot-manager.d.ts.map +1 -1
  21. package/dist/bot-manager.js +46 -27
  22. package/dist/bot-manager.js.map +1 -1
  23. package/dist/chat-sync.d.ts +42 -0
  24. package/dist/chat-sync.d.ts.map +1 -0
  25. package/dist/chat-sync.js +95 -0
  26. package/dist/chat-sync.js.map +1 -0
  27. package/dist/clerk-model.d.ts +7 -0
  28. package/dist/clerk-model.d.ts.map +1 -1
  29. package/dist/clerk-model.js +42 -8
  30. package/dist/clerk-model.js.map +1 -1
  31. package/dist/cli-bootstrap-history.d.ts +10 -0
  32. package/dist/cli-bootstrap-history.d.ts.map +1 -0
  33. package/dist/cli-bootstrap-history.js +112 -0
  34. package/dist/cli-bootstrap-history.js.map +1 -0
  35. package/dist/cli-models.d.ts +8 -0
  36. package/dist/cli-models.d.ts.map +1 -0
  37. package/dist/cli-models.js +91 -0
  38. package/dist/cli-models.js.map +1 -0
  39. package/dist/cli-session-epoch.d.ts +13 -3
  40. package/dist/cli-session-epoch.d.ts.map +1 -1
  41. package/dist/cli-session-epoch.js +53 -4
  42. package/dist/cli-session-epoch.js.map +1 -1
  43. package/dist/cli-session-registry.d.ts +35 -0
  44. package/dist/cli-session-registry.d.ts.map +1 -0
  45. package/dist/cli-session-registry.js +177 -0
  46. package/dist/cli-session-registry.js.map +1 -0
  47. package/dist/cli.js +62 -0
  48. package/dist/cli.js.map +1 -1
  49. package/dist/codex-app-server-manager.d.ts +189 -0
  50. package/dist/codex-app-server-manager.d.ts.map +1 -0
  51. package/dist/codex-app-server-manager.js +1468 -0
  52. package/dist/codex-app-server-manager.js.map +1 -0
  53. package/dist/commands/init.d.ts.map +1 -1
  54. package/dist/commands/init.js +8 -30
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/pool.d.ts +32 -0
  57. package/dist/commands/pool.d.ts.map +1 -1
  58. package/dist/commands/pool.js +145 -66
  59. package/dist/commands/pool.js.map +1 -1
  60. package/dist/commands/setup.d.ts +4 -1
  61. package/dist/commands/setup.d.ts.map +1 -1
  62. package/dist/commands/setup.js +9 -25
  63. package/dist/commands/setup.js.map +1 -1
  64. package/dist/commands/start.d.ts +21 -0
  65. package/dist/commands/start.d.ts.map +1 -1
  66. package/dist/commands/start.js +559 -63
  67. package/dist/commands/start.js.map +1 -1
  68. package/dist/commands/status.d.ts.map +1 -1
  69. package/dist/commands/status.js +5 -2
  70. package/dist/commands/status.js.map +1 -1
  71. package/dist/completion-marker.d.ts +7 -0
  72. package/dist/completion-marker.d.ts.map +1 -0
  73. package/dist/completion-marker.js +28 -0
  74. package/dist/completion-marker.js.map +1 -0
  75. package/dist/config.d.ts +7 -2
  76. package/dist/config.d.ts.map +1 -1
  77. package/dist/config.js +184 -60
  78. package/dist/config.js.map +1 -1
  79. package/dist/context-window.d.ts +37 -1
  80. package/dist/context-window.d.ts.map +1 -1
  81. package/dist/context-window.js +210 -17
  82. package/dist/context-window.js.map +1 -1
  83. package/dist/live-activity.d.ts +31 -0
  84. package/dist/live-activity.d.ts.map +1 -0
  85. package/dist/live-activity.js +36 -0
  86. package/dist/live-activity.js.map +1 -0
  87. package/dist/local-chat-execution.d.ts +114 -0
  88. package/dist/local-chat-execution.d.ts.map +1 -0
  89. package/dist/local-chat-execution.js +349 -0
  90. package/dist/local-chat-execution.js.map +1 -0
  91. package/dist/local-cli-pty-manager.d.ts +186 -0
  92. package/dist/local-cli-pty-manager.d.ts.map +1 -1
  93. package/dist/local-cli-pty-manager.js +2581 -164
  94. package/dist/local-cli-pty-manager.js.map +1 -1
  95. package/dist/local-conversation-gateway.d.ts +110 -0
  96. package/dist/local-conversation-gateway.d.ts.map +1 -0
  97. package/dist/local-conversation-gateway.js +175 -0
  98. package/dist/local-conversation-gateway.js.map +1 -0
  99. package/dist/local-data.d.ts +276 -5
  100. package/dist/local-data.d.ts.map +1 -1
  101. package/dist/local-data.js +1201 -86
  102. package/dist/local-data.js.map +1 -1
  103. package/dist/local-db.d.ts +6 -0
  104. package/dist/local-db.d.ts.map +1 -1
  105. package/dist/local-db.js +428 -2
  106. package/dist/local-db.js.map +1 -1
  107. package/dist/local-funnel.d.ts.map +1 -1
  108. package/dist/local-funnel.js +6 -5
  109. package/dist/local-funnel.js.map +1 -1
  110. package/dist/local-server.d.ts +55 -0
  111. package/dist/local-server.d.ts.map +1 -1
  112. package/dist/local-server.js +3281 -441
  113. package/dist/local-server.js.map +1 -1
  114. package/dist/managed-process-registry.d.ts +59 -0
  115. package/dist/managed-process-registry.d.ts.map +1 -0
  116. package/dist/managed-process-registry.js +390 -0
  117. package/dist/managed-process-registry.js.map +1 -0
  118. package/dist/mcp/claude-config-writer.d.ts +5 -5
  119. package/dist/mcp/claude-config-writer.d.ts.map +1 -1
  120. package/dist/mcp/claude-config-writer.js +19 -11
  121. package/dist/mcp/claude-config-writer.js.map +1 -1
  122. package/dist/mcp/index.d.ts +4 -2
  123. package/dist/mcp/index.d.ts.map +1 -1
  124. package/dist/mcp/index.js.map +1 -1
  125. package/dist/mcp/sync-cli-config.d.ts +42 -4
  126. package/dist/mcp/sync-cli-config.d.ts.map +1 -1
  127. package/dist/mcp/sync-cli-config.js +497 -17
  128. package/dist/mcp/sync-cli-config.js.map +1 -1
  129. package/dist/message-loop.d.ts +6 -0
  130. package/dist/message-loop.d.ts.map +1 -1
  131. package/dist/message-loop.js +281 -89
  132. package/dist/message-loop.js.map +1 -1
  133. package/dist/mqtt-client.d.ts +44 -1
  134. package/dist/mqtt-client.d.ts.map +1 -1
  135. package/dist/mqtt-client.js +284 -46
  136. package/dist/mqtt-client.js.map +1 -1
  137. package/dist/mqtt-data-relay.d.ts +44 -0
  138. package/dist/mqtt-data-relay.d.ts.map +1 -0
  139. package/dist/mqtt-data-relay.js +106 -0
  140. package/dist/mqtt-data-relay.js.map +1 -0
  141. package/dist/oauth.d.ts.map +1 -1
  142. package/dist/oauth.js +69 -29
  143. package/dist/oauth.js.map +1 -1
  144. package/dist/orchestration/capabilities.d.ts +13 -0
  145. package/dist/orchestration/capabilities.d.ts.map +1 -0
  146. package/dist/orchestration/capabilities.js +152 -0
  147. package/dist/orchestration/capabilities.js.map +1 -0
  148. package/dist/orchestration/dispatch-executor.d.ts +83 -0
  149. package/dist/orchestration/dispatch-executor.d.ts.map +1 -0
  150. package/dist/orchestration/dispatch-executor.js +266 -0
  151. package/dist/orchestration/dispatch-executor.js.map +1 -0
  152. package/dist/orchestration/dispatch-hint.d.ts +134 -0
  153. package/dist/orchestration/dispatch-hint.d.ts.map +1 -0
  154. package/dist/orchestration/dispatch-hint.js +247 -0
  155. package/dist/orchestration/dispatch-hint.js.map +1 -0
  156. package/dist/orchestration/dispatch-runner.d.ts +106 -0
  157. package/dist/orchestration/dispatch-runner.d.ts.map +1 -0
  158. package/dist/orchestration/dispatch-runner.js +604 -0
  159. package/dist/orchestration/dispatch-runner.js.map +1 -0
  160. package/dist/orchestration/dispatch-tools.d.ts +167 -0
  161. package/dist/orchestration/dispatch-tools.d.ts.map +1 -0
  162. package/dist/orchestration/dispatch-tools.js +328 -0
  163. package/dist/orchestration/dispatch-tools.js.map +1 -0
  164. package/dist/orchestration/front-door-policy.d.ts +35 -10
  165. package/dist/orchestration/front-door-policy.d.ts.map +1 -1
  166. package/dist/orchestration/front-door-policy.js +30 -267
  167. package/dist/orchestration/front-door-policy.js.map +1 -1
  168. package/dist/orchestration/orchestrator-dispatch-prompt.d.ts +43 -0
  169. package/dist/orchestration/orchestrator-dispatch-prompt.d.ts.map +1 -0
  170. package/dist/orchestration/orchestrator-dispatch-prompt.js +267 -0
  171. package/dist/orchestration/orchestrator-dispatch-prompt.js.map +1 -0
  172. package/dist/orchestration/orchestrator-operating-prompt.d.ts +15 -0
  173. package/dist/orchestration/orchestrator-operating-prompt.d.ts.map +1 -1
  174. package/dist/orchestration/orchestrator-operating-prompt.js +206 -20
  175. package/dist/orchestration/orchestrator-operating-prompt.js.map +1 -1
  176. package/dist/orchestration/plan-import.d.ts +39 -0
  177. package/dist/orchestration/plan-import.d.ts.map +1 -0
  178. package/dist/orchestration/plan-import.js +547 -0
  179. package/dist/orchestration/plan-import.js.map +1 -0
  180. package/dist/orchestration/validation.d.ts +40 -0
  181. package/dist/orchestration/validation.d.ts.map +1 -0
  182. package/dist/orchestration/validation.js +203 -0
  183. package/dist/orchestration/validation.js.map +1 -0
  184. package/dist/orchestration/worker-operating-prompt.d.ts +2 -0
  185. package/dist/orchestration/worker-operating-prompt.d.ts.map +1 -1
  186. package/dist/orchestration/worker-operating-prompt.js +36 -46
  187. package/dist/orchestration/worker-operating-prompt.js.map +1 -1
  188. package/dist/orchestrator.d.ts +214 -33
  189. package/dist/orchestrator.d.ts.map +1 -1
  190. package/dist/orchestrator.js +2200 -1100
  191. package/dist/orchestrator.js.map +1 -1
  192. package/dist/providers/anthropic.d.ts.map +1 -1
  193. package/dist/providers/anthropic.js +8 -4
  194. package/dist/providers/anthropic.js.map +1 -1
  195. package/dist/providers/claude-cli-prompt.d.ts.map +1 -1
  196. package/dist/providers/claude-cli-prompt.js +49 -5
  197. package/dist/providers/claude-cli-prompt.js.map +1 -1
  198. package/dist/providers/claude-cli.d.ts.map +1 -1
  199. package/dist/providers/claude-cli.js +81 -5
  200. package/dist/providers/claude-cli.js.map +1 -1
  201. package/dist/providers/codex-cli.d.ts +10 -6
  202. package/dist/providers/codex-cli.d.ts.map +1 -1
  203. package/dist/providers/codex-cli.js +204 -26
  204. package/dist/providers/codex-cli.js.map +1 -1
  205. package/dist/providers/google.d.ts.map +1 -1
  206. package/dist/providers/google.js +15 -5
  207. package/dist/providers/google.js.map +1 -1
  208. package/dist/providers/index.d.ts +15 -1
  209. package/dist/providers/index.d.ts.map +1 -1
  210. package/dist/providers/index.js.map +1 -1
  211. package/dist/providers/openai.d.ts +1 -1
  212. package/dist/providers/openai.d.ts.map +1 -1
  213. package/dist/providers/openai.js +13 -5
  214. package/dist/providers/openai.js.map +1 -1
  215. package/dist/response-guard.js +1 -1
  216. package/dist/response-guard.js.map +1 -1
  217. package/dist/server-adapter.d.ts +8 -0
  218. package/dist/server-adapter.d.ts.map +1 -1
  219. package/dist/server-adapter.js +7 -0
  220. package/dist/server-adapter.js.map +1 -1
  221. package/dist/service-mode.d.ts +1 -1
  222. package/dist/service-mode.d.ts.map +1 -1
  223. package/dist/service-mode.js +64 -1
  224. package/dist/service-mode.js.map +1 -1
  225. package/dist/service-setup-only.d.ts +8 -0
  226. package/dist/service-setup-only.d.ts.map +1 -0
  227. package/dist/service-setup-only.js +37 -0
  228. package/dist/service-setup-only.js.map +1 -0
  229. package/dist/slash-commands.d.ts +21 -0
  230. package/dist/slash-commands.d.ts.map +1 -0
  231. package/dist/slash-commands.js +99 -0
  232. package/dist/slash-commands.js.map +1 -0
  233. package/dist/subagent/index.d.ts +4 -2
  234. package/dist/subagent/index.d.ts.map +1 -1
  235. package/dist/subagent/index.js.map +1 -1
  236. package/dist/summarization-pipeline.d.ts.map +1 -1
  237. package/dist/summarization-pipeline.js +1 -9
  238. package/dist/summarization-pipeline.js.map +1 -1
  239. package/dist/token-counter.d.ts.map +1 -1
  240. package/dist/token-counter.js +11 -4
  241. package/dist/token-counter.js.map +1 -1
  242. package/dist/tool-filter.d.ts.map +1 -1
  243. package/dist/tool-filter.js +10 -6
  244. package/dist/tool-filter.js.map +1 -1
  245. package/dist/tools/admin-tools.d.ts.map +1 -1
  246. package/dist/tools/admin-tools.js +20 -5
  247. package/dist/tools/admin-tools.js.map +1 -1
  248. package/dist/tools/index.d.ts.map +1 -1
  249. package/dist/tools/index.js +2 -1
  250. package/dist/tools/index.js.map +1 -1
  251. package/dist/tools/run-command.d.ts.map +1 -1
  252. package/dist/tools/run-command.js +5 -1
  253. package/dist/tools/run-command.js.map +1 -1
  254. package/dist/tools/search-conversation-history.d.ts +16 -0
  255. package/dist/tools/search-conversation-history.d.ts.map +1 -0
  256. package/dist/tools/search-conversation-history.js +334 -0
  257. package/dist/tools/search-conversation-history.js.map +1 -0
  258. package/dist/tools/todo-tasks.d.ts.map +1 -1
  259. package/dist/tools/todo-tasks.js +77 -5
  260. package/dist/tools/todo-tasks.js.map +1 -1
  261. package/dist/usage-log.d.ts +62 -0
  262. package/dist/usage-log.d.ts.map +1 -0
  263. package/dist/usage-log.js +98 -0
  264. package/dist/usage-log.js.map +1 -0
  265. package/dist/wizard-state.d.ts +20 -0
  266. package/dist/wizard-state.d.ts.map +1 -1
  267. package/dist/wizard-state.js +90 -3
  268. package/dist/wizard-state.js.map +1 -1
  269. package/dist/wizard-support.d.ts.map +1 -1
  270. package/dist/wizard-support.js +27 -1
  271. package/dist/wizard-support.js.map +1 -1
  272. package/dist/workflow-engine.d.ts +44 -2
  273. package/dist/workflow-engine.d.ts.map +1 -1
  274. package/dist/workflow-engine.js +932 -111
  275. package/dist/workflow-engine.js.map +1 -1
  276. package/package.json +2 -2
@@ -0,0 +1,604 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runDispatchTurn = runDispatchTurn;
37
+ exports.extractTextFallbackDispatchCalls = extractTextFallbackDispatchCalls;
38
+ const data = __importStar(require("../local-data"));
39
+ const dispatch_tools_1 = require("./dispatch-tools");
40
+ const dispatch_executor_1 = require("./dispatch-executor");
41
+ const dispatch_hint_1 = require("./dispatch-hint");
42
+ const orchestrator_dispatch_prompt_1 = require("./orchestrator-dispatch-prompt");
43
+ // -----------------------------------------------------------------------------
44
+ // Top-level runner
45
+ // -----------------------------------------------------------------------------
46
+ const MAX_LLM_RETRIES_ON_VALIDATION_FAIL = 1;
47
+ /**
48
+ * Upper bound on LLM turns for multi-turn orchestrator tool use.
49
+ * Each turn either gathers context (executes read-side tools) or ends
50
+ * the dispatch (reply_directly / delegate_single / create_workflow).
51
+ * A single turn should never exceed a few tool calls, and the
52
+ * orchestrator should usually need ≤3 context turns; 8 is generous.
53
+ */
54
+ const MAX_ORCHESTRATOR_TURNS = 8;
55
+ async function runDispatchTurn(input) {
56
+ const hint = (0, dispatch_hint_1.buildDispatchHint)({
57
+ userPrompt: input.userPrompt,
58
+ conversation: {
59
+ id: input.conversationId,
60
+ title: input.conversationTitle,
61
+ topic_id: input.topicId,
62
+ project_name: input.projectName,
63
+ project_folder: input.projectFolder,
64
+ turn_count: input.turnCount,
65
+ recent_summary: input.recentSummary,
66
+ recent_turns: input.recentTurnsForHint || null,
67
+ bootstrap_history_file: input.bootstrapHistoryFilePath || null,
68
+ },
69
+ activeBots: input.activeBots,
70
+ selectedWorkflowTemplate: input.selectedWorkflowTemplate || null,
71
+ candidateWorkflowPlan: input.candidateWorkflowPlan || null,
72
+ existingTodos: input.existingTodos,
73
+ effectivePolicyText: input.effectivePolicyText,
74
+ });
75
+ const systemPrompt = (0, orchestrator_dispatch_prompt_1.buildOrchestratorDispatchPrompt)({
76
+ hint,
77
+ additionalGuidance: input.additionalGuidance ?? null,
78
+ });
79
+ const validationContext = (0, dispatch_tools_1.buildDispatchValidationContext)(input.activeBots);
80
+ const resolution = buildResolutionContext(input.activeBots, input.existingTodos);
81
+ const executionContext = {
82
+ conversationId: input.conversationId,
83
+ projectId: input.projectId,
84
+ orchestratorActor: input.orchestratorActor || {
85
+ name: input.orchestratorBot?.name || 'Orchestrator',
86
+ actorId: input.orchestratorBot?.id || 'orchestrator',
87
+ },
88
+ resolution,
89
+ // Pass the raw user prompt through so the executor can enforce
90
+ // the position-aware include_user_prompt policy for every step
91
+ // it creates (Codex QA 2026-04-19 caveat on 5b43a736).
92
+ userPrompt: input.userPrompt,
93
+ recentContext: input.recentContext || null,
94
+ };
95
+ // Build the tool set: three dispatch tools + any read-side tools the
96
+ // caller wired. Read-side tools let the orchestrator gather context
97
+ // (read a file, search codebase, web search) directly without
98
+ // delegating simple tasks to workers.
99
+ const orchestratorTools = input.orchestratorTools || [];
100
+ const orchestratorToolMap = new Map(orchestratorTools.map((t) => [t.name, t]));
101
+ const tools = [
102
+ dispatch_tools_1.REPLY_DIRECTLY_SCHEMA,
103
+ dispatch_tools_1.DELEGATE_SINGLE_SCHEMA,
104
+ dispatch_tools_1.CREATE_WORKFLOW_SCHEMA,
105
+ ...orchestratorTools.map((t) => ({
106
+ name: t.name,
107
+ description: t.description,
108
+ parameters: t.parameters,
109
+ })),
110
+ ];
111
+ const messages = [
112
+ { role: 'user', content: input.userPrompt },
113
+ ];
114
+ let lastError = null;
115
+ let validationRetries = 0;
116
+ // "Non-productive" turns are LLM calls that produced neither a valid
117
+ // dispatch tool call nor a context-gathering tool call (e.g. the LLM
118
+ // just emitted prose with no tools, or called an unknown tool). We
119
+ // give the LLM one retry to recover; a second non-productive turn
120
+ // bails. Matches the prior MAX_LLM_RETRIES_ON_VALIDATION_FAIL=1
121
+ // behavior for those specific paths.
122
+ const MAX_NON_PRODUCTIVE_TURNS = 1;
123
+ let nonProductiveTurns = 0;
124
+ for (let turn = 0; turn < MAX_ORCHESTRATOR_TURNS; turn += 1) {
125
+ let response;
126
+ try {
127
+ response = await input.llm.chat({
128
+ system: systemPrompt,
129
+ messages,
130
+ tools,
131
+ toolChoice: 'required',
132
+ abortSignal: input.abortSignal,
133
+ });
134
+ }
135
+ catch (err) {
136
+ const candidateMessage = formatCandidateWorkflowFailure(input);
137
+ return {
138
+ userReplyText: candidateMessage
139
+ ? `Orchestrator LLM call failed before approving the detected workflow: ${err?.message || err}. ${candidateMessage}`
140
+ : `Orchestrator LLM call failed: ${err?.message || err}. Please try again.`,
141
+ outcome: { kind: 'error', error: String(err?.message || err) },
142
+ };
143
+ }
144
+ // Partition the native tool calls into dispatch / orchestrator-tool /
145
+ // unknown buckets.
146
+ const allCalls = response?.toolCalls || [];
147
+ let dispatchToolCalls = extractDispatchToolCalls(allCalls);
148
+ const orchestratorCalls = allCalls.filter((c) => orchestratorToolMap.has(c.name));
149
+ const unknownCalls = allCalls.filter((c) => !DISPATCH_TOOL_NAMES.has(c.name) && !orchestratorToolMap.has(c.name));
150
+ // If no native calls at all, try the text fallback (CLI providers
151
+ // that can't emit native tool_use blocks).
152
+ if (allCalls.length === 0 && dispatchToolCalls.length === 0) {
153
+ const fromText = extractTextFallbackDispatchCalls(response?.content || '');
154
+ if (fromText.length > 0)
155
+ dispatchToolCalls = fromText;
156
+ }
157
+ const precreatedCandidateTaskIds = normalizeTaskIds(input.precreatedCandidateTaskIds);
158
+ // Orchestrator context-gathering turn: the LLM called one or more
159
+ // read-side tools (read_file, list_directory, etc.) to gather
160
+ // context. Execute them, feed results back, continue to the next
161
+ // turn. Mixing context-gathering with a dispatch call in the same
162
+ // turn is ambiguous (did it want to dispatch with or without the
163
+ // tool results?) so we reject that combination and retry.
164
+ if (orchestratorCalls.length > 0 && dispatchToolCalls.length === 0 && !input.toolContext) {
165
+ // Tools were advertised but no execution context provided — misuse.
166
+ return {
167
+ userReplyText: 'Orchestrator tool execution is not wired (missing toolContext). This is a configuration bug.',
168
+ outcome: { kind: 'error', error: 'orchestratorTools supplied without toolContext' },
169
+ };
170
+ }
171
+ if (orchestratorCalls.length > 0 && dispatchToolCalls.length === 0 && input.toolContext) {
172
+ messages.push({
173
+ role: 'assistant',
174
+ content: response?.content || '',
175
+ toolCalls: allCalls,
176
+ });
177
+ for (const call of orchestratorCalls) {
178
+ const def = orchestratorToolMap.get(call.name);
179
+ try {
180
+ const result = await def.execute(call.arguments, input.toolContext);
181
+ const body = result.success
182
+ ? result.output
183
+ : `[TOOL ERROR] ${result.error || 'tool execution failed'}`;
184
+ messages.push({
185
+ role: 'tool',
186
+ content: body,
187
+ toolCallId: call.id,
188
+ toolName: call.name,
189
+ });
190
+ }
191
+ catch (err) {
192
+ messages.push({
193
+ role: 'tool',
194
+ content: `[TOOL ERROR] ${err?.message || String(err)}`,
195
+ toolCallId: call.id,
196
+ toolName: call.name,
197
+ });
198
+ }
199
+ }
200
+ // Context-gathering is productive — reset the non-productive counter.
201
+ nonProductiveTurns = 0;
202
+ continue;
203
+ }
204
+ if (orchestratorCalls.length > 0 && dispatchToolCalls.length > 0) {
205
+ lastError = 'Context-gathering tools and a dispatch tool were called in the same turn. Call context-gathering tools first, wait for their results, then call exactly one dispatch tool.';
206
+ messages.push({
207
+ role: 'assistant',
208
+ content: response?.content || '',
209
+ toolCalls: allCalls,
210
+ });
211
+ messages.push({
212
+ role: 'user',
213
+ content: `[DISPATCH ERROR]\n${lastError}`,
214
+ });
215
+ continue;
216
+ }
217
+ if (unknownCalls.length > 0 && dispatchToolCalls.length === 0) {
218
+ lastError = `The orchestrator LLM called unknown tool(s): ${unknownCalls.map((c) => c.name).join(', ')}. Only the configured tools are available.`;
219
+ messages.push({
220
+ role: 'assistant',
221
+ content: response?.content || '',
222
+ toolCalls: allCalls,
223
+ });
224
+ messages.push({
225
+ role: 'user',
226
+ content: `[DISPATCH ERROR]\n${lastError}`,
227
+ });
228
+ continue;
229
+ }
230
+ if (dispatchToolCalls.length === 0) {
231
+ if (precreatedCandidateTaskIds.length > 0) {
232
+ const approval = parsePrecreatedCandidateApproval(response?.content || '');
233
+ if (approval === 'approve') {
234
+ return buildPrecreatedWorkflowResult(input, precreatedCandidateTaskIds);
235
+ }
236
+ if (approval === 'reject') {
237
+ deletePrecreatedCandidateTasks(precreatedCandidateTaskIds, input);
238
+ return {
239
+ userReplyText: response?.content?.trim() || 'The proposed workflow was rejected by the orchestrator.',
240
+ outcome: { kind: 'reply_directly' },
241
+ };
242
+ }
243
+ }
244
+ lastError = precreatedCandidateTaskIds.length > 0
245
+ ? 'The orchestrator LLM did not approve, reject, or modify the proposed workflow.'
246
+ : 'The orchestrator LLM did not return any of the expected dispatch tool calls (reply_directly / delegate_single / create_workflow).';
247
+ nonProductiveTurns += 1;
248
+ if (nonProductiveTurns > MAX_NON_PRODUCTIVE_TURNS)
249
+ break;
250
+ messages.push({
251
+ role: 'assistant',
252
+ content: response?.content || '',
253
+ toolCalls: allCalls,
254
+ });
255
+ messages.push({
256
+ role: 'user',
257
+ content: precreatedCandidateTaskIds.length > 0
258
+ ? `[DISPATCH ERROR]\n${lastError}\nReply with APPROVE_PROPOSED_WORKFLOW, REJECT_PROPOSED_WORKFLOW, or call create_workflow with a modified plan.`
259
+ : `[DISPATCH ERROR]\n${lastError}\nCall exactly one of the three dispatch tools and try again.`,
260
+ });
261
+ continue;
262
+ }
263
+ if (dispatchToolCalls.length > 1) {
264
+ // Per Codex QA 2026-04-18 (finding #3): reject multiple dispatch
265
+ // calls. Persisting the first and ignoring the rest could create
266
+ // a partial or unintended plan. Surface the error and retry.
267
+ lastError = `The orchestrator LLM emitted ${dispatchToolCalls.length} dispatch tool calls (${dispatchToolCalls
268
+ .map((c) => c.name)
269
+ .join(', ')}). Exactly one is required.`;
270
+ nonProductiveTurns += 1;
271
+ if (nonProductiveTurns > MAX_NON_PRODUCTIVE_TURNS)
272
+ break;
273
+ messages.push({
274
+ role: 'assistant',
275
+ content: response?.content || '',
276
+ toolCalls: allCalls,
277
+ });
278
+ messages.push({
279
+ role: 'user',
280
+ content: `[DISPATCH ERROR]\n${lastError}\nCall exactly one dispatch tool and try again.`,
281
+ });
282
+ continue;
283
+ }
284
+ const toolCall = dispatchToolCalls[0];
285
+ if (precreatedCandidateTaskIds.length > 0 && toolCall.name === 'reply_directly') {
286
+ const text = String(toolCall.arguments?.text || '');
287
+ const approval = parsePrecreatedCandidateApproval(text);
288
+ if (approval === 'approve') {
289
+ return buildPrecreatedWorkflowResult(input, precreatedCandidateTaskIds);
290
+ }
291
+ deletePrecreatedCandidateTasks(precreatedCandidateTaskIds, input);
292
+ }
293
+ const validation = validateToolCall(toolCall, validationContext);
294
+ if (!validation.ok) {
295
+ if (validationRetries >= MAX_LLM_RETRIES_ON_VALIDATION_FAIL) {
296
+ lastError = validation.error;
297
+ break;
298
+ }
299
+ validationRetries += 1;
300
+ lastError = validation.error;
301
+ messages.push({
302
+ role: 'assistant',
303
+ content: response?.content || '',
304
+ toolCalls: allCalls,
305
+ });
306
+ messages.push({
307
+ role: 'tool',
308
+ content: `[VALIDATION ERROR]\n${validation.error}\nRetry with corrected arguments.`,
309
+ toolCallId: toolCall.id,
310
+ toolName: toolCall.name,
311
+ });
312
+ continue;
313
+ }
314
+ const titleValidation = validateCandidatePlanTitles(toolCall, input);
315
+ if (!titleValidation.ok) {
316
+ if (validationRetries >= MAX_LLM_RETRIES_ON_VALIDATION_FAIL) {
317
+ lastError = titleValidation.error;
318
+ break;
319
+ }
320
+ validationRetries += 1;
321
+ lastError = titleValidation.error;
322
+ messages.push({
323
+ role: 'assistant',
324
+ content: response?.content || '',
325
+ toolCalls: allCalls,
326
+ });
327
+ messages.push({
328
+ role: 'tool',
329
+ content: `[VALIDATION ERROR]\n${titleValidation.error}\nRetry with corrected titles.`,
330
+ toolCallId: toolCall.id,
331
+ toolName: toolCall.name,
332
+ });
333
+ continue;
334
+ }
335
+ if (precreatedCandidateTaskIds.length > 0 && toolCall.name !== 'reply_directly') {
336
+ deletePrecreatedCandidateTasks(precreatedCandidateTaskIds, input);
337
+ }
338
+ const executed = executeDispatchCall(toolCall, executionContext);
339
+ return buildRunnerResult(executed, toolCall);
340
+ }
341
+ // Exhausted retries.
342
+ const candidateMessage = formatCandidateWorkflowFailure(input);
343
+ const surfaced = lastError || 'Orchestrator could not produce a valid dispatch plan after retries.';
344
+ return {
345
+ userReplyText: candidateMessage
346
+ ? `Orchestrator couldn't verify the proposed workflow — please clarify:\n${surfaced}\n${candidateMessage}`
347
+ : `Orchestrator couldn't produce a valid plan — please clarify:\n${surfaced}`,
348
+ outcome: { kind: 'error', error: surfaced },
349
+ };
350
+ }
351
+ // -----------------------------------------------------------------------------
352
+ // Helpers
353
+ // -----------------------------------------------------------------------------
354
+ const DISPATCH_TOOL_NAMES = new Set(['reply_directly', 'delegate_single', 'create_workflow']);
355
+ function extractDispatchToolCalls(calls) {
356
+ return calls.filter((call) => DISPATCH_TOOL_NAMES.has(call.name));
357
+ }
358
+ /**
359
+ * Parse fenced JSON dispatch blocks from an LLM text response. Used when
360
+ * the provider can't return native tool calls (Claude CLI, Codex CLI, or
361
+ * any other text-only interface). The prompt instructs the LLM to emit
362
+ * exactly one fenced block of the form:
363
+ *
364
+ * ```json
365
+ * {"tool": "delegate_single", "arguments": { ... }}
366
+ * ```
367
+ *
368
+ * Blocks that are malformed JSON, not objects, or whose `tool` is not one
369
+ * of the three dispatch tools are silently skipped — the caller's
370
+ * zero/many rejection logic will flag the overall turn appropriately.
371
+ */
372
+ function extractTextFallbackDispatchCalls(content) {
373
+ if (!content)
374
+ return [];
375
+ const results = [];
376
+ const fenceRe = /```(?:json)?\s*\n?([\s\S]*?)```/g;
377
+ let match;
378
+ let idx = 0;
379
+ while ((match = fenceRe.exec(content)) !== null) {
380
+ const raw = match[1].trim();
381
+ if (!raw)
382
+ continue;
383
+ let parsed;
384
+ try {
385
+ parsed = JSON.parse(raw);
386
+ }
387
+ catch {
388
+ continue;
389
+ }
390
+ if (!parsed || typeof parsed !== 'object')
391
+ continue;
392
+ const obj = parsed;
393
+ const toolName = typeof obj.tool === 'string' ? obj.tool : null;
394
+ if (!toolName || !DISPATCH_TOOL_NAMES.has(toolName))
395
+ continue;
396
+ const args = obj.arguments && typeof obj.arguments === 'object'
397
+ ? obj.arguments
398
+ : {};
399
+ results.push({
400
+ id: `text-fallback-${idx}`,
401
+ name: toolName,
402
+ arguments: args,
403
+ });
404
+ idx += 1;
405
+ }
406
+ return results;
407
+ }
408
+ function validateToolCall(toolCall, ctx) {
409
+ switch (toolCall.name) {
410
+ case 'reply_directly':
411
+ return (0, dispatch_tools_1.validateReplyDirectly)(toolCall.arguments);
412
+ case 'delegate_single':
413
+ return (0, dispatch_tools_1.validateDelegateSingle)(toolCall.arguments, ctx);
414
+ case 'create_workflow':
415
+ return (0, dispatch_tools_1.validateCreateWorkflow)(toolCall.arguments, ctx);
416
+ default:
417
+ return { ok: false, error: `Unexpected tool call "${toolCall.name}".` };
418
+ }
419
+ }
420
+ function validateCandidatePlanTitles(toolCall, input) {
421
+ const requiresTitles = Boolean(input.selectedWorkflowTemplate || input.candidateWorkflowPlan);
422
+ if (!requiresTitles)
423
+ return { ok: true };
424
+ if (toolCall.name !== 'create_workflow')
425
+ return { ok: true };
426
+ const args = toolCall.arguments;
427
+ const steps = Array.isArray(args?.steps) ? args.steps : [];
428
+ for (let i = 0; i < steps.length; i += 1) {
429
+ const title = String(steps[i]?.title || '').trim();
430
+ const botName = String(steps[i]?.bot_name || '').trim();
431
+ if (!isSpecificTaskTitle(title, botName)) {
432
+ return {
433
+ ok: false,
434
+ error: `Workflow step ${i + 1} needs a specific TODO title written from the user's request. Do not use generic labels like "Coding", "QA", "Verify", or "Complete ${botName || 'worker'}'s workflow step".`,
435
+ };
436
+ }
437
+ }
438
+ return { ok: true };
439
+ }
440
+ function isSpecificTaskTitle(rawTitle, botName) {
441
+ const trimmed = rawTitle.trim();
442
+ if (!trimmed || trimmed.length < 6)
443
+ return false;
444
+ const withoutBot = botName && trimmed.toLowerCase().startsWith(`${botName.toLowerCase()}:`)
445
+ ? trimmed.slice(botName.length + 1).trim()
446
+ : trimmed;
447
+ const normalized = withoutBot.toLowerCase().replace(/\s+/g, ' ').trim();
448
+ if (!normalized || normalized.length < 6)
449
+ return false;
450
+ if (/^complete .+ workflow step\.?$/.test(normalized))
451
+ return false;
452
+ if (/\bworkflow step\b/.test(normalized))
453
+ return false;
454
+ const generic = new Set([
455
+ 'coding',
456
+ 'code',
457
+ 'build',
458
+ 'building',
459
+ 'implementation',
460
+ 'implement',
461
+ 'qa',
462
+ 'quality assurance',
463
+ 'review',
464
+ 'verify',
465
+ 'verification',
466
+ 'research',
467
+ 'planning',
468
+ 'plan',
469
+ 'do task',
470
+ 'handle request',
471
+ 'assigned task',
472
+ ]);
473
+ return !generic.has(normalized);
474
+ }
475
+ function normalizeTaskIds(ids) {
476
+ return (ids || [])
477
+ .map((id) => Number(id))
478
+ .filter((id) => Number.isFinite(id) && id > 0);
479
+ }
480
+ function parsePrecreatedCandidateApproval(content) {
481
+ const text = String(content || '').trim();
482
+ if (!text)
483
+ return null;
484
+ if (/\b(REJECT_PROPOSED_WORKFLOW|reject|rejected|do not start|do not run|wrong workflow|needs clarification|clarify)\b/i.test(text)) {
485
+ return 'reject';
486
+ }
487
+ if (/\b(APPROVE_PROPOSED_WORKFLOW|approve|approved|agree|agreed|valid|looks good|correct|yes|ok|okay|go ahead|start|run it|use this workflow)\b/i.test(text)) {
488
+ return 'approve';
489
+ }
490
+ return null;
491
+ }
492
+ function buildPrecreatedWorkflowResult(input, taskIds) {
493
+ const tasks = taskIds
494
+ .map((id) => data.getTodoTask(id, 'active'))
495
+ .filter((task) => Boolean(task));
496
+ const ownerNames = tasks.map((task) => task.owner_name || '').filter(Boolean);
497
+ return {
498
+ userReplyText: `Approved proposed workflow: ${ownerNames.join(' -> ') || taskIds.join(' -> ')}.`,
499
+ outcome: { kind: 'create_workflow', taskIds, ownerNames },
500
+ };
501
+ }
502
+ function deletePrecreatedCandidateTasks(taskIds, input) {
503
+ const actor = input.orchestratorActor || {
504
+ name: input.orchestratorBot?.name || 'Orchestrator',
505
+ actorId: input.orchestratorBot?.id || 'orchestrator',
506
+ };
507
+ for (const taskId of taskIds) {
508
+ try {
509
+ data.deleteTodoTask(taskId, {
510
+ actor: { actorType: 'orchestrator', actorId: actor.actorId },
511
+ });
512
+ }
513
+ catch {
514
+ // Best effort. If a user touched the proposed task concurrently, leave it.
515
+ }
516
+ }
517
+ }
518
+ function formatCandidateWorkflowFailure(input) {
519
+ const candidate = input.candidateWorkflowPlan;
520
+ if (!candidate?.steps?.length)
521
+ return null;
522
+ const names = candidate.steps.map((step) => String(step.bot_name || '').trim()).filter(Boolean);
523
+ if (names.length === 0)
524
+ return null;
525
+ const precreated = normalizeTaskIds(input.precreatedCandidateTaskIds).length > 0;
526
+ return precreated
527
+ ? `Proposed TODOs are visible for: ${names.join(' -> ')}. No workers were started.`
528
+ : `Detected workflow candidate: ${names.join(' -> ')}. No workers were started. Please try again.`;
529
+ }
530
+ function executeDispatchCall(toolCall, ctx) {
531
+ switch (toolCall.name) {
532
+ case 'reply_directly':
533
+ return (0, dispatch_executor_1.executeReplyDirectly)(toolCall.arguments);
534
+ case 'delegate_single':
535
+ return (0, dispatch_executor_1.executeDelegateSingle)(toolCall.arguments, ctx);
536
+ case 'create_workflow':
537
+ return (0, dispatch_executor_1.executeCreateWorkflow)(toolCall.arguments, ctx);
538
+ default:
539
+ return { kind: 'error', error: `Unexpected tool call "${toolCall.name}".` };
540
+ }
541
+ }
542
+ function buildRunnerResult(executed, toolCall) {
543
+ if (executed.kind === 'error') {
544
+ return {
545
+ userReplyText: `Dispatch failed: ${executed.error}`,
546
+ outcome: { kind: 'error', error: executed.error },
547
+ };
548
+ }
549
+ if (executed.kind === 'reply_directly') {
550
+ return {
551
+ userReplyText: executed.text,
552
+ outcome: { kind: 'reply_directly' },
553
+ };
554
+ }
555
+ if (executed.kind === 'delegate_single') {
556
+ return {
557
+ userReplyText: summarizeDelegate(executed.task.title, executed.assignedBot.name),
558
+ outcome: {
559
+ kind: 'delegate_single',
560
+ taskId: executed.task.id,
561
+ ownerName: executed.assignedBot.name,
562
+ },
563
+ };
564
+ }
565
+ // create_workflow
566
+ return {
567
+ userReplyText: summarizeWorkflow(executed.tasks, executed.assignedBots),
568
+ outcome: {
569
+ kind: 'create_workflow',
570
+ taskIds: executed.tasks.map((t) => t.id),
571
+ ownerNames: executed.assignedBots.map((b) => b.name),
572
+ },
573
+ };
574
+ }
575
+ function summarizeDelegate(title, botName) {
576
+ return `Delegated to ${botName}: ${title}`;
577
+ }
578
+ function summarizeWorkflow(tasks, bots) {
579
+ const lines = [
580
+ `Queued a ${tasks.length}-step workflow:`,
581
+ ...tasks.map((t, i) => ` ${i + 1}. ${bots[i]?.name || 'unknown'} — ${t.title}`),
582
+ ];
583
+ return lines.join('\n');
584
+ }
585
+ /**
586
+ * Build the role-resolution context used by dispatch-executor. Includes the
587
+ * set of bots that already have active (non-completed) TODOs in this
588
+ * conversation, for the tie-break rule in Decision 2.
589
+ */
590
+ function buildResolutionContext(activeBots, existingTodos) {
591
+ const busy = new Set();
592
+ for (const t of existingTodos) {
593
+ if (!t.owner_name)
594
+ continue;
595
+ const status = (t.status || '').toLowerCase();
596
+ // "active" meaning not completed/cancelled/blocked. Keep this in sync with
597
+ // whatever statuses the TODO system considers terminal.
598
+ if (status === 'completed' || status === 'cancelled' || status === 'done')
599
+ continue;
600
+ busy.add(t.owner_name);
601
+ }
602
+ return { activeBots, botsWithActiveTodos: busy };
603
+ }
604
+ //# sourceMappingURL=dispatch-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-runner.js","sourceRoot":"","sources":["../../src/orchestration/dispatch-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA,0CAoTC;AA0BD,4EA8BC;AA7cD,oDAAsC;AACtC,qDAa0B;AAC1B,2DAM6B;AAC7B,mDAAoD;AAEpD,iFAAiF;AA2DjF,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAC7C;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAE1B,KAAK,UAAU,eAAe,CAAC,KAA0B;IAC9D,MAAM,IAAI,GAAG,IAAA,iCAAiB,EAAC;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE;YACZ,EAAE,EAAE,KAAK,CAAC,cAAc;YACxB,KAAK,EAAE,KAAK,CAAC,iBAAiB;YAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,YAAY,EAAE,KAAK,CAAC,WAAW;YAC/B,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,YAAY,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;YAC9C,sBAAsB,EAAE,KAAK,CAAC,wBAAwB,IAAI,IAAI;SAC/D;QACD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,IAAI,IAAI;QAChE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,IAAI,IAAI;QAC1D,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;KAC/C,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,8DAA+B,EAAC;QACnD,IAAI;QACJ,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;KACrD,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,IAAA,+CAA8B,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEjF,MAAM,gBAAgB,GAA6B;QACjD,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI;YAC5C,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,cAAc;YACnD,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,cAAc;SACrD;QACD,UAAU;QACV,+DAA+D;QAC/D,+DAA+D;QAC/D,uDAAuD;QACvD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;KAC3C,CAAC;IAEF,qEAAqE;IACrE,oEAAoE;IACpE,8DAA8D;IAC9D,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACxD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAC;IACF,MAAM,KAAK,GAAwB;QACjC,sCAAqB;QACrB,uCAAsB;QACtB,uCAAsB;QACtB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,QAAQ,GAAiB;QAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE;KAC5C,CAAC;IAEF,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,qEAAqE;IACrE,qEAAqE;IACrE,mEAAmE;IACnE,kEAAkE;IAClE,gEAAgE;IAChE,qCAAqC;IACrC,MAAM,wBAAwB,GAAG,CAAC,CAAC;IACnC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,sBAAsB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC5D,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,YAAY;gBACpB,QAAQ;gBACR,KAAK;gBACL,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC/D,OAAO;gBACL,aAAa,EAAE,gBAAgB;oBAC7B,CAAC,CAAC,wEAAwE,GAAG,EAAE,OAAO,IAAI,GAAG,KAAK,gBAAgB,EAAE;oBACpH,CAAC,CAAC,iCAAiC,GAAG,EAAE,OAAO,IAAI,GAAG,qBAAqB;gBAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE;aAC/D,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,mBAAmB;QACnB,MAAM,QAAQ,GAAG,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;QAC3C,IAAI,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CACrE,CAAC;QAEF,kEAAkE;QAClE,2CAA2C;QAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,QAAQ,GAAG,gCAAgC,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YAC3E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,iBAAiB,GAAG,QAAQ,CAAC;QACxD,CAAC;QAED,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEtF,kEAAkE;QAClE,8DAA8D;QAC9D,iEAAiE;QACjE,kEAAkE;QAClE,iEAAiE;QACjE,0DAA0D;QAC1D,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzF,oEAAoE;YACpE,OAAO;gBACL,aAAa,EAAE,8FAA8F;gBAC7G,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gDAAgD,EAAE;aACpF,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACxF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAoC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC/F,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;wBACzB,CAAC,CAAC,MAAM,CAAC,MAAM;wBACf,CAAC,CAAC,gBAAgB,MAAM,CAAC,KAAK,IAAI,uBAAuB,EAAE,CAAC;oBAC9D,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,gBAAgB,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;wBACtD,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,sEAAsE;YACtE,kBAAkB,GAAG,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,SAAS,GAAG,4KAA4K,CAAC;YACzL,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qBAAqB,SAAS,EAAE;aAC1C,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,SAAS,GAAG,gDAAgD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC;YACnJ,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qBAAqB,SAAS,EAAE;aAC1C,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,gCAAgC,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC3E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,OAAO,6BAA6B,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;gBAC1E,CAAC;gBACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,8BAA8B,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;oBAClE,OAAO;wBACL,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,yDAAyD;wBACrG,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;qBACpC,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,SAAS,GAAG,0BAA0B,CAAC,MAAM,GAAG,CAAC;gBAC/C,CAAC,CAAC,gFAAgF;gBAClF,CAAC,CAAC,mIAAmI,CAAC;YACxI,kBAAkB,IAAI,CAAC,CAAC;YACxB,IAAI,kBAAkB,GAAG,wBAAwB;gBAAE,MAAM;YACzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,0BAA0B,CAAC,MAAM,GAAG,CAAC;oBAC5C,CAAC,CAAC,qBAAqB,SAAS,iHAAiH;oBACjJ,CAAC,CAAC,qBAAqB,SAAS,+DAA+D;aAClG,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,iEAAiE;YACjE,iEAAiE;YACjE,6DAA6D;YAC7D,SAAS,GAAG,gCAAgC,iBAAiB,CAAC,MAAM,yBAAyB,iBAAiB;iBAC3G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC;YAC3C,kBAAkB,IAAI,CAAC,CAAC;YACxB,IAAI,kBAAkB,GAAG,wBAAwB;gBAAE,MAAM;YACzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qBAAqB,SAAS,iDAAiD;aACzF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAChF,MAAM,IAAI,GAAG,MAAM,CAAE,QAAQ,CAAC,SAA+B,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,6BAA6B,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;YAC1E,CAAC;YACD,8BAA8B,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,IAAI,iBAAiB,IAAI,kCAAkC,EAAE,CAAC;gBAC5D,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,CAAC;YACD,iBAAiB,IAAI,CAAC,CAAC;YACvB,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,uBAAuB,UAAU,CAAC,KAAK,mCAAmC;gBACnF,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,eAAe,GAAG,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,iBAAiB,IAAI,kCAAkC,EAAE,CAAC;gBAC5D,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;gBAClC,MAAM;YACR,CAAC;YACD,iBAAiB,IAAI,CAAC,CAAC;YACvB,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,uBAAuB,eAAe,CAAC,KAAK,gCAAgC;gBACrF,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAChF,8BAA8B,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACjE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,SAAS,IAAI,qEAAqE,CAAC;IACpG,OAAO;QACL,aAAa,EAAE,gBAAgB;YAC7B,CAAC,CAAC,yEAAyE,QAAQ,KAAK,gBAAgB,EAAE;YAC1G,CAAC,CAAC,iEAAiE,QAAQ,EAAE;QAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE9F,SAAS,wBAAwB,CAAC,KAAoB;IACpD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,gCAAgC,CAAC,OAAe;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,kCAAkC,CAAC;IACnD,IAAI,KAA6B,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,GAAG,GAAG,MAAiD,CAAC;QAC9D,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;YAC7D,CAAC,CAAE,GAAG,CAAC,SAAqC;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,iBAAiB,GAAG,EAAE;YAC1B,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAqB,EACrB,GAA8B;IAE9B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,IAAA,sCAAqB,EAAC,QAAQ,CAAC,SAA8B,CAAC,CAAC;QACxE,KAAK,iBAAiB;YACpB,OAAO,IAAA,uCAAsB,EAAC,QAAQ,CAAC,SAA+B,EAAE,GAAG,CAAC,CAAC;QAC/E,KAAK,iBAAiB;YACpB,OAAO,IAAA,uCAAsB,EAAC,QAAQ,CAAC,SAA+B,EAAE,GAAG,CAAC,CAAC;QAC/E;YACE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAqB,EACrB,KAA0B;IAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC9F,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,SAA+B,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACzC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,uIAAuI,OAAO,IAAI,QAAQ,oBAAoB;aAC5M,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;QACzF,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC;IACZ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,QAAQ;QACR,MAAM;QACN,OAAO;QACP,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,IAAI;QACJ,mBAAmB;QACnB,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,UAAU;QACV,UAAU;QACV,MAAM;QACN,SAAS;QACT,gBAAgB;QAChB,eAAe;KAChB,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAuC;IAC/D,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;SACf,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gCAAgC,CAAC,OAAe;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,oHAAoH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpI,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,6IAA6I,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7J,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CACpC,KAA0B,EAC1B,OAAiB;IAEjB,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC3C,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9E,OAAO;QACL,aAAa,EAAE,+BAA+B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;QAChG,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,OAAiB,EAAE,KAA0B;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,IAAI;QACvC,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,cAAc;QACnD,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,cAAc;KACrD,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,KAA0B;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjF,OAAO,UAAU;QACf,CAAC,CAAC,mCAAmC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B;QACnF,CAAC,CAAC,gCAAgC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC;AACvG,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAqB,EACrB,GAA6B;IAE7B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,IAAA,wCAAoB,EAAC,QAAQ,CAAC,SAA8B,CAAC,CAAC;QACvE,KAAK,iBAAiB;YACpB,OAAO,IAAA,yCAAqB,EAAC,QAAQ,CAAC,SAA+B,EAAE,GAAG,CAAC,CAAC;QAC9E,KAAK,iBAAiB;YACpB,OAAO,IAAA,yCAAqB,EAAC,QAAQ,CAAC,SAA+B,EAAE,GAAG,CAAC,CAAC;QAC9E;YACE,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACzF,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAgD,EAChD,QAAqB;IAErB,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO;YACL,aAAa,EAAE,oBAAoB,QAAQ,CAAC,KAAK,EAAE;YACnD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACvC,OAAO;YACL,aAAa,EAAE,QAAQ,CAAC,IAAI;YAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;SACpC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACxC,OAAO;YACL,aAAa,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;YAChF,OAAO,EAAE;gBACP,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACxB,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI;aACrC;SACF,CAAC;IACJ,CAAC;IACD,kBAAkB;IAClB,OAAO;QACL,aAAa,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC;QACvE,OAAO,EAAE;YACP,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACrD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,OAAe;IACvD,OAAO,gBAAgB,OAAO,KAAK,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB,EAAE,IAA4B;IAChF,MAAM,KAAK,GAAG;QACZ,YAAY,KAAK,CAAC,MAAM,iBAAiB;QACzC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;KACjF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC7B,UAAkC,EAClC,aAAmD;IAEnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,CAAC,UAAU;YAAE,SAAS;QAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,2EAA2E;QAC3E,wDAAwD;QACxD,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QACpF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC"}