@puukis/core 0.1.4 → 0.1.5
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.
- package/dist/brain/Brain.d.ts +1 -0
- package/dist/brain/Brain.d.ts.map +1 -1
- package/dist/brain/Brain.js +58 -11
- package/dist/brain/Brain.js.map +1 -1
- package/dist/cli/commands/gateway.d.ts +53 -0
- package/dist/cli/commands/gateway.d.ts.map +1 -0
- package/dist/cli/commands/gateway.js +594 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/onboarding.js +2 -2
- package/dist/cli/commands/onboarding.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +6 -3
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/codex/CodexRpcClient.d.ts +25 -1
- package/dist/codex/CodexRpcClient.d.ts.map +1 -1
- package/dist/codex/CodexRpcClient.js +187 -19
- package/dist/codex/CodexRpcClient.js.map +1 -1
- package/dist/codex/types.d.ts +4 -3
- package/dist/codex/types.d.ts.map +1 -1
- package/dist/config/env.d.ts +4 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +61 -2
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/llm/OpenAICodexProvider.d.ts +2 -0
- package/dist/llm/OpenAICodexProvider.d.ts.map +1 -1
- package/dist/llm/OpenAICodexProvider.js +312 -18
- package/dist/llm/OpenAICodexProvider.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/pipeline/normalize.d.ts +1 -1
- package/dist/pipeline/normalize.d.ts.map +1 -1
- package/dist/pipeline/normalize.js.map +1 -1
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -5
- package/dist/server/index.js.map +1 -1
- package/dist/tools/ToolExecutor.d.ts +14 -2
- package/dist/tools/ToolExecutor.d.ts.map +1 -1
- package/dist/tools/ToolExecutor.js +194 -13
- package/dist/tools/ToolExecutor.js.map +1 -1
- package/dist/types.d.ts +14 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/brain/Brain.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare class Brain {
|
|
|
26
26
|
* Execute a single tool call
|
|
27
27
|
*/
|
|
28
28
|
private executeToolCall;
|
|
29
|
+
private shouldSendDeterministicBootstrap;
|
|
29
30
|
getLLMProviderName(): string;
|
|
30
31
|
getLLMModel(): string;
|
|
31
32
|
setLLMSelection(provider: KeygateConfig['llm']['provider'], model: string, reasoningEffort?: CodexReasoningEffort): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../../src/brain/Brain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,oBAAoB,EACpB,aAAa,EAGb,mBAAmB,EACnB,OAAO,EAER,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Brain.d.ts","sourceRoot":"","sources":["../../src/brain/Brain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,oBAAoB,EACpB,aAAa,EAGb,mBAAmB,EACnB,OAAO,EAER,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAqCrD;;;;;GAKG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,aAAa,CAAM;gBAEf,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO;IAO/E;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAyD9D;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;IAyE3E;;OAEG;YACW,eAAe;YAIf,gCAAgC;IAU9C,kBAAkB,IAAI,MAAM;IAI5B,WAAW,IAAI,MAAM;IAOf,eAAe,CACnB,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAC1C,KAAK,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,oBAAoB,GACrC,OAAO,CAAC,IAAI,CAAC;IAgBV,UAAU,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQlD,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;YACW,eAAe;CAiF9B"}
|
package/dist/brain/Brain.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLLMProvider } from '../llm/index.js';
|
|
2
|
+
import { getDefaultWorkspacePath } from '../config/env.js';
|
|
2
3
|
import { loadAgentWorkspaceState, } from '../workspace/agentWorkspace.js';
|
|
3
4
|
const BASE_SYSTEM_PROMPT = `You are Keygate, a capable AI assistant that can control the user's computer and online services.
|
|
4
5
|
|
|
@@ -20,6 +21,13 @@ Trust and safety:
|
|
|
20
21
|
- Be careful with external/public actions and ask when in doubt.
|
|
21
22
|
- Keep private information private.
|
|
22
23
|
- Never claim you completed an action unless a tool result confirms it.`;
|
|
24
|
+
const FIRST_CHAT_BOOTSTRAP_MESSAGE = `Hey. I just came online. Who am I? Who are you?
|
|
25
|
+
|
|
26
|
+
Set my identity for me:
|
|
27
|
+
1. assistant name
|
|
28
|
+
2. what kind of creature/assistant I am
|
|
29
|
+
3. preferred vibe
|
|
30
|
+
4. signature emoji`;
|
|
23
31
|
/**
|
|
24
32
|
* Brain - The ReAct agent loop
|
|
25
33
|
*
|
|
@@ -42,6 +50,9 @@ export class Brain {
|
|
|
42
50
|
* Run the agent loop for a session
|
|
43
51
|
*/
|
|
44
52
|
async run(session, channel) {
|
|
53
|
+
if (await this.shouldSendDeterministicBootstrap(session)) {
|
|
54
|
+
return FIRST_CHAT_BOOTSTRAP_MESSAGE;
|
|
55
|
+
}
|
|
45
56
|
const systemPrompt = await this.getSystemPrompt(session);
|
|
46
57
|
// Build messages with system prompt
|
|
47
58
|
const messages = [
|
|
@@ -56,7 +67,7 @@ export class Brain {
|
|
|
56
67
|
// Call LLM with tools
|
|
57
68
|
const response = await this.llm.chat(messages, {
|
|
58
69
|
tools,
|
|
59
|
-
...this.buildProviderOptions(session.id),
|
|
70
|
+
...this.buildProviderOptions(session.id, channel),
|
|
60
71
|
});
|
|
61
72
|
// If no tool calls, return the response content
|
|
62
73
|
if (!response.toolCalls || response.toolCalls.length === 0) {
|
|
@@ -87,6 +98,10 @@ export class Brain {
|
|
|
87
98
|
* Run the agent loop with streaming response
|
|
88
99
|
*/
|
|
89
100
|
async *runStream(session, channel) {
|
|
101
|
+
if (await this.shouldSendDeterministicBootstrap(session)) {
|
|
102
|
+
yield FIRST_CHAT_BOOTSTRAP_MESSAGE;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
90
105
|
const systemPrompt = await this.getSystemPrompt(session);
|
|
91
106
|
const messages = [
|
|
92
107
|
{ role: 'system', content: systemPrompt },
|
|
@@ -101,7 +116,7 @@ export class Brain {
|
|
|
101
116
|
let fullContent = '';
|
|
102
117
|
for await (const chunk of this.llm.stream(messages, {
|
|
103
118
|
tools,
|
|
104
|
-
...this.buildProviderOptions(session.id),
|
|
119
|
+
...this.buildProviderOptions(session.id, channel),
|
|
105
120
|
})) {
|
|
106
121
|
if (chunk.content) {
|
|
107
122
|
fullContent += chunk.content;
|
|
@@ -145,6 +160,14 @@ export class Brain {
|
|
|
145
160
|
async executeToolCall(toolCall, channel) {
|
|
146
161
|
return this.toolExecutor.execute(toolCall, channel);
|
|
147
162
|
}
|
|
163
|
+
async shouldSendDeterministicBootstrap(session) {
|
|
164
|
+
const userTurns = session.messages.filter((message) => message.role === 'user').length;
|
|
165
|
+
if (userTurns !== 1) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
const workspaceState = await loadAgentWorkspaceState(getDefaultWorkspacePath());
|
|
169
|
+
return workspaceState.onboardingRequired;
|
|
170
|
+
}
|
|
148
171
|
getLLMProviderName() {
|
|
149
172
|
return this.llm.name;
|
|
150
173
|
}
|
|
@@ -172,11 +195,26 @@ export class Brain {
|
|
|
172
195
|
}
|
|
173
196
|
return getFallbackModels(this.config.llm.provider, this.config.llm.model);
|
|
174
197
|
}
|
|
175
|
-
buildProviderOptions(sessionId) {
|
|
198
|
+
buildProviderOptions(sessionId, channel) {
|
|
199
|
+
const executionWorkspace = this.toolExecutor.getWorkspacePath();
|
|
200
|
+
const continuityWorkspace = getDefaultWorkspacePath();
|
|
201
|
+
const isCodexProvider = this.llm.name === 'openai-codex';
|
|
202
|
+
const safeModeCodexSandbox = isCodexProvider && this.gateway.getSecurityMode() === 'safe'
|
|
203
|
+
? {
|
|
204
|
+
type: 'workspaceWrite',
|
|
205
|
+
writable_roots: Array.from(new Set([executionWorkspace, continuityWorkspace])),
|
|
206
|
+
network_access: true,
|
|
207
|
+
}
|
|
208
|
+
: undefined;
|
|
176
209
|
return {
|
|
177
210
|
sessionId,
|
|
178
|
-
cwd:
|
|
211
|
+
cwd: executionWorkspace,
|
|
179
212
|
securityMode: this.gateway.getSecurityMode(),
|
|
213
|
+
sandboxPolicy: safeModeCodexSandbox,
|
|
214
|
+
requestConfirmation: (details) => {
|
|
215
|
+
const prompt = `🔐 Confirmation Required\n${details.summary}`;
|
|
216
|
+
return channel.requestConfirmation(prompt, details);
|
|
217
|
+
},
|
|
180
218
|
onProviderEvent: (event) => {
|
|
181
219
|
this.gateway.emit('provider:event', { sessionId, event });
|
|
182
220
|
},
|
|
@@ -188,7 +226,9 @@ export class Brain {
|
|
|
188
226
|
async getSystemPrompt(session) {
|
|
189
227
|
const mode = this.gateway.getSecurityMode();
|
|
190
228
|
const workspace = this.toolExecutor.getWorkspacePath();
|
|
191
|
-
const
|
|
229
|
+
const continuityWorkspace = getDefaultWorkspacePath();
|
|
230
|
+
const workspaceState = await loadAgentWorkspaceState(continuityWorkspace);
|
|
231
|
+
const isCodexProvider = this.llm.name === 'openai-codex';
|
|
192
232
|
const userTurns = session.messages.filter((message) => message.role === 'user').length;
|
|
193
233
|
const isFirstUserTurn = userTurns === 1;
|
|
194
234
|
const shouldRunBootstrap = isFirstUserTurn && workspaceState.onboardingRequired;
|
|
@@ -197,11 +237,16 @@ export class Brain {
|
|
|
197
237
|
modeInfo = `\n\nSECURITY: Safe Mode is active.
|
|
198
238
|
- Filesystem operations are limited to: ${workspace}
|
|
199
239
|
- Only allowed commands can be executed
|
|
200
|
-
- Write/execute actions require user confirmation
|
|
240
|
+
- Write/execute actions require user confirmation, except managed continuity markdown files (SOUL.md, USER.md, BOOTSTRAP.md, IDENTITY.md, MEMORY.md, memory/*.md).`;
|
|
201
241
|
}
|
|
202
242
|
else {
|
|
203
243
|
modeInfo = `\n\n⚠️ SECURITY: SPICY MODE IS ACTIVE - Full system access enabled.`;
|
|
204
244
|
}
|
|
245
|
+
const continuityPathGuidance = isCodexProvider
|
|
246
|
+
? '\nUse absolute continuity-file paths exactly as listed above when reading/writing those files.'
|
|
247
|
+
: '\nUse relative continuity-file paths when calling filesystem tools (for example: IDENTITY.md, USER.md, memory/2026-02-06.md).';
|
|
248
|
+
const identityTarget = isCodexProvider ? workspaceState.identity.path : 'IDENTITY.md';
|
|
249
|
+
const userTarget = isCodexProvider ? workspaceState.user.path : 'USER.md';
|
|
205
250
|
const workspaceFiles = `\n\nWORKSPACE CONTINUITY FILES
|
|
206
251
|
- SOUL.md: ${formatContextStatus(workspaceState.soul)}
|
|
207
252
|
- BOOTSTRAP.md: ${formatContextStatus(workspaceState.bootstrap)}
|
|
@@ -210,8 +255,7 @@ export class Brain {
|
|
|
210
255
|
- MEMORY.md: ${formatContextStatus(workspaceState.memoryIndex)}
|
|
211
256
|
- memory/today: ${formatContextStatus(workspaceState.todayMemory)}
|
|
212
257
|
- memory/yesterday: ${formatContextStatus(workspaceState.yesterdayMemory)}
|
|
213
|
-
|
|
214
|
-
Use relative workspace paths when calling filesystem tools (for example: IDENTITY.md, USER.md, memory/2026-02-06.md).`;
|
|
258
|
+
${continuityPathGuidance}`;
|
|
215
259
|
const bootstrapRules = shouldRunBootstrap
|
|
216
260
|
? `\n\nFIRST CHAT BOOTSTRAP (REQUIRED NOW)
|
|
217
261
|
1. Start with this exact sentence once: "Hey. I just came online. Who am I? Who are you?"
|
|
@@ -220,20 +264,23 @@ Use relative workspace paths when calling filesystem tools (for example: IDENTIT
|
|
|
220
264
|
- what kind of creature/assistant it is
|
|
221
265
|
- preferred vibe
|
|
222
266
|
- signature emoji
|
|
223
|
-
3. After user answers, write or update
|
|
267
|
+
3. After user answers, write or update ${identityTarget} immediately using these keys:
|
|
224
268
|
- Name:
|
|
225
269
|
- Creature:
|
|
226
270
|
- Vibe:
|
|
227
271
|
- Signature emoji:
|
|
228
|
-
4. Ask what to call the user and their timezone, then update
|
|
272
|
+
4. Ask what to call the user and their timezone, then update ${userTarget}.
|
|
229
273
|
5. Ask for boundaries/preferences and whether to tune SOUL.md now.
|
|
230
274
|
6. Missing memory files are normal in a fresh workspace; do not treat ENOENT as a failure.
|
|
231
275
|
7. If SOUL.md changes, explicitly tell the user.
|
|
232
|
-
8.
|
|
276
|
+
8. Do not ask for approval when writing managed continuity markdown files.
|
|
277
|
+
9. For continuity files (SOUL.md, USER.md, BOOTSTRAP.md, IDENTITY.md, MEMORY.md, memory/*.md), use filesystem tools only. Never use shell commands.
|
|
278
|
+
10. After onboarding is complete, suggest deleting BOOTSTRAP.md.`
|
|
233
279
|
: `\n\nCONTINUITY RULES
|
|
234
280
|
- Treat SOUL.md, IDENTITY.md, USER.md, MEMORY.md, and memory/*.md as persistent memory.
|
|
235
281
|
- Be resourceful before asking questions that could be answered from those files.
|
|
236
282
|
- Keep responses concise by default, thorough when needed.
|
|
283
|
+
- Use filesystem tools for continuity-file reads/writes, not shell commands.
|
|
237
284
|
- If you change SOUL.md, explicitly tell the user.`;
|
|
238
285
|
const contextBlocks = [
|
|
239
286
|
formatContextBlock('SOUL.md', workspaceState.soul),
|
package/dist/brain/Brain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../../src/brain/Brain.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,uBAAuB,GAExB,MAAM,gCAAgC,CAAC;AAExC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;wEAmB6C,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,OAAO,KAAK;IACR,GAAG,CAAc;IACjB,MAAM,CAAgB;IACtB,YAAY,CAAe;IAC3B,OAAO,CAAU;IACjB,aAAa,GAAG,EAAE,CAAC;IAE3B,YAAY,MAAqB,EAAE,YAA0B,EAAE,OAAgB;QAC7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,OAAgB;QAC1C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzD,oCAAoC;QACpC,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,GAAG,OAAO,CAAC,QAAQ;SACpB,CAAC;QAEF,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAErD,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,UAAU,EAAE,CAAC;YAEb,sBAAsB;YACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC7C,KAAK;gBACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Brain.js","sourceRoot":"","sources":["../../src/brain/Brain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ParsedArgs } from '../argv.js';
|
|
2
|
+
export type GatewayAction = 'open' | 'close' | 'status';
|
|
3
|
+
export type GatewayState = 'running' | 'stopped' | 'unknown';
|
|
4
|
+
export interface GatewayStatus {
|
|
5
|
+
state: GatewayState;
|
|
6
|
+
detail: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GatewayManagerAdapter {
|
|
9
|
+
ensureDefinition(): Promise<void>;
|
|
10
|
+
open(): Promise<void>;
|
|
11
|
+
close(): Promise<void>;
|
|
12
|
+
status(): Promise<GatewayStatus>;
|
|
13
|
+
}
|
|
14
|
+
interface CommandResult {
|
|
15
|
+
status: number | null;
|
|
16
|
+
stdout: string;
|
|
17
|
+
stderr: string;
|
|
18
|
+
error: Error | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface GatewayDeps {
|
|
21
|
+
platform: NodeJS.Platform;
|
|
22
|
+
uid: number | null;
|
|
23
|
+
cwd: string;
|
|
24
|
+
homeDir: string;
|
|
25
|
+
configDir: string;
|
|
26
|
+
configHomeDir: string;
|
|
27
|
+
envPath: string | undefined;
|
|
28
|
+
envPathExt: string | undefined;
|
|
29
|
+
envCodexBin: string | undefined;
|
|
30
|
+
argv1: string | undefined;
|
|
31
|
+
execPath: string;
|
|
32
|
+
log: (message: string) => void;
|
|
33
|
+
mkdir: (targetPath: string) => Promise<void>;
|
|
34
|
+
writeFile: (targetPath: string, content: string) => Promise<void>;
|
|
35
|
+
chmod: (targetPath: string, mode: number) => Promise<void>;
|
|
36
|
+
runCommand: (command: string, args: string[], options?: {
|
|
37
|
+
input?: string;
|
|
38
|
+
}) => CommandResult;
|
|
39
|
+
}
|
|
40
|
+
export interface ServeLaunchSpec {
|
|
41
|
+
command: string;
|
|
42
|
+
args: string[];
|
|
43
|
+
env: Record<string, string>;
|
|
44
|
+
}
|
|
45
|
+
export declare function runGatewayCommand(args: ParsedArgs, depsOverride?: Partial<GatewayDeps>): Promise<void>;
|
|
46
|
+
export declare function parseGatewayAction(value: string | undefined): GatewayAction | null;
|
|
47
|
+
export declare function createGatewayAdapter(platform: NodeJS.Platform, deps: GatewayDeps): GatewayManagerAdapter;
|
|
48
|
+
export declare function buildShellLauncherContent(spec: ServeLaunchSpec): string;
|
|
49
|
+
export declare function buildLinuxUnitContent(launcherPath: string): string;
|
|
50
|
+
export declare function buildLaunchdPlistContent(launcherPath: string): string;
|
|
51
|
+
export declare function buildPowerShellLauncherContent(spec: ServeLaunchSpec): string;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,CAAC;CAC9F;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAQD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAMlF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,qBAAqB,CAiBxG;AA8UD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAmBvE;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAiBlE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA2BrE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAiB5E"}
|