@sudocode-ai/cli 0.1.0 → 0.1.2

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 (112) hide show
  1. package/dist/cli/feedback-commands.d.ts.map +1 -0
  2. package/dist/cli/feedback-commands.js +274 -0
  3. package/dist/cli/feedback-commands.js.map +1 -0
  4. package/dist/cli/init-commands.d.ts.map +1 -0
  5. package/dist/cli/init-commands.js +148 -0
  6. package/dist/cli/init-commands.js.map +1 -0
  7. package/dist/cli/issue-commands.d.ts.map +1 -0
  8. package/dist/cli/issue-commands.js +310 -0
  9. package/dist/cli/issue-commands.js.map +1 -0
  10. package/dist/cli/query-commands.d.ts.map +1 -0
  11. package/dist/cli/query-commands.js +61 -0
  12. package/dist/cli/query-commands.js.map +1 -0
  13. package/dist/cli/reference-commands.d.ts.map +1 -0
  14. package/dist/cli/reference-commands.js +136 -0
  15. package/dist/cli/reference-commands.js.map +1 -0
  16. package/dist/cli/relationship-commands.d.ts.map +1 -0
  17. package/dist/cli/relationship-commands.js +76 -0
  18. package/dist/cli/relationship-commands.js.map +1 -0
  19. package/dist/cli/server-commands.d.ts.map +1 -0
  20. package/dist/cli/server-commands.js +99 -0
  21. package/dist/cli/server-commands.js.map +1 -0
  22. package/dist/cli/spec-commands.d.ts.map +1 -0
  23. package/dist/cli/spec-commands.js +321 -0
  24. package/dist/cli/spec-commands.js.map +1 -0
  25. package/dist/cli/status-commands.d.ts.map +1 -0
  26. package/dist/cli/status-commands.js +131 -0
  27. package/dist/cli/status-commands.js.map +1 -0
  28. package/dist/cli/sync-commands.d.ts.map +1 -0
  29. package/dist/cli/sync-commands.js +416 -0
  30. package/dist/cli/sync-commands.js.map +1 -0
  31. package/dist/cli/update-commands.d.ts.map +1 -0
  32. package/dist/cli/update-commands.js +78 -0
  33. package/dist/cli/update-commands.js.map +1 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +425 -195
  36. package/dist/cli.js.map +1 -0
  37. package/dist/db.d.ts.map +1 -0
  38. package/dist/db.js +54 -0
  39. package/dist/db.js.map +1 -0
  40. package/dist/export.d.ts.map +1 -0
  41. package/dist/export.js +195 -0
  42. package/dist/export.js.map +1 -0
  43. package/dist/filename-generator.d.ts.map +1 -0
  44. package/dist/filename-generator.js +93 -0
  45. package/dist/filename-generator.js.map +1 -0
  46. package/dist/id-generator.d.ts.map +1 -0
  47. package/dist/id-generator.js +123 -0
  48. package/dist/id-generator.js.map +1 -0
  49. package/dist/import.d.ts.map +1 -0
  50. package/dist/import.js +608 -0
  51. package/dist/import.js.map +1 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +13 -189
  54. package/dist/index.js.map +1 -0
  55. package/dist/jsonl.d.ts.map +1 -0
  56. package/dist/jsonl.js +333 -0
  57. package/dist/jsonl.js.map +1 -0
  58. package/dist/markdown.d.ts.map +1 -0
  59. package/dist/markdown.js +357 -0
  60. package/dist/markdown.js.map +1 -0
  61. package/dist/migrations.d.ts.map +1 -0
  62. package/dist/migrations.js +57 -0
  63. package/dist/migrations.js.map +1 -0
  64. package/dist/operations/events.d.ts.map +1 -0
  65. package/dist/operations/events.js +108 -0
  66. package/dist/operations/events.js.map +1 -0
  67. package/dist/operations/feedback-anchors.d.ts.map +1 -0
  68. package/dist/operations/feedback-anchors.js +444 -0
  69. package/dist/operations/feedback-anchors.js.map +1 -0
  70. package/dist/operations/feedback.d.ts.map +1 -0
  71. package/dist/operations/feedback.js +234 -0
  72. package/dist/operations/feedback.js.map +1 -0
  73. package/dist/operations/index.d.ts.map +1 -0
  74. package/dist/operations/index.js +10 -0
  75. package/dist/operations/index.js.map +1 -0
  76. package/dist/operations/issues.d.ts.map +1 -0
  77. package/dist/operations/issues.js +411 -0
  78. package/dist/operations/issues.js.map +1 -0
  79. package/dist/operations/references.d.ts.map +1 -0
  80. package/dist/operations/references.js +117 -0
  81. package/dist/operations/references.js.map +1 -0
  82. package/dist/operations/relationships.d.ts.map +1 -0
  83. package/dist/operations/relationships.js +236 -0
  84. package/dist/operations/relationships.js.map +1 -0
  85. package/dist/operations/specs.d.ts.map +1 -0
  86. package/dist/operations/specs.js +290 -0
  87. package/dist/operations/specs.js.map +1 -0
  88. package/dist/operations/tags.d.ts.map +1 -0
  89. package/dist/operations/tags.js +127 -0
  90. package/dist/operations/tags.js.map +1 -0
  91. package/dist/operations/transactions.d.ts.map +1 -0
  92. package/dist/operations/transactions.js +111 -0
  93. package/dist/operations/transactions.js.map +1 -0
  94. package/dist/sync.d.ts.map +1 -0
  95. package/dist/sync.js +442 -0
  96. package/dist/sync.js.map +1 -0
  97. package/dist/test-schema.d.ts.map +1 -0
  98. package/dist/test-schema.js +46 -0
  99. package/dist/test-schema.js.map +1 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +7 -0
  102. package/dist/types.js.map +1 -0
  103. package/dist/update-checker.d.ts.map +1 -0
  104. package/dist/update-checker.js +151 -0
  105. package/dist/update-checker.js.map +1 -0
  106. package/dist/version.d.ts.map +1 -0
  107. package/dist/version.js +23 -0
  108. package/dist/version.js.map +1 -0
  109. package/dist/watcher.d.ts.map +1 -0
  110. package/dist/watcher.js +438 -0
  111. package/dist/watcher.js.map +1 -0
  112. package/package.json +4 -7
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Feedback anchor creation and manipulation utilities
3
+ */
4
+ import * as crypto from 'crypto';
5
+ /**
6
+ * Create a feedback anchor at a specific line in spec content
7
+ */
8
+ export function createFeedbackAnchor(specContent, lineNumber, charOffset) {
9
+ const lines = specContent.split('\n');
10
+ // Validate line number
11
+ if (lineNumber < 1 || lineNumber > lines.length) {
12
+ throw new Error(`Line number ${lineNumber} is out of range (1-${lines.length})`);
13
+ }
14
+ const targetLine = lines[lineNumber - 1];
15
+ // Find containing section
16
+ const section = findContainingSection(lines, lineNumber);
17
+ // Extract snippet with context
18
+ const snippet = extractSnippet(targetLine, charOffset, 50);
19
+ const contextBefore = getContext(lines, lineNumber, -50);
20
+ const contextAfter = getContext(lines, lineNumber, 50);
21
+ // Calculate relative offset from section start
22
+ const lineOffset = section ? lineNumber - section.startLine : undefined;
23
+ // Create content hash for validation
24
+ const hash = createContentHash(snippet);
25
+ return {
26
+ section_heading: section?.heading,
27
+ section_level: section?.level,
28
+ line_number: lineNumber,
29
+ line_offset: lineOffset,
30
+ text_snippet: snippet,
31
+ context_before: contextBefore,
32
+ context_after: contextAfter,
33
+ content_hash: hash,
34
+ anchor_status: 'valid',
35
+ last_verified_at: new Date().toISOString(),
36
+ original_location: {
37
+ line_number: lineNumber,
38
+ section_heading: section?.heading,
39
+ },
40
+ };
41
+ }
42
+ /**
43
+ * Create a feedback anchor by searching for text in spec content
44
+ */
45
+ export function createAnchorByText(specContent, searchText) {
46
+ const lines = specContent.split('\n');
47
+ // Find the first line containing the search text
48
+ for (let i = 0; i < lines.length; i++) {
49
+ const line = lines[i];
50
+ const index = line.indexOf(searchText);
51
+ if (index !== -1) {
52
+ // Found it! Create anchor at this location
53
+ const lineNumber = i + 1;
54
+ return createFeedbackAnchor(specContent, lineNumber, index);
55
+ }
56
+ }
57
+ // Not found
58
+ return null;
59
+ }
60
+ /**
61
+ * Find the section (markdown heading) containing a given line
62
+ * Walks backwards from the line to find the nearest heading
63
+ */
64
+ export function findContainingSection(lines, lineNumber) {
65
+ // Walk backwards from the target line
66
+ for (let i = lineNumber - 1; i >= 0; i--) {
67
+ const line = lines[i];
68
+ // Handle Windows line endings by trimming \r
69
+ const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
70
+ if (match) {
71
+ const level = match[1].length;
72
+ const heading = match[2].trim();
73
+ return {
74
+ heading,
75
+ level,
76
+ startLine: i + 1,
77
+ };
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ /**
83
+ * Extract a text snippet from a line with optional character offset
84
+ */
85
+ export function extractSnippet(line, charOffset, maxLength = 50) {
86
+ if (!line || line.trim() === '') {
87
+ return '';
88
+ }
89
+ // Trim the line first
90
+ const trimmed = line.trim();
91
+ let start = 0;
92
+ let end = trimmed.length;
93
+ if (charOffset !== undefined) {
94
+ // Adjust offset for trimmed line
95
+ const leadingSpaces = line.length - line.trimStart().length;
96
+ const adjustedOffset = Math.max(0, charOffset - leadingSpaces);
97
+ // Center snippet around the char offset
98
+ const halfLen = Math.floor(maxLength / 2);
99
+ start = Math.max(0, adjustedOffset - halfLen);
100
+ end = Math.min(trimmed.length, adjustedOffset + halfLen);
101
+ }
102
+ else {
103
+ // Take from start
104
+ end = Math.min(trimmed.length, maxLength);
105
+ }
106
+ let snippet = trimmed.substring(start, end);
107
+ // Add ellipsis if truncated (no space before ellipsis)
108
+ if (start > 0) {
109
+ snippet = '...' + snippet;
110
+ }
111
+ if (end < trimmed.length) {
112
+ snippet = snippet + '...';
113
+ }
114
+ return snippet;
115
+ }
116
+ /**
117
+ * Get context around a line (before or after)
118
+ * @param chars Number of characters to get (negative for before, positive for after)
119
+ */
120
+ export function getContext(lines, fromLine, chars) {
121
+ if (chars === 0) {
122
+ return '';
123
+ }
124
+ const direction = chars > 0 ? 1 : -1;
125
+ const maxChars = Math.abs(chars);
126
+ let collected = '';
127
+ let currentLine = fromLine - 1; // Convert to 0-indexed
128
+ if (direction > 0) {
129
+ // Get context after
130
+ currentLine += 1; // Start from next line
131
+ }
132
+ else {
133
+ // Get context before
134
+ currentLine -= 1; // Start from previous line
135
+ }
136
+ while (currentLine >= 0 &&
137
+ currentLine < lines.length &&
138
+ collected.length < maxChars) {
139
+ const line = lines[currentLine];
140
+ const remaining = maxChars - collected.length;
141
+ if (direction > 0) {
142
+ // Adding after - append
143
+ if (collected.length > 0) {
144
+ collected += ' ';
145
+ }
146
+ collected += line.substring(0, remaining);
147
+ }
148
+ else {
149
+ // Adding before - prepend
150
+ const start = Math.max(0, line.length - remaining);
151
+ const chunk = line.substring(start);
152
+ if (collected.length > 0) {
153
+ collected = chunk + ' ' + collected;
154
+ }
155
+ else {
156
+ collected = chunk;
157
+ }
158
+ }
159
+ currentLine += direction;
160
+ }
161
+ return collected.trim();
162
+ }
163
+ /**
164
+ * Create a content hash for quick validation
165
+ */
166
+ export function createContentHash(content) {
167
+ return crypto
168
+ .createHash('sha256')
169
+ .update(content)
170
+ .digest('hex')
171
+ .substring(0, 16);
172
+ }
173
+ /**
174
+ * Verify that an anchor still points to the expected location
175
+ */
176
+ export function verifyAnchor(specContent, anchor) {
177
+ if (!anchor.line_number) {
178
+ return false;
179
+ }
180
+ const lines = specContent.split('\n');
181
+ if (anchor.line_number < 1 || anchor.line_number > lines.length) {
182
+ return false;
183
+ }
184
+ const targetLine = lines[anchor.line_number - 1];
185
+ // Check if the line still contains the snippet (remove ellipsis for matching)
186
+ if (anchor.text_snippet && anchor.text_snippet.trim()) {
187
+ const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
188
+ if (cleanSnippet && !targetLine.includes(cleanSnippet)) {
189
+ return false;
190
+ }
191
+ }
192
+ // Check content hash if available (most reliable check)
193
+ if (anchor.content_hash && anchor.text_snippet && anchor.text_snippet.trim()) {
194
+ const currentSnippet = extractSnippet(targetLine, undefined, 50);
195
+ if (currentSnippet) {
196
+ const currentHash = createContentHash(currentSnippet);
197
+ if (currentHash !== anchor.content_hash) {
198
+ return false;
199
+ }
200
+ }
201
+ }
202
+ return true;
203
+ }
204
+ /**
205
+ * Get all section headings from spec content
206
+ */
207
+ export function getAllSections(specContent) {
208
+ const lines = specContent.split('\n');
209
+ const sections = [];
210
+ for (let i = 0; i < lines.length; i++) {
211
+ const line = lines[i];
212
+ // Handle Windows line endings
213
+ const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
214
+ if (match) {
215
+ sections.push({
216
+ heading: match[2].trim(),
217
+ level: match[1].length,
218
+ startLine: i + 1,
219
+ });
220
+ }
221
+ }
222
+ return sections;
223
+ }
224
+ /**
225
+ * Search for text with context matching
226
+ * Returns all matching locations with confidence scores
227
+ */
228
+ export function searchByContent(specContent, snippet, contextBefore, contextAfter) {
229
+ if (!snippet) {
230
+ return [];
231
+ }
232
+ const lines = specContent.split('\n');
233
+ const results = [];
234
+ // Clean snippet (remove ellipsis)
235
+ const cleanSnippet = snippet.replace(/\.\.\./g, '').trim();
236
+ for (let i = 0; i < lines.length; i++) {
237
+ const line = lines[i];
238
+ if (line.includes(cleanSnippet)) {
239
+ let confidence = 0.5; // Base confidence for snippet match
240
+ // Boost confidence if context matches
241
+ if (contextBefore) {
242
+ const actualBefore = getContext(lines, i + 1, -50);
243
+ if (actualBefore.includes(contextBefore.substring(0, 20))) {
244
+ confidence += 0.25;
245
+ }
246
+ }
247
+ if (contextAfter) {
248
+ const actualAfter = getContext(lines, i + 1, 50);
249
+ if (actualAfter.includes(contextAfter.substring(0, 20))) {
250
+ confidence += 0.25;
251
+ }
252
+ }
253
+ results.push({
254
+ lineNumber: i + 1,
255
+ confidence: Math.min(confidence, 1.0),
256
+ });
257
+ }
258
+ }
259
+ // Sort by confidence (highest first)
260
+ return results.sort((a, b) => b.confidence - a.confidence);
261
+ }
262
+ /**
263
+ * Calculate Levenshtein distance between two strings
264
+ * Used for fuzzy matching of section headings
265
+ */
266
+ export function levenshteinDistance(str1, str2) {
267
+ const len1 = str1.length;
268
+ const len2 = str2.length;
269
+ // Create a 2D array for dynamic programming
270
+ const matrix = Array(len1 + 1)
271
+ .fill(null)
272
+ .map(() => Array(len2 + 1).fill(0));
273
+ // Initialize first row and column
274
+ for (let i = 0; i <= len1; i++) {
275
+ matrix[i][0] = i;
276
+ }
277
+ for (let j = 0; j <= len2; j++) {
278
+ matrix[0][j] = j;
279
+ }
280
+ // Calculate distances
281
+ for (let i = 1; i <= len1; i++) {
282
+ for (let j = 1; j <= len2; j++) {
283
+ const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
284
+ matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion
285
+ matrix[i][j - 1] + 1, // insertion
286
+ matrix[i - 1][j - 1] + cost // substitution
287
+ );
288
+ }
289
+ }
290
+ return matrix[len1][len2];
291
+ }
292
+ /**
293
+ * Find the best matching section using fuzzy matching
294
+ * Returns section with lowest edit distance (Levenshtein)
295
+ */
296
+ export function findFuzzySection(specContent, targetHeading, maxDistance = 5) {
297
+ const sections = getAllSections(specContent);
298
+ if (sections.length === 0) {
299
+ return null;
300
+ }
301
+ // Normalize headings for comparison (lowercase, trim)
302
+ const normalizedTarget = targetHeading.toLowerCase().trim();
303
+ let bestMatch = null;
304
+ let bestDistance = Infinity;
305
+ for (const section of sections) {
306
+ const normalizedHeading = section.heading.toLowerCase().trim();
307
+ const distance = levenshteinDistance(normalizedTarget, normalizedHeading);
308
+ if (distance < bestDistance && distance <= maxDistance) {
309
+ bestDistance = distance;
310
+ bestMatch = section;
311
+ }
312
+ }
313
+ return bestMatch;
314
+ }
315
+ /**
316
+ * Relocate a feedback anchor when spec content changes
317
+ * Uses cascade strategy:
318
+ * 1. Section + Line Offset (if section unchanged)
319
+ * 2. Content Search (snippet + context)
320
+ * 3. Fuzzy Section Match (Levenshtein distance)
321
+ * 4. Mark as Stale (preserve original)
322
+ */
323
+ export function relocateFeedbackAnchor(oldSpecContent, newSpecContent, anchor) {
324
+ // First, verify if anchor is still valid at original location
325
+ if (verifyAnchor(newSpecContent, anchor)) {
326
+ return {
327
+ ...anchor,
328
+ anchor_status: 'valid',
329
+ last_verified_at: new Date().toISOString(),
330
+ };
331
+ }
332
+ // Strategy 1: Try Section + Line Offset
333
+ if (anchor.section_heading && anchor.line_offset !== undefined) {
334
+ const sections = getAllSections(newSpecContent);
335
+ const matchingSection = sections.find((s) => s.heading === anchor.section_heading);
336
+ if (matchingSection) {
337
+ const newLineNumber = matchingSection.startLine + anchor.line_offset;
338
+ const lines = newSpecContent.split('\n');
339
+ if (newLineNumber > 0 && newLineNumber <= lines.length) {
340
+ const targetLine = lines[newLineNumber - 1];
341
+ // Verify this looks right (check if snippet is close)
342
+ if (anchor.text_snippet) {
343
+ const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
344
+ if (cleanSnippet && targetLine.includes(cleanSnippet)) {
345
+ // Success! Create new anchor at relocated position
346
+ const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
347
+ return {
348
+ ...newAnchor,
349
+ anchor_status: 'relocated',
350
+ last_verified_at: new Date().toISOString(),
351
+ original_location: anchor.original_location || {
352
+ line_number: anchor.line_number || 0,
353
+ section_heading: anchor.section_heading,
354
+ },
355
+ };
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ // Strategy 2: Content Search with Context
362
+ if (anchor.text_snippet) {
363
+ const matches = searchByContent(newSpecContent, anchor.text_snippet, anchor.context_before, anchor.context_after);
364
+ if (matches.length > 0 && matches[0].confidence >= 0.7) {
365
+ // High confidence match found
366
+ const newAnchor = createFeedbackAnchor(newSpecContent, matches[0].lineNumber);
367
+ return {
368
+ ...newAnchor,
369
+ anchor_status: 'relocated',
370
+ last_verified_at: new Date().toISOString(),
371
+ original_location: anchor.original_location || {
372
+ line_number: anchor.line_number || 0,
373
+ section_heading: anchor.section_heading,
374
+ },
375
+ };
376
+ }
377
+ }
378
+ // Strategy 3: Fuzzy Section Match
379
+ if (anchor.section_heading && anchor.line_offset !== undefined) {
380
+ const fuzzyMatch = findFuzzySection(newSpecContent, anchor.section_heading, 5);
381
+ if (fuzzyMatch) {
382
+ const newLineNumber = fuzzyMatch.startLine + anchor.line_offset;
383
+ const lines = newSpecContent.split('\n');
384
+ if (newLineNumber > 0 && newLineNumber <= lines.length) {
385
+ const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
386
+ return {
387
+ ...newAnchor,
388
+ anchor_status: 'relocated',
389
+ last_verified_at: new Date().toISOString(),
390
+ original_location: anchor.original_location || {
391
+ line_number: anchor.line_number || 0,
392
+ section_heading: anchor.section_heading,
393
+ },
394
+ };
395
+ }
396
+ }
397
+ }
398
+ // Strategy 4: Mark as Stale - preserve original but mark invalid
399
+ return {
400
+ ...anchor,
401
+ anchor_status: 'stale',
402
+ last_verified_at: new Date().toISOString(),
403
+ original_location: anchor.original_location || {
404
+ line_number: anchor.line_number || 0,
405
+ section_heading: anchor.section_heading,
406
+ },
407
+ };
408
+ }
409
+ export function relocateSpecFeedback(oldSpecContent, newSpecContent, feedbackList) {
410
+ const results = [];
411
+ let validCount = 0;
412
+ let relocatedCount = 0;
413
+ let staleCount = 0;
414
+ for (const feedback of feedbackList) {
415
+ const oldStatus = feedback.anchor.anchor_status;
416
+ const newAnchor = relocateFeedbackAnchor(oldSpecContent, newSpecContent, feedback.anchor);
417
+ const relocated = newAnchor.anchor_status === 'relocated';
418
+ if (newAnchor.anchor_status === 'valid') {
419
+ validCount++;
420
+ }
421
+ else if (newAnchor.anchor_status === 'relocated') {
422
+ relocatedCount++;
423
+ }
424
+ else {
425
+ staleCount++;
426
+ }
427
+ results.push({
428
+ feedback_id: feedback.id,
429
+ old_status: oldStatus,
430
+ new_status: newAnchor.anchor_status,
431
+ relocated,
432
+ });
433
+ // Note: Actual database update should be done by the caller
434
+ // This function only performs the relocation logic
435
+ }
436
+ return {
437
+ total: feedbackList.length,
438
+ valid: validCount,
439
+ relocated: relocatedCount,
440
+ stale: staleCount,
441
+ results,
442
+ };
443
+ }
444
+ //# sourceMappingURL=feedback-anchors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-anchors.js","sourceRoot":"","sources":["../../src/operations/feedback-anchors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/operations/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAkBhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,aAAa,CAiDf;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,GAAG,IAAI,CAOtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,GACzB,aAAa,CA8Cf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAIzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,CAEf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,mBAAwB,GAChC,aAAa,EAAE,CAuCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA4BvC"}