synomem 0.1.0 → 0.2.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.
Files changed (73) hide show
  1. package/ARCHITECTURE.md +2 -2
  2. package/CHANGELOG.md +37 -1
  3. package/README.md +28 -15
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +311 -70
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client.d.ts +96 -17
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +333 -76
  10. package/dist/client.js.map +1 -1
  11. package/dist/config.d.ts +2 -2
  12. package/dist/config.js +8 -8
  13. package/dist/import.d.ts +207 -13
  14. package/dist/import.d.ts.map +1 -1
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/mcp/index.d.ts.map +1 -1
  20. package/dist/mcp/index.js +156 -31
  21. package/dist/mcp/index.js.map +1 -1
  22. package/dist/mcp-server.js +54 -8
  23. package/dist/mcp-server.js.map +1 -1
  24. package/dist/ports/repository.d.ts +18 -1
  25. package/dist/ports/repository.d.ts.map +1 -1
  26. package/dist/projections.d.ts +18 -1
  27. package/dist/projections.d.ts.map +1 -1
  28. package/dist/projections.js +137 -44
  29. package/dist/projections.js.map +1 -1
  30. package/dist/remote.d.ts +57 -9
  31. package/dist/remote.d.ts.map +1 -1
  32. package/dist/remote.js +43 -2
  33. package/dist/remote.js.map +1 -1
  34. package/dist/schemas.d.ts +302 -21
  35. package/dist/schemas.d.ts.map +1 -1
  36. package/dist/schemas.js +142 -26
  37. package/dist/schemas.js.map +1 -1
  38. package/dist/service.d.ts +57 -10
  39. package/dist/service.d.ts.map +1 -1
  40. package/dist/skill-install.d.ts +8 -2
  41. package/dist/skill-install.d.ts.map +1 -1
  42. package/dist/skill-install.js +6 -11
  43. package/dist/skill-install.js.map +1 -1
  44. package/dist/storage.d.ts +41 -1
  45. package/dist/storage.d.ts.map +1 -1
  46. package/dist/storage.js +254 -36
  47. package/dist/storage.js.map +1 -1
  48. package/dist/types.d.ts +213 -38
  49. package/dist/types.d.ts.map +1 -1
  50. package/docs/cli.md +53 -20
  51. package/docs/examples.md +4 -4
  52. package/docs/mcp.md +12 -4
  53. package/docs/skill.md +10 -7
  54. package/docs/storage-format.md +4 -4
  55. package/openapi/synomem-v1.yaml +24 -24
  56. package/package.json +1 -1
  57. package/skills/synomem/SKILL.md +24 -8
  58. package/skills/synomem/agents/openai.yaml +1 -1
  59. package/skills/synomem/references/examples.md +1 -1
  60. package/src/cli.ts +572 -173
  61. package/src/client.ts +391 -79
  62. package/src/config.ts +8 -8
  63. package/src/index.ts +11 -1
  64. package/src/mcp/index.ts +189 -30
  65. package/src/mcp-server.ts +58 -8
  66. package/src/ports/repository.ts +16 -0
  67. package/src/projections.ts +139 -44
  68. package/src/remote.ts +118 -8
  69. package/src/schemas.ts +147 -26
  70. package/src/service.ts +59 -7
  71. package/src/skill-install.ts +14 -17
  72. package/src/storage.ts +326 -34
  73. package/src/types.ts +228 -39
@@ -1,4 +1,4 @@
1
- import type { ActorIdentity, AgentProfile, ChangePage, ItemListInput, ItemSummary, KudosListInput, KudosSummary, SynomemConfig, SynomemEvent, Page, RecordKind } from '../types.js';
1
+ import type { ActorIdentity, AgentProfile, AgentRuntimeBinding, ChangePage, ItemListInput, JsonValue, ItemSummary, KudosListInput, KudosSummary, SynomemConfig, SynomemEvent, Page, RecordKind } from '../types.js';
2
2
  /**
3
3
  * Operations required by authoritative domain behavior.
4
4
  *
@@ -21,6 +21,23 @@ export interface SynomemRepository {
21
21
  updateAgent(profile: AgentProfile, updatedAt: string): Awaitable<void>;
22
22
  getAgent(idOrAlias: string): Awaitable<AgentProfile | undefined>;
23
23
  listAgents(): Awaitable<AgentProfile[]>;
24
+ /** Resolves a name case-insensitively, reporting ambiguity instead of guessing. */
25
+ resolveAgent(query: string): Awaitable<{
26
+ match?: AgentProfile;
27
+ candidates: AgentProfile[];
28
+ }>;
29
+ listRuntimeBindings(agentId: string): Awaitable<AgentRuntimeBinding[]>;
30
+ bindRuntime(binding: {
31
+ id: string;
32
+ agentId: string;
33
+ installationId?: string;
34
+ runtime: string;
35
+ profile?: string;
36
+ capabilities?: Record<string, JsonValue>;
37
+ boundAt: string;
38
+ }): Awaitable<void>;
39
+ unbindRuntime(bindingId: string): Awaitable<boolean>;
40
+ touchRuntimeBinding(agentId: string, runtime: string, at: string): Awaitable<void>;
24
41
  listKudosSummaries(input: Required<Pick<KudosListInput, 'limit' | 'offset'>> & KudosListInput, viewer: ActorIdentity): Awaitable<Page<KudosSummary>>;
25
42
  listKudosChanges(after: string | undefined, limit: number, viewer: ActorIdentity): Awaitable<ChangePage>;
26
43
  listItemSummaries(input: Required<Pick<ItemListInput, 'limit' | 'offset'>> & ItemListInput, viewer: ActorIdentity): Awaitable<Page<ItemSummary>>;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/ports/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,UAAU,EACX,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,wBAAwB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1D,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7D,qBAAqB,CACnB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACvC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACrE,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAE7D,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACjE,UAAU,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAExC,kBAAkB,CAChB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,cAAc,EAC1E,MAAM,EAAE,aAAa,GACpB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjC,gBAAgB,CACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,GACpB,SAAS,CAAC,UAAU,CAAC,CAAC;IACzB,iBAAiB,CACf,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,aAAa,EACxE,MAAM,EAAE,aAAa,GACpB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAChC,eAAe,CACb,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE,UAAU,EAAE,GACnB,SAAS,CAAC,UAAU,CAAC,CAAC;IACzB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/ports/repository.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,28 @@
1
1
  import type { SynomemStorage } from './storage.js';
2
2
  import type { ProjectionWriter } from './ports/projections.js';
3
- import type { SynomemEvent, KudosRecord, MemoRecord, NoteRecord, TodoRecord } from './types.js';
3
+ import type { SynomemEvent, KudosRecord, MemoRecord, NoteRecord, TaskDue, TaskRecord, TodoRecord } from './types.js';
4
+ /**
5
+ * The instant a deadline has passed.
6
+ *
7
+ * A date-only deadline does not invent a time of day; it lapses at the end of
8
+ * that UTC day, which is the latest reading that cannot call work late while
9
+ * the stated day is still running. Every projection must use this one rule, or
10
+ * two stores would disagree about what is overdue.
11
+ */
12
+ export declare function dueInstant(due: TaskDue | undefined): string | undefined;
4
13
  export declare function escapeMarkdown(value: string): string;
5
14
  export declare function recordsFromEvents(events: SynomemEvent[]): KudosRecord[];
6
15
  export declare function memoRecordsFromEvents(events: SynomemEvent[]): MemoRecord[];
7
16
  export declare function noteRecordsFromEvents(events: SynomemEvent[]): NoteRecord[];
17
+ /**
18
+ * Builds private Todo records.
19
+ *
20
+ * Deliberately simpler than the Task reducer: there is no acceptance state and
21
+ * no response history, because there is nobody to negotiate with. A Todo goes
22
+ * open → completed / canceled / archived, and back to open on reopen.
23
+ */
8
24
  export declare function todoRecordsFromEvents(events: SynomemEvent[]): TodoRecord[];
25
+ export declare function taskRecordsFromEvents(events: SynomemEvent[]): TaskRecord[];
9
26
  /** Render a portable human-readable export without reading generated projections. */
10
27
  export declare function renderMarkdownExport(events: SynomemEvent[]): string;
11
28
  export declare class ProjectionManager implements ProjectionWriter {
@@ -1 +1 @@
1
- {"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../src/projections.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAGV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAQpB,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AA2JD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CA4BvE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAoB1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAqC1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CA+D1E;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAoBnE;AAED,qBAAa,iBAAkB,YAAW,gBAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,OAAO,IAAI;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAwGrD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IA+GtE,aAAa,IAAI,MAAM,EAAE;CAqC1B"}
1
+ {"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../src/projections.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAGV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGvE;AAQD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AA2JD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CA4BvE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAoB1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAqC1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAwD1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CA8E1E;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAoBnE;AAED,qBAAa,iBAAkB,YAAW,gBAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,OAAO,IAAI;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAwGrD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IA+GtE,aAAa,IAAI,MAAM,EAAE;CAqC1B"}
@@ -2,6 +2,19 @@ import { existsSync, lstatSync, unlinkSync } from 'node:fs';
2
2
  import { join, relative, sep } from 'node:path';
3
3
  import { SynomemError } from './errors.js';
4
4
  import { assertNoSymlinkEscape, atomicWriteDerivedFile, atomicWriteFile, ensureDirectory, } from './fs-utils.js';
5
+ /**
6
+ * The instant a deadline has passed.
7
+ *
8
+ * A date-only deadline does not invent a time of day; it lapses at the end of
9
+ * that UTC day, which is the latest reading that cannot call work late while
10
+ * the stated day is still running. Every projection must use this one rule, or
11
+ * two stores would disagree about what is overdue.
12
+ */
13
+ export function dueInstant(due) {
14
+ if (!due)
15
+ return undefined;
16
+ return due.kind === 'date' ? `${due.date}T23:59:59.999Z` : due.datetime;
17
+ }
5
18
  const generatedMarker = '<!-- Generated by Synomem. Rebuild with `synomem rebuild`. -->';
6
19
  function manifestPath(home, path) {
7
20
  return relative(home, path).split(sep).join('/');
@@ -87,7 +100,7 @@ function memoInboxMarkdown(record) {
87
100
  '',
88
101
  ].join('\n')}\n`;
89
102
  }
90
- function todoInboxMarkdown(record) {
103
+ function taskInboxMarkdown(record) {
91
104
  const due = record.current.due?.kind === 'date'
92
105
  ? record.current.due.date
93
106
  : record.current.due
@@ -101,7 +114,7 @@ function todoInboxMarkdown(record) {
101
114
  `**Status:** ${record.status} `,
102
115
  `**Priority:** ${record.current.priority} `,
103
116
  `**Due:** ${escapeMarkdown(due)} `,
104
- `**Todo ID:** \`${record.event.id}\``,
117
+ `**Task ID:** \`${record.event.id}\``,
105
118
  '',
106
119
  ...(record.current.description ? [escapeMarkdown(record.current.description), ''] : []),
107
120
  ].join('\n')}\n`;
@@ -123,24 +136,24 @@ function memoryMarkdown(profile, records, rebuiltAt) {
123
136
  }
124
137
  return `${lines.join('\n')}\n`;
125
138
  }
126
- function todosMarkdown(profile, records, rebuiltAt) {
139
+ function tasksMarkdown(profile, records, rebuiltAt) {
127
140
  const lines = [
128
141
  generatedMarker,
129
142
  '',
130
- `# Todos — ${escapeMarkdown(profile.displayName)}`,
143
+ `# Tasks — ${escapeMarkdown(profile.displayName)}`,
131
144
  '',
132
145
  `_Last rebuilt: ${rebuiltAt}_`,
133
146
  '',
134
147
  ];
135
148
  if (!records.length)
136
- lines.push('_No todos yet._', '');
149
+ lines.push('_No tasks yet._', '');
137
150
  for (const record of records) {
138
151
  const due = record.current.due?.kind === 'date'
139
152
  ? record.current.due.date
140
153
  : record.current.due
141
154
  ? `${record.current.due.datetime} (${record.current.due.timeZone})`
142
155
  : 'None';
143
- lines.push(`## ${escapeMarkdown(record.current.title)}`, '', `**Status:** ${record.status} `, `**Priority:** ${record.current.priority} `, `**Due:** ${escapeMarkdown(due)} `, `**Todo ID:** \`${record.event.id}\``, '');
156
+ lines.push(`## ${escapeMarkdown(record.current.title)}`, '', `**Status:** ${record.status} `, `**Priority:** ${record.current.priority} `, `**Due:** ${escapeMarkdown(due)} `, `**Task ID:** \`${record.event.id}\``, '');
144
157
  }
145
158
  return `${lines.join('\n')}\n`;
146
159
  }
@@ -234,6 +247,13 @@ export function noteRecordsFromEvents(events) {
234
247
  }
235
248
  return [...records.values()].sort((a, b) => b.event.createdAt.localeCompare(a.event.createdAt));
236
249
  }
250
+ /**
251
+ * Builds private Todo records.
252
+ *
253
+ * Deliberately simpler than the Task reducer: there is no acceptance state and
254
+ * no response history, because there is nobody to negotiate with. A Todo goes
255
+ * open → completed / canceled / archived, and back to open on reopen.
256
+ */
237
257
  export function todoRecordsFromEvents(events) {
238
258
  const records = new Map();
239
259
  for (const event of events) {
@@ -242,14 +262,13 @@ export function todoRecordsFromEvents(events) {
242
262
  event,
243
263
  current: {
244
264
  title: event.title,
245
- ...(event.description !== undefined ? { description: event.description } : {}),
265
+ ...(event.details !== undefined ? { details: event.details } : {}),
246
266
  priority: event.priority,
247
267
  ...(event.due ? { due: event.due } : {}),
248
268
  tags: event.tags ?? [],
249
- visibility: event.visibility,
250
269
  version: event.aggregateVersion,
251
270
  },
252
- status: event.requiresAcceptance ? 'assigned' : 'open',
271
+ status: 'open',
253
272
  });
254
273
  }
255
274
  else if (event.type === 'todo.updated') {
@@ -258,25 +277,26 @@ export function todoRecordsFromEvents(events) {
258
277
  record.update = event;
259
278
  record.current = {
260
279
  title: event.title,
261
- ...(event.description !== undefined ? { description: event.description } : {}),
280
+ ...(event.details !== undefined ? { details: event.details } : {}),
262
281
  priority: event.priority,
263
282
  ...(event.due ? { due: event.due } : {}),
264
283
  tags: event.tags ?? [],
265
- visibility: event.visibility,
266
284
  version: event.aggregateVersion,
267
285
  };
268
286
  }
269
287
  }
270
- else if (event.type === 'todo.accepted') {
288
+ else if (event.type === 'todo.reopened') {
271
289
  const record = records.get(event.todoId);
272
290
  if (record) {
291
+ record.reopened = event;
273
292
  record.current.version = event.aggregateVersion;
274
293
  record.status = 'open';
294
+ delete record.terminal;
275
295
  }
276
296
  }
277
297
  else if (event.type === 'todo.completed' ||
278
- event.type === 'todo.rejected' ||
279
- event.type === 'todo.canceled') {
298
+ event.type === 'todo.canceled' ||
299
+ event.type === 'todo.archived') {
280
300
  const record = records.get(event.todoId);
281
301
  if (record) {
282
302
  record.terminal = event;
@@ -284,13 +304,86 @@ export function todoRecordsFromEvents(events) {
284
304
  record.status =
285
305
  event.type === 'todo.completed'
286
306
  ? 'completed'
287
- : event.type === 'todo.rejected'
307
+ : event.type === 'todo.canceled'
308
+ ? 'canceled'
309
+ : 'archived';
310
+ }
311
+ }
312
+ }
313
+ return [...records.values()];
314
+ }
315
+ export function taskRecordsFromEvents(events) {
316
+ const records = new Map();
317
+ for (const event of events) {
318
+ if (event.type === 'task.created') {
319
+ records.set(event.id, {
320
+ event,
321
+ current: {
322
+ title: event.title,
323
+ ...(event.description !== undefined ? { description: event.description } : {}),
324
+ priority: event.priority,
325
+ ...(event.due ? { due: event.due } : {}),
326
+ tags: event.tags ?? [],
327
+ visibility: event.visibility,
328
+ version: event.aggregateVersion,
329
+ },
330
+ status: event.requiresAcceptance ? 'assigned' : 'open',
331
+ responses: [],
332
+ });
333
+ }
334
+ else if (event.type === 'task.updated') {
335
+ const record = records.get(event.taskId);
336
+ if (record) {
337
+ record.update = event;
338
+ record.current = {
339
+ title: event.title,
340
+ ...(event.description !== undefined ? { description: event.description } : {}),
341
+ priority: event.priority,
342
+ ...(event.due ? { due: event.due } : {}),
343
+ tags: event.tags ?? [],
344
+ visibility: event.visibility,
345
+ version: event.aggregateVersion,
346
+ };
347
+ }
348
+ }
349
+ else if (event.type === 'task.accepted') {
350
+ const record = records.get(event.taskId);
351
+ if (record) {
352
+ record.current.version = event.aggregateVersion;
353
+ record.status = 'open';
354
+ record.responses.push({
355
+ kind: 'accepted',
356
+ ...(event.response !== undefined ? { response: event.response } : {}),
357
+ actor: event.actor,
358
+ at: event.createdAt,
359
+ });
360
+ }
361
+ }
362
+ else if (event.type === 'task.completed' ||
363
+ event.type === 'task.rejected' ||
364
+ event.type === 'task.canceled') {
365
+ const record = records.get(event.taskId);
366
+ if (record) {
367
+ record.terminal = event;
368
+ record.current.version = event.aggregateVersion;
369
+ if (event.type === 'task.rejected') {
370
+ record.responses.push({
371
+ kind: 'rejected',
372
+ response: event.response,
373
+ actor: event.actor,
374
+ at: event.createdAt,
375
+ });
376
+ }
377
+ record.status =
378
+ event.type === 'task.completed'
379
+ ? 'completed'
380
+ : event.type === 'task.rejected'
288
381
  ? 'rejected'
289
382
  : 'canceled';
290
383
  }
291
384
  }
292
- else if (event.type === 'todo.reopened') {
293
- const record = records.get(event.todoId);
385
+ else if (event.type === 'task.reopened') {
386
+ const record = records.get(event.taskId);
294
387
  if (record) {
295
388
  record.reopened = event;
296
389
  record.current.version = event.aggregateVersion;
@@ -306,7 +399,7 @@ export function renderMarkdownExport(events) {
306
399
  ...recordsFromEvents(events).map((record) => `## Kudos: ${escapeMarkdown(record.event.title)}\n\n${escapeMarkdown(record.event.reason)}\n\nStatus: ${record.revocationStatus === 'revoked' ? 'Revoked' : record.status}\n\nID: \`${record.event.id}\``),
307
400
  ...memoRecordsFromEvents(events).map((record) => `## Memo: ${escapeMarkdown(record.event.subject)}\n\n${escapeMarkdown(record.event.body)}\n\nStatus: ${record.status}\n\nID: \`${record.event.id}\``),
308
401
  ...noteRecordsFromEvents(events).map((record) => `## Note: ${escapeMarkdown(record.current.title)}\n\n${escapeMarkdown(record.current.body)}\n\nStatus: ${record.status}; version ${record.current.version}\n\nID: \`${record.event.id}\``),
309
- ...todoRecordsFromEvents(events).map((record) => `## Todo: ${escapeMarkdown(record.current.title)}\n\n${record.current.description ? `${escapeMarkdown(record.current.description)}\n\n` : ''}Status: ${record.status}; priority ${record.current.priority}\n\nID: \`${record.event.id}\``),
402
+ ...taskRecordsFromEvents(events).map((record) => `## Task: ${escapeMarkdown(record.current.title)}\n\n${record.current.description ? `${escapeMarkdown(record.current.description)}\n\n` : ''}Status: ${record.status}; priority ${record.current.priority}\n\nID: \`${record.event.id}\``),
310
403
  ];
311
404
  return `${sections.join('\n\n')}\n`;
312
405
  }
@@ -326,7 +419,7 @@ export class ProjectionManager {
326
419
  const records = recordsFromEvents(events);
327
420
  const memos = memoRecordsFromEvents(events);
328
421
  const notes = noteRecordsFromEvents(events);
329
- const todos = todoRecordsFromEvents(events);
422
+ const tasks = taskRecordsFromEvents(events);
330
423
  const rebuiltAt = events.at(-1)?.createdAt ?? new Date(0).toISOString();
331
424
  const generated = [];
332
425
  for (const profile of profiles) {
@@ -339,12 +432,12 @@ export class ProjectionManager {
339
432
  const inboxDirectory = join(agentDirectory, 'inbox');
340
433
  const kudosInboxDirectory = join(inboxDirectory, 'kudos');
341
434
  const memoInboxDirectory = join(inboxDirectory, 'memos');
342
- const todoInboxDirectory = join(inboxDirectory, 'todos');
435
+ const taskInboxDirectory = join(inboxDirectory, 'tasks');
343
436
  assertNoSymlinkEscape(this.storage.home, inboxDirectory);
344
437
  ensureDirectory(inboxDirectory);
345
438
  ensureDirectory(kudosInboxDirectory);
346
439
  ensureDirectory(memoInboxDirectory);
347
- ensureDirectory(todoInboxDirectory);
440
+ ensureDirectory(taskInboxDirectory);
348
441
  atomicWriteDerivedFile(profilePath, `${JSON.stringify({ _generatedBy: 'synomem', ...profile }, null, 2)}\n`);
349
442
  generated.push(manifestPath(this.storage.home, profilePath));
350
443
  if (!existsSync(notesPath)) {
@@ -361,11 +454,11 @@ export class ProjectionManager {
361
454
  atomicWriteDerivedFile(memoryPath, memoryMarkdown(profile, agentNotes, rebuiltAt));
362
455
  generated.push(manifestPath(this.storage.home, memoryPath));
363
456
  }
364
- const agentTodos = todos.filter((record) => record.event.assigneeAgentId === profile.id);
365
- if (this.storage.config.projection.writeTodosMarkdown) {
366
- const todosPath = join(agentDirectory, 'TODOS.md');
367
- atomicWriteDerivedFile(todosPath, todosMarkdown(profile, agentTodos, rebuiltAt));
368
- generated.push(manifestPath(this.storage.home, todosPath));
457
+ const agentTasks = tasks.filter((record) => record.event.assigneeAgentId === profile.id);
458
+ if (this.storage.config.projection.writeTasksMarkdown) {
459
+ const tasksPath = join(agentDirectory, 'TASKS.md');
460
+ atomicWriteDerivedFile(tasksPath, tasksMarkdown(profile, agentTasks, rebuiltAt));
461
+ generated.push(manifestPath(this.storage.home, tasksPath));
369
462
  }
370
463
  if (this.storage.config.projection.writeInboxEntries) {
371
464
  for (const record of agentRecords.filter((item) => item.status === 'unacknowledged' && item.revocationStatus === 'active')) {
@@ -378,9 +471,9 @@ export class ProjectionManager {
378
471
  atomicWriteDerivedFile(inboxPath, memoInboxMarkdown(record));
379
472
  generated.push(manifestPath(this.storage.home, inboxPath));
380
473
  }
381
- for (const record of agentTodos.filter((item) => item.status === 'open' || item.status === 'assigned')) {
382
- const inboxPath = join(todoInboxDirectory, `${record.event.id}.md`);
383
- atomicWriteDerivedFile(inboxPath, todoInboxMarkdown(record));
474
+ for (const record of agentTasks.filter((item) => item.status === 'open' || item.status === 'assigned')) {
475
+ const inboxPath = join(taskInboxDirectory, `${record.event.id}.md`);
476
+ atomicWriteDerivedFile(inboxPath, taskInboxMarkdown(record));
384
477
  generated.push(manifestPath(this.storage.home, inboxPath));
385
478
  }
386
479
  }
@@ -413,20 +506,20 @@ export class ProjectionManager {
413
506
  const records = recordsFromEvents(events).filter((record) => record.event.recipientAgentId === profile.id);
414
507
  const memos = memoRecordsFromEvents(events).filter((record) => record.event.recipientAgentId === profile.id);
415
508
  const notes = noteRecordsFromEvents(events).filter((record) => record.event.ownerAgentId === profile.id);
416
- const todos = todoRecordsFromEvents(events).filter((record) => record.event.assigneeAgentId === profile.id);
509
+ const tasks = taskRecordsFromEvents(events).filter((record) => record.event.assigneeAgentId === profile.id);
417
510
  const rebuiltAt = events.at(-1)?.createdAt ?? new Date(0).toISOString();
418
511
  const agentDirectory = join(this.storage.home, profile.id);
419
512
  const inboxDirectory = join(agentDirectory, 'inbox');
420
513
  const kudosInboxDirectory = join(inboxDirectory, 'kudos');
421
514
  const memoInboxDirectory = join(inboxDirectory, 'memos');
422
- const todoInboxDirectory = join(inboxDirectory, 'todos');
515
+ const taskInboxDirectory = join(inboxDirectory, 'tasks');
423
516
  assertNoSymlinkEscape(this.storage.home, agentDirectory);
424
517
  assertNoSymlinkEscape(this.storage.home, inboxDirectory);
425
518
  ensureDirectory(agentDirectory);
426
519
  ensureDirectory(inboxDirectory);
427
520
  ensureDirectory(kudosInboxDirectory);
428
521
  ensureDirectory(memoInboxDirectory);
429
- ensureDirectory(todoInboxDirectory);
522
+ ensureDirectory(taskInboxDirectory);
430
523
  const generated = [];
431
524
  const profilePath = join(agentDirectory, 'profile.json');
432
525
  atomicWriteDerivedFile(profilePath, `${JSON.stringify({ _generatedBy: 'synomem', ...profile }, null, 2)}\n`);
@@ -445,10 +538,10 @@ export class ProjectionManager {
445
538
  atomicWriteDerivedFile(memoryPath, memoryMarkdown(profile, notes, rebuiltAt));
446
539
  generated.push(manifestPath(this.storage.home, memoryPath));
447
540
  }
448
- if (this.storage.config.projection.writeTodosMarkdown) {
449
- const todosPath = join(agentDirectory, 'TODOS.md');
450
- atomicWriteDerivedFile(todosPath, todosMarkdown(profile, todos, rebuiltAt));
451
- generated.push(manifestPath(this.storage.home, todosPath));
541
+ if (this.storage.config.projection.writeTasksMarkdown) {
542
+ const tasksPath = join(agentDirectory, 'TASKS.md');
543
+ atomicWriteDerivedFile(tasksPath, tasksMarkdown(profile, tasks, rebuiltAt));
544
+ generated.push(manifestPath(this.storage.home, tasksPath));
452
545
  }
453
546
  if (this.storage.config.projection.writeInboxEntries) {
454
547
  for (const record of records.filter((item) => item.status === 'unacknowledged' && item.revocationStatus === 'active')) {
@@ -465,11 +558,11 @@ export class ProjectionManager {
465
558
  atomicWriteDerivedFile(inboxPath, memoInboxMarkdown(record));
466
559
  generated.push(relativePath);
467
560
  }
468
- for (const record of todos.filter((item) => item.status === 'open' || item.status === 'assigned')) {
469
- const inboxPath = join(todoInboxDirectory, `${record.event.id}.md`);
561
+ for (const record of tasks.filter((item) => item.status === 'open' || item.status === 'assigned')) {
562
+ const inboxPath = join(taskInboxDirectory, `${record.event.id}.md`);
470
563
  const relativePath = manifestPath(this.storage.home, inboxPath);
471
564
  if (!existsSync(inboxPath))
472
- atomicWriteDerivedFile(inboxPath, todoInboxMarkdown(record));
565
+ atomicWriteDerivedFile(inboxPath, taskInboxMarkdown(record));
473
566
  generated.push(relativePath);
474
567
  }
475
568
  }
@@ -500,7 +593,7 @@ export class ProjectionManager {
500
593
  const events = this.storage.getReadableEvents();
501
594
  const records = recordsFromEvents(events);
502
595
  const memos = memoRecordsFromEvents(events);
503
- const todos = todoRecordsFromEvents(events);
596
+ const tasks = taskRecordsFromEvents(events);
504
597
  const paths = [];
505
598
  for (const profile of profiles) {
506
599
  paths.push(`${profile.id}/profile.json`);
@@ -508,8 +601,8 @@ export class ProjectionManager {
508
601
  paths.push(`${profile.id}/WINS.md`);
509
602
  if (this.storage.config.projection.writeMemoryMarkdown)
510
603
  paths.push(`${profile.id}/MEMORY.md`);
511
- if (this.storage.config.projection.writeTodosMarkdown)
512
- paths.push(`${profile.id}/TODOS.md`);
604
+ if (this.storage.config.projection.writeTasksMarkdown)
605
+ paths.push(`${profile.id}/TASKS.md`);
513
606
  if (this.storage.config.projection.writeInboxEntries) {
514
607
  for (const record of records.filter((item) => item.event.recipientAgentId === profile.id &&
515
608
  item.status === 'unacknowledged' &&
@@ -519,9 +612,9 @@ export class ProjectionManager {
519
612
  for (const record of memos.filter((item) => item.event.recipientAgentId === profile.id && item.status === 'unread')) {
520
613
  paths.push(`${profile.id}/inbox/memos/${record.event.id}.md`);
521
614
  }
522
- for (const record of todos.filter((item) => item.event.assigneeAgentId === profile.id &&
615
+ for (const record of tasks.filter((item) => item.event.assigneeAgentId === profile.id &&
523
616
  (item.status === 'open' || item.status === 'assigned'))) {
524
- paths.push(`${profile.id}/inbox/todos/${record.event.id}.md`);
617
+ paths.push(`${profile.id}/inbox/tasks/${record.event.id}.md`);
525
618
  }
526
619
  }
527
620
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projections.js","sourceRoot":"","sources":["../src/projections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projections.js","sourceRoot":"","sources":["../src/projections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAevB;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,GAAwB;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1E,CAAC;AAED,MAAM,eAAe,GAAG,gEAAgE,CAAC;AAEzF,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;IAC9C,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC;SACxC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACtH,CAAC;AAED,SAAS,cAAc,CAAC,MAAmB,EAAE,YAAY,GAAG,IAAI;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,iBAAiB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI;QACjD,aAAa,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;QAC1E,eAAe,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,IAAI;KACxF,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,4BAA4B,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB,EAAE,OAAsB,EAAE,SAAiB;IACpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,EAAE;QACF,YAAY,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACjD,EAAE;QACF,kBAAkB,SAAS,GAAG;QAC9B,EAAE;KACH,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,2DAA2D,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,GAAG,QAAQ,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB;IACxC,OAAO,GAAG;QACR,eAAe;QACf,EAAE;QACF,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACzC,EAAE;QACF,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,OAAO,GAAG;QACR,eAAe;QACf,EAAE;QACF,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC3C,EAAE;QACF,aAAa,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;QACxF,aAAa,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI;QACvC,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI;QACrC,EAAE;QACF,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACjC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,MAAM,GAAG,GACP,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM;QACjC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;YAClB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG;YACnE,CAAC,CAAC,MAAM,CAAC;IACf,OAAO,GAAG;QACR,eAAe;QACf,EAAE;QACF,KAAK,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3C,EAAE;QACF,eAAe,MAAM,CAAC,MAAM,IAAI;QAChC,iBAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI;QAC5C,YAAY,cAAc,CAAC,GAAG,CAAC,IAAI;QACnC,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI;QACrC,EAAE;QACF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,OAAqB,EAAE,OAAqB,EAAE,SAAiB;IACrF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,EAAE;QACF,cAAc,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACnD,EAAE;QACF,kBAAkB,SAAS,GAAG;QAC9B,EAAE;KACH,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,MAAM,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAC5C,EAAE,EACF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EACnC,EAAE,EACF,gBAAgB,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAC1C,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EACrC,EAAE,CACH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,OAAqB,EAAE,OAAqB,EAAE,SAAiB;IACpF,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,EAAE;QACF,aAAa,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAClD,EAAE;QACF,kBAAkB,SAAS,GAAG;QAC9B,EAAE;KACH,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GACP,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM;YACjC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;YACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;gBAClB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG;gBACnE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,CAAC,IAAI,CACR,MAAM,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAC5C,EAAE,EACF,eAAe,MAAM,CAAC,MAAM,IAAI,EAChC,iBAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAC5C,YAAY,cAAc,CAAC,GAAG,CAAC,IAAI,EACnC,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EACrC,EAAE,CACH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyC,CAAC;IACzE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/E,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;SAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO;YACL,KAAK;YACL,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB;YAC1D,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;SAC9B,CAAC;IAC1B,CAAC,CAAC;SACD,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAC7F,CAAC;AACN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;gBACpB,KAAK;gBACL,OAAO,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC;gBACD,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,GAAG;oBACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;gBACpB,KAAK;gBACL,OAAO,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC;gBACD,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,MAAM,CAAC,OAAO,GAAG;oBACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IACL,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAC/B,KAAK,CAAC,IAAI,KAAK,eAAe;YAC9B,KAAK,CAAC,IAAI,KAAK,eAAe,EAC9B,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,CAAC,MAAM;oBACX,KAAK,CAAC,IAAI,KAAK,gBAAgB;wBAC7B,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;4BAC9B,CAAC,CAAC,UAAU;4BACZ,CAAC,CAAC,UAAU,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;gBACpB,KAAK;gBACL,OAAO,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC;gBACD,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;gBACtD,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,MAAM,CAAC,OAAO,GAAG;oBACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,gBAAgB;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,UAAU;oBAChB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,EAAE,EAAE,KAAK,CAAC,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IACL,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAC/B,KAAK,CAAC,IAAI,KAAK,eAAe;YAC9B,KAAK,CAAC,IAAI,KAAK,eAAe,EAC9B,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACnC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;wBACpB,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,EAAE,EAAE,KAAK,CAAC,SAAS;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,MAAM;oBACX,KAAK,CAAC,IAAI,KAAK,gBAAgB;wBAC7B,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;4BAC9B,CAAC,CAAC,UAAU;4BACZ,CAAC,CAAC,UAAU,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,MAAM,QAAQ,GAAG;QACf,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAC9B,CAAC,MAAM,EAAE,EAAE,CACT,aAAa,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAC5M;QACD,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CACvJ;QACD,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAC5L;QACD,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,OAAO,CAAC,QAAQ,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAC5O;KACF,CAAC;IACF,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACzD,eAAe,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACzD,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACzD,eAAe,CAAC,cAAc,CAAC,CAAC;YAChC,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACrC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACpC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAEpC,sBAAsB,CACpB,WAAW,EACX,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxE,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,eAAe,CACb,SAAS,EACT,aAAa,OAAO,CAAC,WAAW,qEAAqE,CACtG,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACrD,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;gBACjF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACtF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBACrD,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACzF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBACtD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACnD,sBAAsB,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;gBACjF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACrD,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,MAAM,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CACjF,EAAE,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;oBACrE,sBAAsB,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;oBACzD,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CACjF,EAAE,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpE,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7D,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAC/D,EAAE,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpE,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7D,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACtD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5C,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,6CAA6C,KAAK,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7D,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAAM,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE,CACzD,CAAC;QACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE,CACzD,CAAC;QACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,EAAE,CACrD,CAAC;QACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CACxD,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACzD,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACzD,eAAe,CAAC,cAAc,CAAC,CAAC;QAChC,eAAe,CAAC,cAAc,CAAC,CAAC;QAChC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACrC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACpC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAEpC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACzD,sBAAsB,CACpB,WAAW,EACX,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxE,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,eAAe,CACb,SAAS,EACT,aAAa,OAAO,CAAC,WAAW,qEAAqE,CACtG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACjD,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACrD,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAC9E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACnD,sBAAsB,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACrD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CACjF,EAAE,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACrE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,sBAAsB,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACtE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAC/D,EAAE,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzF,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;aAC7B,kBAAkB,EAAE;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5C,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,6CAA6C,KAAK,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9E,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,aAAa;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBACrD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE;oBAC1C,IAAI,CAAC,MAAM,KAAK,gBAAgB;oBAChC,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CACrC,EAAE,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,gBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CACjF,EAAE,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,gBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE;oBACzC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CACzD,EAAE,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,gBAAgB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF"}