youmd 0.3.3 → 0.4.0

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.
@@ -0,0 +1,435 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.projectCommand = projectCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const readline = __importStar(require("readline"));
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const project_1 = require("../lib/project");
45
+ const config_1 = require("../lib/config");
46
+ // ─── Helpers ──────────────────────────────────────────────────────────
47
+ function createRL() {
48
+ return readline.createInterface({
49
+ input: process.stdin,
50
+ output: process.stdout,
51
+ });
52
+ }
53
+ function ask(rl, question) {
54
+ return new Promise((resolve) => {
55
+ rl.question(question, (answer) => {
56
+ resolve(answer.trim());
57
+ });
58
+ });
59
+ }
60
+ function ensureProjectsRoot() {
61
+ // Use local .youmd/projects/ relative to the bundle dir, or cwd
62
+ let base;
63
+ if ((0, config_1.localBundleExists)()) {
64
+ base = (0, config_1.getLocalBundleDir)();
65
+ }
66
+ else {
67
+ base = path.join(process.cwd(), ".youmd");
68
+ }
69
+ const projectsRoot = path.join(base, "projects");
70
+ if (!fs.existsSync(projectsRoot)) {
71
+ fs.mkdirSync(projectsRoot, { recursive: true });
72
+ }
73
+ return projectsRoot;
74
+ }
75
+ function slugify(name) {
76
+ return name
77
+ .toLowerCase()
78
+ .replace(/[^a-z0-9]+/g, "-")
79
+ .replace(/^-+|-+$/g, "")
80
+ .slice(0, 64);
81
+ }
82
+ // ─── Subcommands ──────────────────────────────────────────────────────
83
+ async function initProject(args) {
84
+ const rl = createRL();
85
+ console.log("");
86
+ // Auto-detect project from cwd
87
+ const detected = (0, config_1.detectProjectContext)();
88
+ let projectName = args[0] || "";
89
+ if (!projectName && detected) {
90
+ console.log(chalk_1.default.dim(` detected project: ${detected.name} (${detected.root})`));
91
+ const useDetected = await ask(rl, chalk_1.default.dim(` use "${detected.name}" as project name? [Y/n]: `));
92
+ if (!useDetected || useDetected.toLowerCase() !== "n") {
93
+ projectName = detected.name;
94
+ }
95
+ }
96
+ if (!projectName) {
97
+ projectName = await ask(rl, chalk_1.default.dim(" project name: "));
98
+ }
99
+ if (!projectName) {
100
+ console.log(chalk_1.default.yellow(" project name is required."));
101
+ console.log("");
102
+ rl.close();
103
+ return;
104
+ }
105
+ const description = await ask(rl, chalk_1.default.dim(" description (optional): "));
106
+ // Ask if they want to create a .youmd-project marker file in the project root
107
+ let createMarker = false;
108
+ if (detected) {
109
+ const youmdProjectPath = path.join(detected.root, ".youmd-project");
110
+ if (!fs.existsSync(youmdProjectPath)) {
111
+ const markerAnswer = await ask(rl, chalk_1.default.dim(" create .youmd-project marker in project root? [Y/n]: "));
112
+ createMarker = !markerAnswer || markerAnswer.toLowerCase() !== "n";
113
+ }
114
+ }
115
+ rl.close();
116
+ const projectsRoot = ensureProjectsRoot();
117
+ const slug = slugify(projectName);
118
+ const projectDir = path.join(projectsRoot, slug);
119
+ if (fs.existsSync(path.join(projectDir, "project.json"))) {
120
+ console.log(chalk_1.default.yellow(` project "${slug}" already exists.`));
121
+ console.log(chalk_1.default.dim(` ${projectDir}`));
122
+ console.log("");
123
+ return;
124
+ }
125
+ (0, project_1.initProjectFiles)(projectDir, projectName, description);
126
+ // Also create .youmd-project marker in the project root if requested
127
+ if (createMarker && detected) {
128
+ const youmdProjectPath = path.join(detected.root, ".youmd-project");
129
+ const projectFile = {
130
+ name: projectName,
131
+ description: description || undefined,
132
+ createdAt: new Date().toISOString(),
133
+ };
134
+ fs.writeFileSync(youmdProjectPath, JSON.stringify(projectFile, null, 2) + "\n");
135
+ console.log(chalk_1.default.dim(` created ${youmdProjectPath}`));
136
+ }
137
+ // Also ensure global project dirs exist
138
+ (0, config_1.ensureProjectDirs)(projectName);
139
+ console.log("");
140
+ console.log(chalk_1.default.green(" project initialized:") + " " + chalk_1.default.bold(projectName));
141
+ console.log(chalk_1.default.dim(` ${projectDir}`));
142
+ console.log("");
143
+ console.log(chalk_1.default.dim(" structure:"));
144
+ console.log(chalk_1.default.dim(" project.json metadata"));
145
+ console.log(chalk_1.default.dim(" context/prd.md product requirements"));
146
+ console.log(chalk_1.default.dim(" context/todo.md task tracking"));
147
+ console.log(chalk_1.default.dim(" context/features.md feature requests"));
148
+ console.log(chalk_1.default.dim(" context/changelog.md changes log"));
149
+ console.log(chalk_1.default.dim(" context/decisions.md decision log"));
150
+ console.log(chalk_1.default.dim(" agent/instructions.md agent instructions"));
151
+ console.log(chalk_1.default.dim(" agent/preferences.json agent preferences"));
152
+ console.log(chalk_1.default.dim(" agent/memory.json agent memories"));
153
+ console.log(chalk_1.default.dim(" private/notes.md private notes"));
154
+ console.log("");
155
+ }
156
+ function listAllProjects() {
157
+ const projectsRoot = (0, project_1.findProjectsRoot)();
158
+ if (!projectsRoot) {
159
+ console.log("");
160
+ console.log(chalk_1.default.yellow(" no .youmd/projects/ directory found."));
161
+ console.log(chalk_1.default.dim(" run ") + chalk_1.default.cyan("youmd project init") + chalk_1.default.dim(" to create one."));
162
+ console.log("");
163
+ return;
164
+ }
165
+ const projects = (0, project_1.listProjects)(projectsRoot);
166
+ if (projects.length === 0) {
167
+ console.log("");
168
+ console.log(chalk_1.default.dim(" no projects yet."));
169
+ console.log(chalk_1.default.dim(" run ") + chalk_1.default.cyan("youmd project init <name>") + chalk_1.default.dim(" to create one."));
170
+ console.log("");
171
+ return;
172
+ }
173
+ console.log("");
174
+ console.log(" " + chalk_1.default.bold("projects:"));
175
+ console.log("");
176
+ for (const name of projects) {
177
+ const projectDir = path.join(projectsRoot, name);
178
+ const ctx = (0, project_1.readProjectContext)(projectDir);
179
+ if (ctx) {
180
+ const desc = ctx.meta.description ? chalk_1.default.dim(` — ${ctx.meta.description}`) : "";
181
+ console.log(` ${chalk_1.default.cyan(ctx.meta.name)}${desc}`);
182
+ console.log(chalk_1.default.dim(` updated: ${ctx.meta.updated_at.slice(0, 10)}`));
183
+ console.log("");
184
+ }
185
+ }
186
+ }
187
+ function showProject(args) {
188
+ let projectName = args[0];
189
+ // Auto-detect project from cwd if no name given
190
+ if (!projectName) {
191
+ const detected = (0, config_1.detectProjectContext)();
192
+ if (detected) {
193
+ projectName = detected.name;
194
+ console.log("");
195
+ console.log(" " + chalk_1.default.hex("#C46A3A")("detected project:") + " " + chalk_1.default.white(detected.name) +
196
+ chalk_1.default.dim(` (${detected.root})`));
197
+ if (detected.youmdProject?.description) {
198
+ console.log(chalk_1.default.dim(` ${detected.youmdProject.description}`));
199
+ }
200
+ // Show project-scoped private notes from global .youmd
201
+ const notes = (0, config_1.readProjectPrivateNotes)(detected.name);
202
+ if (notes) {
203
+ console.log("");
204
+ console.log(" " + chalk_1.default.hex("#C46A3A")("project private notes:"));
205
+ for (const line of notes.split("\n").slice(0, 10)) {
206
+ console.log(chalk_1.default.white(` ${line}`));
207
+ }
208
+ const lineCount = notes.split("\n").length;
209
+ if (lineCount > 10) {
210
+ console.log(chalk_1.default.dim(` ... ${lineCount - 10} more lines`));
211
+ }
212
+ }
213
+ }
214
+ else {
215
+ console.log("");
216
+ console.log(chalk_1.default.yellow(" usage: youmd project show <name>"));
217
+ console.log(chalk_1.default.dim(" or run from inside a project directory for auto-detection."));
218
+ console.log("");
219
+ return;
220
+ }
221
+ }
222
+ const projectsRoot = (0, project_1.findProjectsRoot)();
223
+ if (!projectsRoot) {
224
+ console.log("");
225
+ console.log(chalk_1.default.yellow(" no projects directory found."));
226
+ console.log("");
227
+ return;
228
+ }
229
+ const slug = slugify(projectName);
230
+ const projectDir = (0, project_1.getProjectDir)(projectsRoot, projectName);
231
+ const ctx = (0, project_1.readProjectContext)(projectDir);
232
+ if (!ctx) {
233
+ console.log("");
234
+ console.log(chalk_1.default.yellow(` project "${slug}" not found.`));
235
+ console.log("");
236
+ return;
237
+ }
238
+ console.log("");
239
+ console.log(" " + chalk_1.default.bold(ctx.meta.name));
240
+ if (ctx.meta.description) {
241
+ console.log(chalk_1.default.dim(` ${ctx.meta.description}`));
242
+ }
243
+ console.log(chalk_1.default.dim(` created: ${ctx.meta.created_at.slice(0, 10)} updated: ${ctx.meta.updated_at.slice(0, 10)}`));
244
+ console.log("");
245
+ // Show preferences
246
+ const prefs = ctx.preferences;
247
+ if (prefs.tone || prefs.stack || prefs.focus) {
248
+ console.log(" " + chalk_1.default.hex("#C46A3A")("preferences:"));
249
+ if (prefs.tone)
250
+ console.log(chalk_1.default.dim(` tone: ${prefs.tone}`));
251
+ if (prefs.stack)
252
+ console.log(chalk_1.default.dim(` stack: ${prefs.stack}`));
253
+ if (prefs.focus)
254
+ console.log(chalk_1.default.dim(` focus: ${prefs.focus}`));
255
+ console.log("");
256
+ }
257
+ // Show TODO summary
258
+ const todoLines = ctx.todo.split("\n").filter((l) => l.startsWith("- ") || l.startsWith("* "));
259
+ if (todoLines.length > 0) {
260
+ console.log(" " + chalk_1.default.hex("#C46A3A")("tasks:") + chalk_1.default.dim(` (${todoLines.length})`));
261
+ for (const line of todoLines.slice(0, 5)) {
262
+ console.log(chalk_1.default.dim(` ${line}`));
263
+ }
264
+ if (todoLines.length > 5) {
265
+ console.log(chalk_1.default.dim(` ... and ${todoLines.length - 5} more`));
266
+ }
267
+ console.log("");
268
+ }
269
+ // Show memories count
270
+ const memories = ctx.memories;
271
+ if (memories.length > 0) {
272
+ console.log(" " + chalk_1.default.hex("#C46A3A")("memories:") + chalk_1.default.dim(` ${memories.length}`));
273
+ console.log("");
274
+ }
275
+ console.log(chalk_1.default.dim(` path: ${projectDir}`));
276
+ console.log("");
277
+ }
278
+ function showMemories(args) {
279
+ const projectName = args[0];
280
+ if (!projectName) {
281
+ console.log("");
282
+ console.log(chalk_1.default.yellow(" usage: youmd project memories <name>"));
283
+ console.log("");
284
+ return;
285
+ }
286
+ const projectsRoot = (0, project_1.findProjectsRoot)();
287
+ if (!projectsRoot) {
288
+ console.log("");
289
+ console.log(chalk_1.default.yellow(" no projects directory found."));
290
+ console.log("");
291
+ return;
292
+ }
293
+ const projectDir = (0, project_1.getProjectDir)(projectsRoot, projectName);
294
+ const memories = (0, project_1.getProjectMemories)(projectDir);
295
+ if (memories.length === 0) {
296
+ console.log("");
297
+ console.log(chalk_1.default.dim(" no memories for this project yet."));
298
+ console.log("");
299
+ return;
300
+ }
301
+ console.log("");
302
+ console.log(" " + chalk_1.default.bold("project memories:") + chalk_1.default.dim(` (${memories.length})`));
303
+ console.log("");
304
+ for (const mem of memories.slice(-20)) {
305
+ console.log(` ${chalk_1.default.hex("#C46A3A")(`[${mem.category}]`)} ${chalk_1.default.dim(mem.content)}`);
306
+ console.log(chalk_1.default.dim(` ${mem.created_at.slice(0, 10)}`));
307
+ }
308
+ console.log("");
309
+ }
310
+ async function addMemory(args) {
311
+ const projectName = args[0];
312
+ if (!projectName) {
313
+ console.log("");
314
+ console.log(chalk_1.default.yellow(" usage: youmd project remember <name> <category> <content>"));
315
+ console.log("");
316
+ return;
317
+ }
318
+ const category = args[1] || "note";
319
+ const content = args.slice(2).join(" ");
320
+ if (!content) {
321
+ console.log("");
322
+ console.log(chalk_1.default.yellow(" memory content is required."));
323
+ console.log(chalk_1.default.dim(" usage: youmd project remember <name> <category> <content>"));
324
+ console.log("");
325
+ return;
326
+ }
327
+ const projectsRoot = (0, project_1.findProjectsRoot)();
328
+ if (!projectsRoot) {
329
+ console.log("");
330
+ console.log(chalk_1.default.yellow(" no projects directory found."));
331
+ console.log("");
332
+ return;
333
+ }
334
+ const projectDir = (0, project_1.getProjectDir)(projectsRoot, projectName);
335
+ if (!fs.existsSync(path.join(projectDir, "project.json"))) {
336
+ console.log("");
337
+ console.log(chalk_1.default.yellow(` project "${projectName}" not found.`));
338
+ console.log("");
339
+ return;
340
+ }
341
+ (0, project_1.addProjectMemory)(projectDir, { category, content });
342
+ console.log("");
343
+ console.log(chalk_1.default.green(` memory saved`) + chalk_1.default.dim(` [${category}] ${content.slice(0, 60)}`));
344
+ console.log("");
345
+ }
346
+ async function editFile(args) {
347
+ const projectName = args[0];
348
+ const filePath = args[1];
349
+ if (!projectName || !filePath) {
350
+ console.log("");
351
+ console.log(chalk_1.default.yellow(" usage: youmd project edit <name> <file-path>"));
352
+ console.log(chalk_1.default.dim(" files: context/prd.md, context/todo.md, context/features.md, ..."));
353
+ console.log("");
354
+ return;
355
+ }
356
+ const projectsRoot = (0, project_1.findProjectsRoot)();
357
+ if (!projectsRoot) {
358
+ console.log("");
359
+ console.log(chalk_1.default.yellow(" no projects directory found."));
360
+ console.log("");
361
+ return;
362
+ }
363
+ const projectDir = (0, project_1.getProjectDir)(projectsRoot, projectName);
364
+ const fullPath = path.join(projectDir, filePath);
365
+ if (!fs.existsSync(fullPath)) {
366
+ console.log("");
367
+ console.log(chalk_1.default.yellow(` file not found: ${filePath}`));
368
+ console.log("");
369
+ return;
370
+ }
371
+ const current = fs.readFileSync(fullPath, "utf-8");
372
+ console.log("");
373
+ console.log(chalk_1.default.dim(` --- ${filePath} ---`));
374
+ console.log(chalk_1.default.dim(current.slice(0, 500)));
375
+ if (current.length > 500)
376
+ console.log(chalk_1.default.dim(" ..."));
377
+ console.log(chalk_1.default.dim(` --- end ---`));
378
+ console.log("");
379
+ console.log(chalk_1.default.dim(` edit this file directly at:`));
380
+ console.log(` ${fullPath}`);
381
+ console.log("");
382
+ }
383
+ // ─── Main command router ──────────────────────────────────────────────
384
+ async function projectCommand(subcommand, ...args) {
385
+ const sub = (subcommand || "").toLowerCase();
386
+ switch (sub) {
387
+ case "init":
388
+ await initProject(args);
389
+ break;
390
+ case "list":
391
+ case "ls":
392
+ listAllProjects();
393
+ break;
394
+ case "show":
395
+ case "info":
396
+ showProject(args);
397
+ break;
398
+ case "memories":
399
+ case "memory":
400
+ showMemories(args);
401
+ break;
402
+ case "remember":
403
+ await addMemory(args);
404
+ break;
405
+ case "edit":
406
+ await editFile(args);
407
+ break;
408
+ default: {
409
+ // If no subcommand, try auto-detecting the current project
410
+ const detected = (0, config_1.detectProjectContext)();
411
+ if (detected && !sub) {
412
+ // Show current project info
413
+ showProject([]);
414
+ return;
415
+ }
416
+ console.log("");
417
+ console.log(" " + chalk_1.default.bold("youmd project") + chalk_1.default.dim(" — manage project agent context"));
418
+ console.log("");
419
+ console.log(" " + chalk_1.default.cyan("subcommands:"));
420
+ console.log("");
421
+ console.log(` ${chalk_1.default.cyan("init [name]".padEnd(28))} ${chalk_1.default.dim("initialize a new project")}`);
422
+ console.log(` ${chalk_1.default.cyan("list".padEnd(28))} ${chalk_1.default.dim("list all projects")}`);
423
+ console.log(` ${chalk_1.default.cyan("show [name]".padEnd(28))} ${chalk_1.default.dim("show project details (auto-detects in project dir)")}`);
424
+ console.log(` ${chalk_1.default.cyan("memories <name>".padEnd(28))} ${chalk_1.default.dim("list project memories")}`);
425
+ console.log(` ${chalk_1.default.cyan("remember <name> <cat> <msg>".padEnd(28))} ${chalk_1.default.dim("add a memory to a project")}`);
426
+ console.log(` ${chalk_1.default.cyan("edit <name> <file>".padEnd(28))} ${chalk_1.default.dim("show a project file path for editing")}`);
427
+ console.log("");
428
+ console.log(chalk_1.default.dim(" projects are stored in .youmd/projects/<name>/"));
429
+ console.log(chalk_1.default.dim(" run from a project directory for auto-detection."));
430
+ console.log("");
431
+ break;
432
+ }
433
+ }
434
+ }
435
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6ZA,wCAoDC;AAjdD,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AACrC,kDAA0B;AAC1B,4CASwB;AACxB,0CAOuB;AAEvB,yEAAyE;AAEzE,SAAS,QAAQ;IACf,OAAO,QAAQ,CAAC,eAAe,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,GAAG,CAAC,EAAsB,EAAE,QAAgB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB;IACzB,gEAAgE;IAChE,IAAI,IAAY,CAAC;IACjB,IAAI,IAAA,0BAAiB,GAAE,EAAE,CAAC;QACxB,IAAI,GAAG,IAAA,0BAAiB,GAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,yEAAyE;AAEzE,KAAK,UAAU,WAAW,CAAC,IAAc;IACvC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,IAAA,6BAAoB,GAAE,CAAC;IACxC,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CACrE,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACtD,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAE3E,8EAA8E;IAC9E,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACzG,YAAY,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;QACrE,CAAC;IACH,CAAC;IAED,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAA,0BAAgB,EAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEvD,qEAAqE;IACrE,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACpE,MAAM,WAAW,GAAqB;YACpC,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,WAAW,IAAI,SAAS;YACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,wCAAwC;IACxC,IAAA,0BAAiB,EAAC,WAAW,CAAC,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,YAAY,GAAG,IAAA,0BAAgB,GAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAA,4BAAkB,EAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAc;IACjC,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE1B,gDAAgD;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAA,6BAAoB,GAAE,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,GAAG,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnF,eAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CACjC,CAAC;YACF,IAAI,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,uDAAuD;YACvD,MAAM,KAAK,GAAG,IAAA,gCAAuB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACnE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC3C,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,SAAS,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAgB,GAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAA,4BAAkB,EAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,mBAAmB;IACnB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;IAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzF,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAgB,GAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAA,4BAAkB,EAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAc;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAgB,GAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,WAAW,cAAc,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAA,0BAAgB,EAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAc;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0BAAgB,GAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,QAAQ,MAAM,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,yEAAyE;AAElE,KAAK,UAAU,cAAc,CAAC,UAAmB,EAAE,GAAG,IAAc;IACzE,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE7C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACP,eAAe,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,UAAU;YACb,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,OAAO,CAAC,CAAC,CAAC;YACR,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrB,4BAA4B;gBAC5B,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;YAC9H,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACrG,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YACrH,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;YACvH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ const build_1 = require("./commands/build");
11
11
  const publish_1 = require("./commands/publish");
12
12
  const add_1 = require("./commands/add");
13
13
  const diff_1 = require("./commands/diff");
14
+ const export_1 = require("./commands/export");
14
15
  const preview_1 = require("./commands/preview");
15
16
  const link_1 = require("./commands/link");
16
17
  const keys_1 = require("./commands/keys");
@@ -20,6 +21,7 @@ const push_1 = require("./commands/push");
20
21
  const sync_1 = require("./commands/sync");
21
22
  const memories_1 = require("./commands/memories");
22
23
  const private_1 = require("./commands/private");
24
+ const project_1 = require("./commands/project");
23
25
  const program = new commander_1.Command();
24
26
  program
25
27
  .name("youmd")
@@ -62,8 +64,15 @@ program
62
64
  .action(add_1.addCommand);
63
65
  program
64
66
  .command("diff")
65
- .description("Show changes since last publish")
66
- .action(diff_1.diffCommand);
67
+ .description("Show changes between local bundle and published version")
68
+ .action(() => (0, diff_1.diffCommand)());
69
+ program
70
+ .command("export")
71
+ .description("Export profile to you.json and/or you.md")
72
+ .option("--json", "Export only you.json")
73
+ .option("--md", "Export only you.md")
74
+ .option("-o, --output <path>", "Output directory")
75
+ .action((options) => (0, export_1.exportCommand)(options));
67
76
  program
68
77
  .command("preview")
69
78
  .description("Start a local preview server")
@@ -88,14 +97,14 @@ program
88
97
  .option("-w, --watch", "Watch for local changes and auto-push")
89
98
  .action(sync_1.syncCommand);
90
99
  const linkCmd = program
91
- .command("link [subcommand]")
92
- .description("Manage context links (create, list, revoke)")
100
+ .command("link [subcommand] [arg]")
101
+ .description("Manage context links (create, list, revoke, preview)")
93
102
  .option("--scope <scope>", "Link scope: public or full", "public")
94
103
  .option("--ttl <ttl>", "Time to live: 1h, 24h, 7d, 30d, 90d, never", "7d")
95
104
  .option("--max-uses <n>", "Maximum number of uses")
96
- .option("--id <id>", "Link ID (for revoke)");
97
- linkCmd.action((subcommand, options) => {
98
- return (0, link_1.linkCommand)(subcommand, options);
105
+ .option("--id <id>", "Link ID or token (for revoke/preview)");
106
+ linkCmd.action((subcommand, arg, options) => {
107
+ return (0, link_1.linkCommand)(subcommand, { ...options, arg });
99
108
  });
100
109
  const keysCmd = program
101
110
  .command("keys [subcommand]")
@@ -118,5 +127,11 @@ program
118
127
  .action((subcommand, args) => {
119
128
  return (0, private_1.privateCommand)(subcommand, ...(args || []));
120
129
  });
130
+ program
131
+ .command("project [subcommand] [args...]")
132
+ .description("Manage project agent context (init, list, show, memories)")
133
+ .action((subcommand, args) => {
134
+ return (0, project_1.projectCommand)(subcommand, ...(args || []));
135
+ });
121
136
  program.parse(process.argv);
122
137
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -22,4 +22,55 @@ export declare function readLocalConfig(): LocalConfig | null;
22
22
  export declare function writeLocalConfig(config: LocalConfig): void;
23
23
  export declare function localBundleExists(): boolean;
24
24
  export declare function isAuthenticated(): boolean;
25
+ export interface YoumdProjectFile {
26
+ name: string;
27
+ description?: string;
28
+ createdAt?: string;
29
+ }
30
+ export interface ProjectContext {
31
+ root: string;
32
+ name: string;
33
+ marker: string;
34
+ youmdProject?: YoumdProjectFile;
35
+ }
36
+ /**
37
+ * Walk up from cwd looking for project markers.
38
+ * Returns project context if found, null otherwise.
39
+ */
40
+ export declare function detectProjectContext(): ProjectContext | null;
41
+ /**
42
+ * Get the global .youmd/projects/{project-name}/ directory for project-specific files.
43
+ */
44
+ export declare function getProjectBundleDir(projectName: string): string;
45
+ /**
46
+ * Get the private context directory for a project.
47
+ */
48
+ export declare function getProjectPrivateDir(projectName: string): string;
49
+ /**
50
+ * Ensure the project bundle directory structure exists.
51
+ */
52
+ export declare function ensureProjectDirs(projectName: string): string;
53
+ /**
54
+ * Read project-specific private notes from .youmd/projects/{name}/private/notes.md
55
+ */
56
+ export declare function readProjectPrivateNotes(projectName: string): string | null;
57
+ /**
58
+ * Write project-specific private notes.
59
+ */
60
+ export declare function writeProjectPrivateNotes(projectName: string, content: string): void;
61
+ /**
62
+ * Read project-specific config/context from .youmd/projects/{name}/context.json
63
+ */
64
+ export declare function readProjectContext(projectName: string): Record<string, unknown> | null;
65
+ /**
66
+ * Write project-specific context.
67
+ */
68
+ export declare function writeProjectContext(projectName: string, context: Record<string, unknown>): void;
69
+ /**
70
+ * List all known projects from .youmd/projects/
71
+ */
72
+ export declare function listProjects(): Array<{
73
+ name: string;
74
+ dir: string;
75
+ }>;
25
76
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAU/C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK5D;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAWpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAU/C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK5D;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAWpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAG1D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAYD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,GAAG,IAAI,CAwB5D;AAyDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAInF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQtF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAI/F;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBnE"}