@aid-framework/runtime 0.0.0 → 0.1.39

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 (188) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +53 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/agents/deep_agents.d.ts +78 -0
  5. package/dist/agents/deep_agents.d.ts.map +1 -0
  6. package/dist/agents/deep_agents.js +477 -0
  7. package/dist/agents/deep_agents.js.map +1 -0
  8. package/dist/agents/engine.d.ts +85 -0
  9. package/dist/agents/engine.d.ts.map +1 -0
  10. package/dist/agents/engine.js +129 -0
  11. package/dist/agents/engine.js.map +1 -0
  12. package/dist/agents/gateway_chat_model.d.ts +151 -0
  13. package/dist/agents/gateway_chat_model.d.ts.map +1 -0
  14. package/dist/agents/gateway_chat_model.js +350 -0
  15. package/dist/agents/gateway_chat_model.js.map +1 -0
  16. package/dist/agents/guardrail_middleware.d.ts +57 -0
  17. package/dist/agents/guardrail_middleware.d.ts.map +1 -0
  18. package/dist/agents/guardrail_middleware.js +85 -0
  19. package/dist/agents/guardrail_middleware.js.map +1 -0
  20. package/dist/agents/guardrails.d.ts +124 -0
  21. package/dist/agents/guardrails.d.ts.map +1 -0
  22. package/dist/agents/guardrails.js +336 -0
  23. package/dist/agents/guardrails.js.map +1 -0
  24. package/dist/agents/index.d.ts +15 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/ir.d.ts +144 -0
  29. package/dist/agents/ir.d.ts.map +1 -0
  30. package/dist/agents/ir.js +513 -0
  31. package/dist/agents/ir.js.map +1 -0
  32. package/dist/agents/loop.d.ts +145 -0
  33. package/dist/agents/loop.d.ts.map +1 -0
  34. package/dist/agents/loop.js +1025 -0
  35. package/dist/agents/loop.js.map +1 -0
  36. package/dist/agents/memory.d.ts +115 -0
  37. package/dist/agents/memory.d.ts.map +1 -0
  38. package/dist/agents/memory.js +258 -0
  39. package/dist/agents/memory.js.map +1 -0
  40. package/dist/agents/state.d.ts +137 -0
  41. package/dist/agents/state.d.ts.map +1 -0
  42. package/dist/agents/state.js +255 -0
  43. package/dist/agents/state.js.map +1 -0
  44. package/dist/concurrency.d.ts +36 -0
  45. package/dist/concurrency.d.ts.map +1 -0
  46. package/dist/concurrency.js +86 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/control.d.ts +116 -0
  49. package/dist/control.d.ts.map +1 -0
  50. package/dist/control.js +281 -0
  51. package/dist/control.js.map +1 -0
  52. package/dist/cost.d.ts +95 -0
  53. package/dist/cost.d.ts.map +1 -0
  54. package/dist/cost.js +161 -0
  55. package/dist/cost.js.map +1 -0
  56. package/dist/errors.d.ts +213 -0
  57. package/dist/errors.d.ts.map +1 -0
  58. package/dist/errors.js +316 -0
  59. package/dist/errors.js.map +1 -0
  60. package/dist/evals/dataset.d.ts +45 -0
  61. package/dist/evals/dataset.d.ts.map +1 -0
  62. package/dist/evals/dataset.js +147 -0
  63. package/dist/evals/dataset.js.map +1 -0
  64. package/dist/evals/gate.d.ts +236 -0
  65. package/dist/evals/gate.d.ts.map +1 -0
  66. package/dist/evals/gate.js +572 -0
  67. package/dist/evals/gate.js.map +1 -0
  68. package/dist/evals/metrics.d.ts +141 -0
  69. package/dist/evals/metrics.d.ts.map +1 -0
  70. package/dist/evals/metrics.js +364 -0
  71. package/dist/evals/metrics.js.map +1 -0
  72. package/dist/evals/predicate.d.ts +79 -0
  73. package/dist/evals/predicate.d.ts.map +1 -0
  74. package/dist/evals/predicate.js +178 -0
  75. package/dist/evals/predicate.js.map +1 -0
  76. package/dist/evals/runner.d.ts +94 -0
  77. package/dist/evals/runner.d.ts.map +1 -0
  78. package/dist/evals/runner.js +202 -0
  79. package/dist/evals/runner.js.map +1 -0
  80. package/dist/gateway.d.ts +118 -0
  81. package/dist/gateway.d.ts.map +1 -0
  82. package/dist/gateway.js +250 -0
  83. package/dist/gateway.js.map +1 -0
  84. package/dist/index.d.ts +83 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +59 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/internal/json.d.ts +44 -0
  89. package/dist/internal/json.d.ts.map +1 -0
  90. package/dist/internal/json.js +90 -0
  91. package/dist/internal/json.js.map +1 -0
  92. package/dist/internal/text.d.ts +17 -0
  93. package/dist/internal/text.d.ts.map +1 -0
  94. package/dist/internal/text.js +22 -0
  95. package/dist/internal/text.js.map +1 -0
  96. package/dist/pipeline.d.ts +80 -0
  97. package/dist/pipeline.d.ts.map +1 -0
  98. package/dist/pipeline.js +159 -0
  99. package/dist/pipeline.js.map +1 -0
  100. package/dist/policy.d.ts +52 -0
  101. package/dist/policy.d.ts.map +1 -0
  102. package/dist/policy.js +199 -0
  103. package/dist/policy.js.map +1 -0
  104. package/dist/prompts.d.ts +86 -0
  105. package/dist/prompts.d.ts.map +1 -0
  106. package/dist/prompts.js +337 -0
  107. package/dist/prompts.js.map +1 -0
  108. package/dist/providers/base.d.ts +19 -0
  109. package/dist/providers/base.d.ts.map +1 -0
  110. package/dist/providers/base.js +13 -0
  111. package/dist/providers/base.js.map +1 -0
  112. package/dist/providers/fake.d.ts +98 -0
  113. package/dist/providers/fake.d.ts.map +1 -0
  114. package/dist/providers/fake.js +181 -0
  115. package/dist/providers/fake.js.map +1 -0
  116. package/dist/providers/http.d.ts +62 -0
  117. package/dist/providers/http.d.ts.map +1 -0
  118. package/dist/providers/http.js +245 -0
  119. package/dist/providers/http.js.map +1 -0
  120. package/dist/retrieval/chunking.d.ts +88 -0
  121. package/dist/retrieval/chunking.d.ts.map +1 -0
  122. package/dist/retrieval/chunking.js +188 -0
  123. package/dist/retrieval/chunking.js.map +1 -0
  124. package/dist/retrieval/citations.d.ts +98 -0
  125. package/dist/retrieval/citations.d.ts.map +1 -0
  126. package/dist/retrieval/citations.js +134 -0
  127. package/dist/retrieval/citations.js.map +1 -0
  128. package/dist/retrieval/connectors.d.ts +74 -0
  129. package/dist/retrieval/connectors.d.ts.map +1 -0
  130. package/dist/retrieval/connectors.js +218 -0
  131. package/dist/retrieval/connectors.js.map +1 -0
  132. package/dist/retrieval/embedding.d.ts +116 -0
  133. package/dist/retrieval/embedding.d.ts.map +1 -0
  134. package/dist/retrieval/embedding.js +282 -0
  135. package/dist/retrieval/embedding.js.map +1 -0
  136. package/dist/retrieval/gate.d.ts +52 -0
  137. package/dist/retrieval/gate.d.ts.map +1 -0
  138. package/dist/retrieval/gate.js +91 -0
  139. package/dist/retrieval/gate.js.map +1 -0
  140. package/dist/retrieval/hybrid.d.ts +76 -0
  141. package/dist/retrieval/hybrid.d.ts.map +1 -0
  142. package/dist/retrieval/hybrid.js +150 -0
  143. package/dist/retrieval/hybrid.js.map +1 -0
  144. package/dist/retrieval/metrics.d.ts +126 -0
  145. package/dist/retrieval/metrics.d.ts.map +1 -0
  146. package/dist/retrieval/metrics.js +200 -0
  147. package/dist/retrieval/metrics.js.map +1 -0
  148. package/dist/retrieval/pgvector.d.ts +62 -0
  149. package/dist/retrieval/pgvector.d.ts.map +1 -0
  150. package/dist/retrieval/pgvector.js +262 -0
  151. package/dist/retrieval/pgvector.js.map +1 -0
  152. package/dist/retrieval/rerank.d.ts +61 -0
  153. package/dist/retrieval/rerank.d.ts.map +1 -0
  154. package/dist/retrieval/rerank.js +105 -0
  155. package/dist/retrieval/rerank.js.map +1 -0
  156. package/dist/retrieval/retriever.d.ts +125 -0
  157. package/dist/retrieval/retriever.d.ts.map +1 -0
  158. package/dist/retrieval/retriever.js +281 -0
  159. package/dist/retrieval/retriever.js.map +1 -0
  160. package/dist/retrieval/stores.d.ts +106 -0
  161. package/dist/retrieval/stores.d.ts.map +1 -0
  162. package/dist/retrieval/stores.js +142 -0
  163. package/dist/retrieval/stores.js.map +1 -0
  164. package/dist/retrieval/types.d.ts +314 -0
  165. package/dist/retrieval/types.d.ts.map +1 -0
  166. package/dist/retrieval/types.js +388 -0
  167. package/dist/retrieval/types.js.map +1 -0
  168. package/dist/steps.d.ts +156 -0
  169. package/dist/steps.d.ts.map +1 -0
  170. package/dist/steps.js +199 -0
  171. package/dist/steps.js.map +1 -0
  172. package/dist/structured.d.ts +91 -0
  173. package/dist/structured.d.ts.map +1 -0
  174. package/dist/structured.js +155 -0
  175. package/dist/structured.js.map +1 -0
  176. package/dist/tools.d.ts +100 -0
  177. package/dist/tools.d.ts.map +1 -0
  178. package/dist/tools.js +201 -0
  179. package/dist/tools.js.map +1 -0
  180. package/dist/tracing.d.ts +104 -0
  181. package/dist/tracing.d.ts.map +1 -0
  182. package/dist/tracing.js +155 -0
  183. package/dist/tracing.js.map +1 -0
  184. package/dist/types.d.ts +240 -0
  185. package/dist/types.d.ts.map +1 -0
  186. package/dist/types.js +357 -0
  187. package/dist/types.js.map +1 -0
  188. package/package.json +80 -14
@@ -0,0 +1,513 @@
1
+ /**
2
+ * The IR seam: an emitted document in, resolved agent definitions out.
3
+ *
4
+ * The pipeline runtime consumes the IR's *pipeline* shapes and is deliberately unaware of
5
+ * agents; this module is the equivalent seam for them. It reads only the collections an
6
+ * agent can reach -- `agents`, `models`, `prompts`, `tools`, `memory`, `guardrails` -- and
7
+ * resolves every reference at load time, so a loop never runs against a dangling prompt id
8
+ * or an unpriced model.
9
+ *
10
+ * Nothing here invents vocabulary. Field names are the IR's, `instructions` stays the
11
+ * prompt *reference* the IR carries and is resolved to `prompt.template` here, and the
12
+ * scopes are `thread`/`user`/`global`.
13
+ */
14
+ import { ConfigurationError } from '../errors.js';
15
+ import { repr } from '../internal/json.js';
16
+ import { CostProfile, ModelSpec } from '../types.js';
17
+ /** IR model capability -> runtime capability. */
18
+ const RUNTIME_CAPABILITY = {
19
+ 'tool-calling': 'tool-calling',
20
+ 'json-schema': 'structured-output',
21
+ streaming: 'streaming',
22
+ 'long-context': 'long-context',
23
+ embeddings: 'embeddings',
24
+ rerank: 'rerank',
25
+ };
26
+ const ON_BUDGET_EXHAUSTED = new Set(['fail', 'degrade']);
27
+ /** The closed vocabularies from `packages/ir/src/shapes.ts`, repeated on purpose. */
28
+ export const GUARDRAIL_STAGES = new Set([
29
+ 'input',
30
+ 'output',
31
+ 'retrieval',
32
+ 'tool-call',
33
+ ]);
34
+ export const GUARDRAIL_ACTIONS = new Set([
35
+ 'block',
36
+ 'redact',
37
+ 'flag',
38
+ 'escalate',
39
+ ]);
40
+ export const GUARDRAIL_POLICIES = new Set([
41
+ 'pii-detect',
42
+ 'pii-redact',
43
+ 'prompt-injection',
44
+ 'jailbreak',
45
+ 'moderation',
46
+ 'toxicity',
47
+ 'secret-scan',
48
+ ]);
49
+ const SIDE_EFFECTS = new Set(['none', 'read', 'write', 'destructive']);
50
+ /** Whether this agent may move control at all (transfer *or* delegate). */
51
+ export function hasControlTools(agent) {
52
+ return agent.handoffs.length > 0 || agent.delegates.length > 0;
53
+ }
54
+ /**
55
+ * Every guardrail declared on this agent that runs at `stage`.
56
+ *
57
+ * Declaration order is the order of `guardrails` in the IR, and that is the order the
58
+ * engine evaluates in. It has to come from the document: an order the runtime invented
59
+ * would make the outcome of two conflicting guardrails depend on which version of the
60
+ * runtime ran the spec.
61
+ */
62
+ export function stageGuardrails(agent, stage) {
63
+ return agent.guardrails.filter((guardrail) => guardrail.stages.includes(stage));
64
+ }
65
+ /** Everything the loop needs, resolved from one IR document. */
66
+ export class RuntimeSpec {
67
+ models;
68
+ fallbacks;
69
+ prompts;
70
+ tools;
71
+ agents;
72
+ guardrails;
73
+ /**
74
+ * The single concurrency cap, read from the IR's `deployments[].concurrency`. `undefined`
75
+ * means unbounded: the runtime only shares a limiter when a deployment declares one,
76
+ * which keeps plain request/response usage free of surprises.
77
+ */
78
+ concurrency;
79
+ constructor(init) {
80
+ this.models = init.models;
81
+ this.fallbacks = init.fallbacks;
82
+ this.prompts = init.prompts;
83
+ this.tools = init.tools;
84
+ this.agents = init.agents;
85
+ this.guardrails = init.guardrails ?? new Map();
86
+ this.concurrency = init.concurrency;
87
+ }
88
+ agent(agentId) {
89
+ const found = this.agents.get(agentId);
90
+ if (found === undefined) {
91
+ throw new ConfigurationError(`no agent ${repr(agentId)} in the IR; declared agents: ${listRepr(sorted([...this.agents.keys()]))}`);
92
+ }
93
+ return found;
94
+ }
95
+ systemPrompt(agent) {
96
+ const found = this.prompts.get(agent.instructions);
97
+ if (found === undefined) {
98
+ throw new ConfigurationError(`agent ${repr(agent.id)} names prompt ${repr(agent.instructions)}, ` +
99
+ `which the IR does not declare; declared prompts: ${listRepr(sorted([...this.prompts.keys()]))}`);
100
+ }
101
+ return found;
102
+ }
103
+ fallbacksFor(alias) {
104
+ return this.fallbacks.get(alias) ?? [];
105
+ }
106
+ toolSpecs(agent) {
107
+ return agent.tools.map((toolId) => {
108
+ const found = this.tools.get(toolId);
109
+ if (found === undefined)
110
+ throw new ConfigurationError(`no tool ${repr(toolId)} in the IR`);
111
+ return found;
112
+ });
113
+ }
114
+ /**
115
+ * Combined price, the same number `agents/budget-degrade` compares.
116
+ *
117
+ * The gate compares `inputPerMTok + outputPerMTok`; keeping the identical sum here means
118
+ * a spec the gate accepted cannot have the runtime pick a "cheaper" alias that the gate
119
+ * would have called more expensive.
120
+ */
121
+ price(alias) {
122
+ const spec = this.models.get(alias);
123
+ if (spec === undefined) {
124
+ throw new ConfigurationError(`no model ${repr(alias)} in the IR; declared models: ${listRepr(sorted([...this.models.keys()]))}`);
125
+ }
126
+ return spec.cost.inputPer1kUsd + spec.cost.outputPer1kUsd;
127
+ }
128
+ /**
129
+ * The first declared fallback that is strictly cheaper than `alias`.
130
+ *
131
+ * One step, in the order the spec declared: this is the alias ladder's next rung, not a
132
+ * search for the cheapest reachable model. `undefined` means there is nowhere to step,
133
+ * which is what makes a `degrade` declaration fail closed instead of pretending to
134
+ * degrade.
135
+ */
136
+ cheaperFallback(alias) {
137
+ const budget = this.price(alias);
138
+ for (const candidate of this.fallbacksFor(alias)) {
139
+ if (this.models.has(candidate) && this.price(candidate) < budget)
140
+ return candidate;
141
+ }
142
+ return undefined;
143
+ }
144
+ }
145
+ /** Resolve an emitted IR document into a {@link RuntimeSpec}. */
146
+ export function fromIr(document) {
147
+ const rawModels = byId(document.models, 'models');
148
+ const rawPrompts = byId(document.prompts, 'prompts');
149
+ const rawTools = byId(document.tools, 'tools');
150
+ const rawMemory = byId(document.memory, 'memory');
151
+ const rawAgents = byId(document.agents, 'agents');
152
+ const prompts = new Map();
153
+ for (const [promptId, entry] of rawPrompts) {
154
+ prompts.set(promptId, requiredStr(entry, 'template', `prompt ${repr(promptId)}`));
155
+ }
156
+ const tools = new Map();
157
+ for (const [toolId, entry] of rawTools) {
158
+ tools.set(toolId, {
159
+ id: toolId,
160
+ name: requiredStr(entry, 'name', `tool ${repr(toolId)}`),
161
+ description: str(entry.description) || '',
162
+ requiresConfirmation: entry.requiresConfirmation === true,
163
+ sideEffects: sideEffects(toolId, entry.sideEffects),
164
+ auth: policyExpr(entry.auth, `tool ${repr(toolId)} auth`),
165
+ });
166
+ }
167
+ const memory = new Map();
168
+ for (const [memoryId, entry] of rawMemory) {
169
+ memory.set(memoryId, memoryDefinition(memoryId, entry));
170
+ }
171
+ const guardrails = new Map();
172
+ for (const [guardrailId, entry] of byId(document.guardrails, 'guardrails')) {
173
+ guardrails.set(guardrailId, guardrailDefinition(guardrailId, entry, tools));
174
+ }
175
+ const fallbacks = new Map();
176
+ for (const [modelId, entry] of rawModels) {
177
+ fallbacks.set(modelId, strList(entry.fallbacks, `model ${repr(modelId)}`));
178
+ }
179
+ const agents = new Map();
180
+ for (const [agentId, entry] of rawAgents) {
181
+ agents.set(agentId, agentDefinition(agentId, entry, prompts, tools, memory, guardrails));
182
+ }
183
+ checkControlTargets(agents);
184
+ const reachable = [...reachableModels(agents, fallbacks)].sort();
185
+ const models = new Map();
186
+ for (const modelId of reachable) {
187
+ const entry = rawModels.get(modelId);
188
+ if (entry === undefined) {
189
+ throw new ConfigurationError(`no model ${repr(modelId)} in the IR`);
190
+ }
191
+ models.set(modelId, modelDefinition(modelId, entry));
192
+ }
193
+ const reachableFallbacks = new Map();
194
+ for (const alias of models.keys())
195
+ reachableFallbacks.set(alias, fallbacks.get(alias) ?? []);
196
+ return new RuntimeSpec({
197
+ models,
198
+ fallbacks: reachableFallbacks,
199
+ prompts,
200
+ tools,
201
+ agents,
202
+ guardrails,
203
+ concurrency: concurrencyCap(document.deployments),
204
+ });
205
+ }
206
+ function agentDefinition(agentId, entry, prompts, tools, memory, guardrails) {
207
+ const where = `agent ${repr(agentId)}`;
208
+ const instructions = str(entry.instructions) || '';
209
+ if (!prompts.has(instructions)) {
210
+ throw new ConfigurationError(`${where} names prompt ${repr(instructions)}, which the IR does not declare; ` +
211
+ `declared prompts: ${listRepr(sorted([...prompts.keys()]))}`);
212
+ }
213
+ const toolIds = strList(entry.tools, `${where} tools`);
214
+ const missingTools = sorted(toolIds.filter((id) => !tools.has(id)));
215
+ if (missingTools.length > 0) {
216
+ throw new ConfigurationError(`${where} names undeclared tools: ${listRepr(missingTools)}`);
217
+ }
218
+ const memoryIds = strList(entry.memory, `${where} memory`);
219
+ const missingMemory = sorted(memoryIds.filter((id) => !memory.has(id)));
220
+ if (missingMemory.length > 0) {
221
+ throw new ConfigurationError(`${where} names undeclared memory: ${listRepr(missingMemory)}`);
222
+ }
223
+ const guardrailIds = strList(entry.guardrails, `${where} guardrails`);
224
+ const missingGuardrails = sorted(guardrailIds.filter((id) => !guardrails.has(id)));
225
+ if (missingGuardrails.length > 0) {
226
+ throw new ConfigurationError(`${where} names undeclared guardrails: ${listRepr(missingGuardrails)}`);
227
+ }
228
+ const engine = str(entry.engine) || 'native';
229
+ const engineVersion = str(entry.engineVersion) || '';
230
+ const onBudget = str(entry.onBudgetExhausted) || 'fail';
231
+ if (!ON_BUDGET_EXHAUSTED.has(onBudget)) {
232
+ throw new ConfigurationError(`${where} has onBudgetExhausted ${repr(onBudget)}; expected one of ` +
233
+ `${listRepr(sorted([...ON_BUDGET_EXHAUSTED]))}`);
234
+ }
235
+ const maxSteps = entry.maxSteps;
236
+ if (typeof maxSteps !== 'number' || !Number.isInteger(maxSteps) || maxSteps < 1) {
237
+ throw new ConfigurationError(`${where} needs a positive maxSteps, got ${valueRepr(maxSteps)}`);
238
+ }
239
+ return {
240
+ id: agentId,
241
+ name: str(entry.name) || agentId,
242
+ instructions,
243
+ model: str(entry.model) || '',
244
+ tools: toolIds,
245
+ memory: memoryIds.map((id) => {
246
+ const found = memory.get(id);
247
+ if (found === undefined)
248
+ throw new ConfigurationError(`no memory ${repr(id)} in the IR`);
249
+ return found;
250
+ }),
251
+ maxSteps,
252
+ maxTokensBudget: optionalInt(entry.maxTokensBudget),
253
+ maxCostBudget: optionalFloat(entry.maxCostBudget),
254
+ onBudgetExhausted: onBudget,
255
+ handoffs: strList(entry.handoffs, `${where} handoffs`),
256
+ delegates: strList(entry.delegates, `${where} delegates`),
257
+ engine,
258
+ engineVersion,
259
+ approval: approval(where, entry.humanInTheLoop),
260
+ guardrails: guardrailIds.map((id) => {
261
+ const found = guardrails.get(id);
262
+ if (found === undefined)
263
+ throw new ConfigurationError(`no guardrail ${repr(id)} in the IR`);
264
+ return found;
265
+ }),
266
+ };
267
+ }
268
+ function guardrailDefinition(guardrailId, entry, tools) {
269
+ const where = `guardrail ${repr(guardrailId)}`;
270
+ const stages = strList(entry.stages, `${where} stages`);
271
+ const unknownStages = sorted(stages.filter((stage) => !GUARDRAIL_STAGES.has(stage)));
272
+ if (unknownStages.length > 0) {
273
+ throw new ConfigurationError(`${where} names unknown stages ${listRepr(unknownStages)}; expected a subset of ` +
274
+ `${listRepr(sorted([...GUARDRAIL_STAGES]))}`);
275
+ }
276
+ const policies = strList(entry.policies, `${where} policies`);
277
+ const unknownPolicies = sorted(policies.filter((policy) => !GUARDRAIL_POLICIES.has(policy)));
278
+ if (unknownPolicies.length > 0) {
279
+ throw new ConfigurationError(`${where} names unknown policies ${listRepr(unknownPolicies)}; expected a subset of ` +
280
+ `${listRepr(sorted([...GUARDRAIL_POLICIES]))}`);
281
+ }
282
+ const action = str(entry.action) || '';
283
+ if (!GUARDRAIL_ACTIONS.has(action)) {
284
+ throw new ConfigurationError(`${where} has action ${repr(action)}; expected one of ` +
285
+ `${listRepr(sorted([...GUARDRAIL_ACTIONS]))}`);
286
+ }
287
+ const redact = strList(entry.redact, `${where} redact`);
288
+ if (action === 'redact' && redact.length === 0) {
289
+ throw new ConfigurationError(`${where} uses action 'redact' with no redact fields; a redaction that names ` +
290
+ 'no field cannot redact anything');
291
+ }
292
+ const toolIds = strList(entry.tools, `${where} tools`);
293
+ const missing = sorted(toolIds.filter((id) => !tools.has(id)));
294
+ if (missing.length > 0) {
295
+ throw new ConfigurationError(`${where} names undeclared tools: ${listRepr(missing)}`);
296
+ }
297
+ const onFail = entry.onFail;
298
+ if (!isObject(onFail))
299
+ throw new ConfigurationError(`${where} needs an onFail object`);
300
+ return {
301
+ id: guardrailId,
302
+ stages,
303
+ policies,
304
+ action,
305
+ redact,
306
+ tools: toolIds,
307
+ message: requiredStr(onFail, 'message', `${where} onFail`),
308
+ fallbackPrompt: str(onFail.fallbackPrompt) || undefined,
309
+ log: onFail.log === true,
310
+ };
311
+ }
312
+ function sideEffects(toolId, raw) {
313
+ if (raw === undefined || raw === null)
314
+ return 'none';
315
+ const value = str(raw);
316
+ if (value === undefined || !SIDE_EFFECTS.has(value)) {
317
+ throw new ConfigurationError(`tool ${repr(toolId)} has sideEffects ${valueRepr(raw)}; expected one of ` +
318
+ `${listRepr(sorted([...SIDE_EFFECTS]))}`);
319
+ }
320
+ return value;
321
+ }
322
+ function policyExpr(raw, where) {
323
+ if (raw === undefined || raw === null)
324
+ return undefined;
325
+ if (!isObject(raw))
326
+ throw new ConfigurationError(`${where} must be a parsed policy object`);
327
+ return raw;
328
+ }
329
+ function approval(where, raw) {
330
+ if (raw === undefined || raw === null)
331
+ return undefined;
332
+ if (!isObject(raw))
333
+ throw new ConfigurationError(`${where} humanInTheLoop must be an object`);
334
+ const when = raw.when;
335
+ const channel = str(raw.channel) || '';
336
+ if (!isObject(when)) {
337
+ throw new ConfigurationError(`${where} humanInTheLoop needs a parsed 'when' policy`);
338
+ }
339
+ if (channel === '') {
340
+ throw new ConfigurationError(`${where} declares humanInTheLoop with no channel; without a channel there ` +
341
+ 'is nowhere to ask, so the loop refuses to run it');
342
+ }
343
+ return { when, channel };
344
+ }
345
+ function checkControlTargets(agents) {
346
+ for (const agent of agents.values()) {
347
+ for (const [field, targets] of [
348
+ ['handoffs', agent.handoffs],
349
+ ['delegates', agent.delegates],
350
+ ]) {
351
+ const unknown = sorted(targets.filter((target) => !agents.has(target)));
352
+ if (unknown.length > 0) {
353
+ throw new ConfigurationError(`agent ${repr(agent.id)} ${field} undeclared agents: ${listRepr(unknown)}`);
354
+ }
355
+ if (targets.includes(agent.id)) {
356
+ throw new ConfigurationError(`agent ${repr(agent.id)} ${field} itself; a control edge must leave the agent`);
357
+ }
358
+ }
359
+ const both = sorted(agent.handoffs.filter((target) => agent.delegates.includes(target)));
360
+ if (both.length > 0) {
361
+ throw new ConfigurationError(`agent ${repr(agent.id)} lists ${listRepr(both)} in both handoffs and delegates; ` +
362
+ 'transfer and delegation are different semantics, so a target is one or the other');
363
+ }
364
+ }
365
+ }
366
+ function reachableModels(agents, fallbacks) {
367
+ const reachable = new Set();
368
+ const queue = [...agents.values()].map((agent) => agent.model);
369
+ while (queue.length > 0) {
370
+ const alias = queue.pop();
371
+ if (reachable.has(alias))
372
+ continue;
373
+ reachable.add(alias);
374
+ queue.push(...(fallbacks.get(alias) ?? []));
375
+ }
376
+ return reachable;
377
+ }
378
+ function modelDefinition(modelId, entry) {
379
+ const where = `model ${repr(modelId)}`;
380
+ const cost = entry.costProfile;
381
+ if (!isObject(cost)) {
382
+ throw new ConfigurationError(`${where} has no resolved costProfile; a budget cannot be enforced against ` +
383
+ 'an unpriced model');
384
+ }
385
+ const limits = entry.limits;
386
+ if (!isObject(limits))
387
+ throw new ConfigurationError(`${where} has no limits`);
388
+ const contextTokens = limits.contextTokens;
389
+ if (typeof contextTokens !== 'number' || !Number.isInteger(contextTokens) || contextTokens < 1) {
390
+ throw new ConfigurationError(`${where} has no positive limits.contextTokens`);
391
+ }
392
+ let maxOutput = typeof limits.maxOutputTokens === 'number' ? limits.maxOutputTokens : 0;
393
+ if (!Number.isInteger(maxOutput) || maxOutput < 1) {
394
+ // The IR treats an output ceiling as optional; the runtime must still have one, so
395
+ // the context window is the only ceiling the IR guarantees.
396
+ maxOutput = contextTokens;
397
+ }
398
+ const capabilities = [];
399
+ for (const name of strList(entry.capabilities, `${where} capabilities`)) {
400
+ const mapped = RUNTIME_CAPABILITY[name];
401
+ if (mapped !== undefined)
402
+ capabilities.push(mapped);
403
+ }
404
+ return new ModelSpec({
405
+ name: requiredStr(entry, 'modelId', where),
406
+ provider: requiredStr(entry, 'provider', where),
407
+ cost: new CostProfile({
408
+ inputPer1kUsd: numeric(cost.inputPerMTok) / 1000,
409
+ outputPer1kUsd: numeric(cost.outputPerMTok) / 1000,
410
+ }),
411
+ contextWindow: contextTokens,
412
+ maxOutputTokens: maxOutput,
413
+ capabilities,
414
+ });
415
+ }
416
+ function concurrencyCap(raw) {
417
+ if (!Array.isArray(raw))
418
+ return undefined;
419
+ const declared = [];
420
+ for (const entry of raw) {
421
+ if (!isObject(entry))
422
+ continue;
423
+ const value = entry.concurrency;
424
+ if (typeof value === 'number' && Number.isInteger(value) && value >= 1) {
425
+ declared.push(value);
426
+ }
427
+ }
428
+ return declared.length > 0 ? Math.max(...declared) : undefined;
429
+ }
430
+ function memoryDefinition(memoryId, entry) {
431
+ const where = `memory ${repr(memoryId)}`;
432
+ const tokenBudget = entry.tokenBudget;
433
+ if (typeof tokenBudget !== 'number' || !Number.isInteger(tokenBudget) || tokenBudget < 1) {
434
+ throw new ConfigurationError(`${where} needs a positive tokenBudget`);
435
+ }
436
+ return {
437
+ id: memoryId,
438
+ kind: str(entry.kind) || 'buffer',
439
+ scope: str(entry.scope) || 'thread',
440
+ tokenBudget,
441
+ backend: str(entry.backend),
442
+ store: str(entry.store),
443
+ summarizeModel: str(entry.summarizeModel),
444
+ ttl: str(entry.ttl),
445
+ redact: strList(entry.redact, `${where} redact`),
446
+ };
447
+ }
448
+ function byId(raw, collection) {
449
+ const resolved = new Map();
450
+ if (raw === undefined || raw === null)
451
+ return resolved;
452
+ if (!Array.isArray(raw))
453
+ throw new ConfigurationError(`IR ${collection} must be an array`);
454
+ for (const entry of raw) {
455
+ if (!isObject(entry)) {
456
+ throw new ConfigurationError(`IR ${collection} contains a non-object entry`);
457
+ }
458
+ const entryId = str(entry.id);
459
+ if (!entryId) {
460
+ throw new ConfigurationError(`IR ${collection} contains an entry with no id`);
461
+ }
462
+ resolved.set(entryId, entry);
463
+ }
464
+ return resolved;
465
+ }
466
+ function isObject(value) {
467
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
468
+ }
469
+ function str(value) {
470
+ return typeof value === 'string' ? value : undefined;
471
+ }
472
+ function requiredStr(entry, key, where) {
473
+ const value = str(entry[key]);
474
+ if (!value)
475
+ throw new ConfigurationError(`${where} has no ${repr(key)}`);
476
+ return value;
477
+ }
478
+ function strList(value, where) {
479
+ if (value === undefined || value === null)
480
+ return [];
481
+ if (!Array.isArray(value)) {
482
+ throw new ConfigurationError(`${where} must be an array of strings`);
483
+ }
484
+ return value.filter((item) => typeof item === 'string');
485
+ }
486
+ function optionalInt(value) {
487
+ return typeof value === 'number' && Number.isInteger(value) ? value : undefined;
488
+ }
489
+ function optionalFloat(value) {
490
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
491
+ }
492
+ function numeric(value) {
493
+ return typeof value === 'number' && Number.isFinite(value) ? value : 0;
494
+ }
495
+ /** Ascending sort, matching Python's `sorted()` on the same strings. */
496
+ function sorted(values) {
497
+ return [...values].sort();
498
+ }
499
+ /** A Python-style list literal for a diagnostic, e.g. `['a', 'b']`. */
500
+ function listRepr(values) {
501
+ return `[${values.map((value) => repr(value)).join(', ')}]`;
502
+ }
503
+ /** Python's `repr()` for a scalar that may be absent or non-string. */
504
+ function valueRepr(value) {
505
+ if (typeof value === 'string')
506
+ return repr(value);
507
+ if (value === undefined || value === null)
508
+ return 'None';
509
+ if (typeof value === 'number' || typeof value === 'boolean')
510
+ return String(value);
511
+ return JSON.stringify(value);
512
+ }
513
+ //# sourceMappingURL=ir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.js","sourceRoot":"","sources":["../../src/agents/ir.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAmB,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE,iDAAiD;AACjD,MAAM,kBAAkB,GAAyC;IAC/D,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,mBAAmB;IAClC,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,cAAc;IAC9B,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAEzD,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;CACX,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AA0EvE,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAsB,EACtB,KAAa;IAEb,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,gEAAgE;AAChE,MAAM,OAAO,WAAW;IACb,MAAM,CAAiC;IACvC,SAAS,CAAyC;IAClD,OAAO,CAA8B;IACrC,KAAK,CAAgC;IACrC,MAAM,CAAuC;IAC7C,UAAU,CAA2C;IAC9D;;;;OAIG;IACM,WAAW,CAAqB;IAEzC,YAAY,IAQX;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,kBAAkB,CAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,gCAAgC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrG,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,KAAsB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI;gBAClE,oDAAoD,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,kBAAkB,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAa;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,kBAAkB,CAC1B,YAAY,IAAI,CAAC,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAC5D,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,KAAa;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM;gBAAE,OAAO,SAAS,CAAC;QACrF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,UAAU,MAAM,CAAC,QAAiC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;YAChB,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;YACzC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,KAAK,IAAI;YACzD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;YACnD,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC1D,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3E,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;IACvD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACzC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,kBAAkB,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7F,OAAO,IAAI,WAAW,CAAC;QACrB,MAAM;QACN,SAAS,EAAE,kBAAkB;QAC7B,OAAO;QACP,KAAK;QACL,MAAM;QACN,UAAU;QACV,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACtB,OAAe,EACf,KAA8B,EAC9B,OAAoC,EACpC,KAAoC,EACpC,MAA6C,EAC7C,UAAoD;IAEpD,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,iBAAiB,IAAI,CAAC,YAAY,CAAC,mCAAmC;YAC5E,qBAAqB,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,4BAA4B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,6BAA6B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,iCAAiC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;IAC7C,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC;IACxD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,0BAA0B,IAAI,CAAC,QAAQ,CAAC,oBAAoB;YAClE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,mCAAmC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO;QAChC,YAAY;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QAC7B,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,kBAAkB,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,QAAQ;QACR,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC;QACnD,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;QACjD,iBAAiB,EAAE,QAAQ;QAC3B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,WAAW,CAAC;QACtD,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,YAAY,CAAC;QACzD,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC;QAC/C,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YAC5F,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAAmB,EACnB,KAA8B,EAC9B,KAAoC;IAEpC,MAAM,KAAK,GAAG,aAAa,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,yBAAyB,QAAQ,CAAC,aAAa,CAAC,yBAAyB;YAC/E,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,2BAA2B,QAAQ,CAAC,eAAe,CAAC,yBAAyB;YACnF,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACjD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,eAAe,IAAI,CAAC,MAAM,CAAC,oBAAoB;YACrD,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,sEAAsE;YAC5E,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,4BAA4B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;IACvF,OAAO;QACL,EAAE,EAAE,WAAW;QACf,MAAM;QACN,QAAQ;QACR,MAAM;QACN,MAAM;QACN,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,SAAS,CAAC;QAC1D,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,SAAS;QACvD,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,GAAY;IAC/C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,kBAAkB,CAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,oBAAoB,SAAS,CAAC,GAAG,CAAC,oBAAoB;YACxE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,GAAY,EAAE,KAAa;IAC7C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAC;IAC5F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAY;IAC3C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,8CAA8C,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,oEAAoE;YAC1E,kDAAkD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA4C;IACvE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI;YAC7B,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;SACtB,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,uBAAuB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,8CAA8C,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,kBAAkB,CAC1B,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,mCAAmC;gBAChF,kFAAkF,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAA4C,EAC5C,SAAiD;IAEjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAY,CAAC;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACnC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,KAA8B;IACtE,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAC1B,GAAG,KAAK,oEAAoE;YAC1E,mBAAmB,CACtB,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,GAAW,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClD,mFAAmF;QACnF,4DAA4D;QAC5D,SAAS,GAAG,aAAa,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,eAAe,CAAC,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,SAAS,CAAC;QACnB,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;QAC1C,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;QAC/C,IAAI,EAAE,IAAI,WAAW,CAAC;YACpB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI;YAChD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;SACnD,CAAC;QACF,aAAa,EAAE,aAAa;QAC5B,eAAe,EAAE,SAAS;QAC1B,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,KAA8B;IACxE,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ;QACjC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ;QACnC,WAAW;QACX,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACvB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;QACzC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,GAAY,EAAE,UAAkB;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC5D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,MAAM,UAAU,mBAAmB,CAAC,CAAC;IAC3F,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAkB,CAAC,MAAM,UAAU,8BAA8B,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,MAAM,UAAU,+BAA+B,CAAC,CAAC;QAChF,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,GAAG,CAAC,KAAc;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B,EAAE,GAAW,EAAE,KAAa;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,KAAa;IAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,wEAAwE;AACxE,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,uEAAuE;AACvE,SAAS,QAAQ,CAAC,MAAyB;IACzC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,uEAAuE;AACvE,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}