@j0hanz/filesystem-context-mcp 1.0.9 → 1.1.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 (80) hide show
  1. package/README.md +20 -5
  2. package/dist/__tests__/schemas/validators.test.js +32 -5
  3. package/dist/__tests__/schemas/validators.test.js.map +1 -1
  4. package/dist/config/types.d.ts +28 -0
  5. package/dist/config/types.d.ts.map +1 -1
  6. package/dist/config/types.js.map +1 -1
  7. package/dist/index.js +0 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/constants.d.ts +7 -7
  10. package/dist/lib/constants.d.ts.map +1 -1
  11. package/dist/lib/constants.js +24 -37
  12. package/dist/lib/constants.js.map +1 -1
  13. package/dist/lib/directory-helpers.d.ts +1 -2
  14. package/dist/lib/directory-helpers.d.ts.map +1 -1
  15. package/dist/lib/directory-helpers.js +2 -5
  16. package/dist/lib/directory-helpers.js.map +1 -1
  17. package/dist/lib/errors.d.ts +2 -0
  18. package/dist/lib/errors.d.ts.map +1 -1
  19. package/dist/lib/errors.js +22 -33
  20. package/dist/lib/errors.js.map +1 -1
  21. package/dist/lib/file-operations.d.ts +2 -1
  22. package/dist/lib/file-operations.d.ts.map +1 -1
  23. package/dist/lib/file-operations.js +249 -146
  24. package/dist/lib/file-operations.js.map +1 -1
  25. package/dist/lib/formatters.d.ts +1 -12
  26. package/dist/lib/formatters.d.ts.map +1 -1
  27. package/dist/lib/formatters.js +11 -14
  28. package/dist/lib/formatters.js.map +1 -1
  29. package/dist/lib/fs-helpers.d.ts.map +1 -1
  30. package/dist/lib/fs-helpers.js +41 -66
  31. package/dist/lib/fs-helpers.js.map +1 -1
  32. package/dist/lib/image-parsing.d.ts.map +1 -1
  33. package/dist/lib/image-parsing.js +27 -19
  34. package/dist/lib/image-parsing.js.map +1 -1
  35. package/dist/lib/mcp-logger.d.ts.map +1 -1
  36. package/dist/lib/mcp-logger.js +16 -12
  37. package/dist/lib/mcp-logger.js.map +1 -1
  38. package/dist/lib/path-utils.d.ts.map +1 -1
  39. package/dist/lib/path-utils.js +0 -2
  40. package/dist/lib/path-utils.js.map +1 -1
  41. package/dist/lib/path-validation.d.ts.map +1 -1
  42. package/dist/lib/path-validation.js +45 -24
  43. package/dist/lib/path-validation.js.map +1 -1
  44. package/dist/lib/search-helpers.d.ts +3 -0
  45. package/dist/lib/search-helpers.d.ts.map +1 -1
  46. package/dist/lib/search-helpers.js +44 -56
  47. package/dist/lib/search-helpers.js.map +1 -1
  48. package/dist/schemas/inputs.d.ts +3 -2
  49. package/dist/schemas/inputs.d.ts.map +1 -1
  50. package/dist/schemas/inputs.js +22 -4
  51. package/dist/schemas/inputs.js.map +1 -1
  52. package/dist/schemas/outputs.d.ts +31 -12
  53. package/dist/schemas/outputs.d.ts.map +1 -1
  54. package/dist/schemas/outputs.js +16 -0
  55. package/dist/schemas/outputs.js.map +1 -1
  56. package/dist/server.d.ts.map +1 -1
  57. package/dist/server.js +39 -17
  58. package/dist/server.js.map +1 -1
  59. package/dist/tools/analyze-directory.d.ts.map +1 -1
  60. package/dist/tools/analyze-directory.js +6 -6
  61. package/dist/tools/analyze-directory.js.map +1 -1
  62. package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
  63. package/dist/tools/list-allowed-dirs.js +20 -1
  64. package/dist/tools/list-allowed-dirs.js.map +1 -1
  65. package/dist/tools/list-directory.d.ts.map +1 -1
  66. package/dist/tools/list-directory.js +11 -3
  67. package/dist/tools/list-directory.js.map +1 -1
  68. package/dist/tools/read-file.d.ts.map +1 -1
  69. package/dist/tools/read-file.js +7 -4
  70. package/dist/tools/read-file.js.map +1 -1
  71. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  72. package/dist/tools/read-multiple-files.js +4 -4
  73. package/dist/tools/read-multiple-files.js.map +1 -1
  74. package/dist/tools/search-content.d.ts.map +1 -1
  75. package/dist/tools/search-content.js +5 -10
  76. package/dist/tools/search-content.js.map +1 -1
  77. package/dist/tools/search-files.d.ts.map +1 -1
  78. package/dist/tools/search-files.js +6 -5
  79. package/dist/tools/search-files.js.map +1 -1
  80. package/package.json +8 -8
@@ -1,18 +1,67 @@
1
1
  import * as fs from 'node:fs/promises';
2
2
  import * as path from 'node:path';
3
3
  import fg from 'fast-glob';
4
+ import { Minimatch } from 'minimatch';
4
5
  import safeRegex from 'safe-regex2';
5
6
  import { DEFAULT_MAX_DEPTH, DEFAULT_MAX_RESULTS, DEFAULT_TOP_N, DIR_TRAVERSAL_CONCURRENCY, getMimeType, MAX_MEDIA_FILE_SIZE, MAX_SEARCHABLE_FILE_SIZE, MAX_TEXT_FILE_SIZE, PARALLEL_CONCURRENCY, } from './constants.js';
6
- import { classifyAccessError, createExcludeMatcher, handleDirectoryError, insertSorted, } from './directory-helpers.js';
7
7
  import { ErrorCode, McpError } from './errors.js';
8
8
  import { getFileType, isHidden, isProbablyBinary, processInParallel, readFile, runWorkQueue, } from './fs-helpers.js';
9
9
  import { parseImageDimensions } from './image-parsing.js';
10
10
  import { validateExistingPath, validateExistingPathDetailed, } from './path-validation.js';
11
11
  import { isSimpleSafePattern, prepareSearchPattern, scanFileForContent, } from './search-helpers.js';
12
- import { createSearchResultSorter, createSorter } from './sorting.js';
13
- // Convert file mode to permission string (e.g., 'rwxr-xr-x')
12
+ function createExcludeMatcher(excludePatterns) {
13
+ if (excludePatterns.length === 0) {
14
+ return () => false;
15
+ }
16
+ const matchers = excludePatterns.map((pattern) => new Minimatch(pattern));
17
+ return (name, relativePath) => matchers.some((m) => m.match(name) || m.match(relativePath));
18
+ }
19
+ function classifyAccessError(error) {
20
+ if (error instanceof McpError &&
21
+ (error.code === ErrorCode.E_ACCESS_DENIED ||
22
+ error.code === ErrorCode.E_SYMLINK_NOT_ALLOWED)) {
23
+ return 'symlink';
24
+ }
25
+ return 'inaccessible';
26
+ }
27
+ function insertSorted(arr, item, compare, maxLen) {
28
+ if (maxLen <= 0)
29
+ return;
30
+ const idx = arr.findIndex((el) => compare(item, el) < 0);
31
+ if (idx === -1) {
32
+ if (arr.length < maxLen)
33
+ arr.push(item);
34
+ }
35
+ else {
36
+ arr.splice(idx, 0, item);
37
+ if (arr.length > maxLen)
38
+ arr.pop();
39
+ }
40
+ }
41
+ const SORT_COMPARATORS = {
42
+ size: (a, b) => (b.size ?? 0) - (a.size ?? 0),
43
+ modified: (a, b) => (b.modified?.getTime() ?? 0) - (a.modified?.getTime() ?? 0),
44
+ type: (a, b) => {
45
+ if (a.type !== b.type)
46
+ return a.type === 'directory' ? -1 : 1;
47
+ return (a.name ?? '').localeCompare(b.name ?? '');
48
+ },
49
+ path: (a, b) => (a.path ?? '').localeCompare(b.path ?? ''),
50
+ name: (a, b) => (a.name ?? '').localeCompare(b.name ?? ''),
51
+ };
52
+ function sortByField(items, sortBy) {
53
+ const comparator = SORT_COMPARATORS[sortBy];
54
+ items.sort(comparator);
55
+ }
56
+ function sortSearchResults(results, sortBy) {
57
+ if (sortBy === 'name') {
58
+ results.sort((a, b) => path.basename(a.path ?? '').localeCompare(path.basename(b.path ?? '')));
59
+ }
60
+ else {
61
+ sortByField(results, sortBy);
62
+ }
63
+ }
14
64
  function getPermissions(mode) {
15
- // Permission strings indexed by octal value (0-7)
16
65
  const PERM_STRINGS = [
17
66
  '---',
18
67
  '--x',
@@ -23,7 +72,6 @@ function getPermissions(mode) {
23
72
  'rw-',
24
73
  'rwx',
25
74
  ];
26
- // Use bitwise operations and bounds-checked array access
27
75
  const ownerIndex = (mode >> 6) & 0b111;
28
76
  const groupIndex = (mode >> 3) & 0b111;
29
77
  const otherIndex = mode & 0b111;
@@ -88,9 +136,8 @@ export async function listDirectory(dirPath, options = {}) {
88
136
  try {
89
137
  items = await fs.readdir(currentPath, { withFileTypes: true });
90
138
  }
91
- catch (error) {
139
+ catch {
92
140
  skippedInaccessible++;
93
- handleDirectoryError(error);
94
141
  return;
95
142
  }
96
143
  const visibleItems = includeHidden
@@ -174,7 +221,7 @@ export async function listDirectory(dirPath, options = {}) {
174
221
  enqueue(enqueueDir);
175
222
  }
176
223
  }, DIR_TRAVERSAL_CONCURRENCY);
177
- entries.sort(createSorter(sortBy));
224
+ sortByField(entries, sortBy);
178
225
  return {
179
226
  path: validPath,
180
227
  entries,
@@ -195,17 +242,17 @@ export async function searchFiles(basePath, pattern, excludePatterns = [], optio
195
242
  const results = [];
196
243
  let skippedInaccessible = 0;
197
244
  let truncated = false;
245
+ let filesScanned = 0;
198
246
  const batch = [];
199
247
  const flushBatch = async () => {
200
248
  if (batch.length === 0)
201
249
  return;
202
250
  const toProcess = batch.splice(0, batch.length);
203
251
  const settled = await Promise.allSettled(toProcess.map(async (match) => {
204
- const validMatch = await validateExistingPath(match);
205
- const stats = await fs.stat(validMatch);
252
+ const stats = await fs.stat(match);
206
253
  const { size, mtime: modified } = stats;
207
254
  return {
208
- path: validMatch,
255
+ path: match,
209
256
  type: getFileType(stats),
210
257
  size: stats.isFile() ? size : undefined,
211
258
  modified,
@@ -236,6 +283,7 @@ export async function searchFiles(basePath, pattern, excludePatterns = [], optio
236
283
  });
237
284
  for await (const entry of stream) {
238
285
  const matchPath = typeof entry === 'string' ? entry : String(entry);
286
+ filesScanned++;
239
287
  if (maxResults !== undefined && results.length >= maxResults) {
240
288
  truncated = true;
241
289
  break;
@@ -250,7 +298,7 @@ export async function searchFiles(basePath, pattern, excludePatterns = [], optio
250
298
  }
251
299
  }
252
300
  await flushBatch();
253
- results.sort(createSearchResultSorter(sortBy));
301
+ sortSearchResults(results, sortBy);
254
302
  return {
255
303
  basePath: validPath,
256
304
  pattern,
@@ -259,15 +307,32 @@ export async function searchFiles(basePath, pattern, excludePatterns = [], optio
259
307
  matched: results.length,
260
308
  truncated,
261
309
  skippedInaccessible,
310
+ filesScanned,
262
311
  },
263
312
  };
264
313
  }
265
314
  export { readFile };
266
315
  export async function readMultipleFiles(filePaths, options = {}) {
267
- const { encoding = 'utf-8', maxSize = MAX_TEXT_FILE_SIZE, head, tail, } = options;
316
+ const { encoding = 'utf-8', maxSize = MAX_TEXT_FILE_SIZE, maxTotalSize = 100 * 1024 * 1024, head, tail, } = options;
268
317
  if (filePaths.length === 0)
269
318
  return [];
270
319
  const output = filePaths.map((filePath) => ({ path: filePath }));
320
+ let totalSize = 0;
321
+ const fileSizes = new Map();
322
+ for (const filePath of filePaths) {
323
+ try {
324
+ const validPath = await validateExistingPath(filePath);
325
+ const stats = await fs.stat(validPath);
326
+ fileSizes.set(filePath, stats.size);
327
+ totalSize += stats.size;
328
+ }
329
+ catch {
330
+ fileSizes.set(filePath, 0);
331
+ }
332
+ }
333
+ if (totalSize > maxTotalSize) {
334
+ throw new McpError(ErrorCode.E_TOO_LARGE, `Total size of all files (${totalSize} bytes) exceeds limit (${maxTotalSize} bytes)`, undefined, { totalSize, maxTotalSize, fileCount: filePaths.length });
335
+ }
271
336
  const { results, errors } = await processInParallel(filePaths.map((filePath, index) => ({ filePath, index })), async ({ filePath, index }) => {
272
337
  const result = await readFile(filePath, {
273
338
  encoding,
@@ -323,6 +388,7 @@ export async function searchContent(basePath, searchPattern, options = {}) {
323
388
  let linesSkippedDueToRegexTimeout = 0;
324
389
  let truncated = false;
325
390
  let stoppedReason;
391
+ let firstPathValidated = false;
326
392
  const stopNow = (reason) => {
327
393
  truncated = true;
328
394
  stoppedReason = reason;
@@ -337,72 +403,88 @@ export async function searchContent(basePath, searchPattern, options = {}) {
337
403
  suppressErrors: true,
338
404
  followSymbolicLinks: false,
339
405
  });
340
- for await (const entry of stream) {
341
- const file = typeof entry === 'string' ? entry : String(entry);
342
- if (deadlineMs !== undefined && Date.now() > deadlineMs) {
343
- stopNow('timeout');
344
- break;
345
- }
346
- if (maxFilesScanned !== undefined && filesScanned >= maxFilesScanned) {
347
- stopNow('maxFiles');
348
- break;
349
- }
350
- if (matches.length >= maxResults) {
351
- stopNow('maxResults');
352
- break;
353
- }
354
- let validFile;
355
- let handle;
356
- try {
357
- validFile = await validateExistingPath(file);
358
- handle = await fs.open(validFile, 'r');
359
- const stats = await handle.stat();
360
- filesScanned++;
361
- if (stats.size > maxFileSize) {
362
- skippedTooLarge++;
363
- await handle.close();
364
- handle = undefined;
365
- continue;
366
- }
367
- if (skipBinary) {
368
- const binary = await isProbablyBinary(validFile, handle);
369
- if (binary) {
370
- skippedBinary++;
371
- await handle.close();
372
- handle = undefined;
373
- continue;
406
+ try {
407
+ for await (const entry of stream) {
408
+ const file = typeof entry === 'string' ? entry : String(entry);
409
+ if (!firstPathValidated) {
410
+ try {
411
+ await validateExistingPath(file);
412
+ firstPathValidated = true;
413
+ }
414
+ catch {
415
+ console.error('[SECURITY] fast-glob returned invalid path:', file);
416
+ stopNow('maxFiles');
417
+ break;
374
418
  }
375
419
  }
376
- await handle.close();
377
- handle = undefined;
378
- const scanResult = await scanFileForContent(validFile, regex, {
379
- maxResults,
380
- contextLines,
381
- deadlineMs,
382
- currentMatchCount: matches.length,
383
- });
384
- matches.push(...scanResult.matches);
385
- linesSkippedDueToRegexTimeout += scanResult.linesSkippedDueToRegexTimeout;
386
- if (scanResult.fileHadMatches)
387
- filesMatched++;
388
420
  if (deadlineMs !== undefined && Date.now() > deadlineMs) {
389
421
  stopNow('timeout');
390
422
  break;
391
423
  }
424
+ if (maxFilesScanned !== undefined && filesScanned >= maxFilesScanned) {
425
+ stopNow('maxFiles');
426
+ break;
427
+ }
392
428
  if (matches.length >= maxResults) {
393
429
  stopNow('maxResults');
394
430
  break;
395
431
  }
396
- if (stoppedReason !== undefined)
397
- break;
398
- }
399
- catch {
400
- if (handle) {
401
- await handle.close().catch(() => { });
432
+ try {
433
+ const handle = await fs.open(file, 'r');
434
+ let shouldScan = true;
435
+ try {
436
+ const stats = await handle.stat();
437
+ filesScanned++;
438
+ if (stats.size > maxFileSize) {
439
+ skippedTooLarge++;
440
+ shouldScan = false;
441
+ }
442
+ else if (skipBinary) {
443
+ const binary = await isProbablyBinary(file, handle);
444
+ if (binary) {
445
+ skippedBinary++;
446
+ shouldScan = false;
447
+ }
448
+ }
449
+ }
450
+ finally {
451
+ await handle.close().catch(() => { });
452
+ }
453
+ if (!shouldScan)
454
+ continue;
455
+ const scanResult = await scanFileForContent(file, regex, {
456
+ maxResults,
457
+ contextLines,
458
+ deadlineMs,
459
+ currentMatchCount: matches.length,
460
+ isLiteral,
461
+ searchString: isLiteral ? searchPattern : undefined,
462
+ caseSensitive,
463
+ });
464
+ matches.push(...scanResult.matches);
465
+ linesSkippedDueToRegexTimeout +=
466
+ scanResult.linesSkippedDueToRegexTimeout;
467
+ if (scanResult.fileHadMatches)
468
+ filesMatched++;
469
+ if (deadlineMs !== undefined && Date.now() > deadlineMs) {
470
+ stopNow('timeout');
471
+ break;
472
+ }
473
+ if (matches.length >= maxResults) {
474
+ stopNow('maxResults');
475
+ break;
476
+ }
477
+ if (stoppedReason !== undefined)
478
+ break;
479
+ }
480
+ catch {
481
+ skippedInaccessible++;
402
482
  }
403
- skippedInaccessible++;
404
483
  }
405
484
  }
485
+ finally {
486
+ // Ensure the stream is closed
487
+ }
406
488
  return {
407
489
  basePath: validPath,
408
490
  pattern: searchPattern,
@@ -442,9 +524,8 @@ export async function analyzeDirectory(dirPath, options = {}) {
442
524
  try {
443
525
  items = await fs.readdir(currentPath, { withFileTypes: true });
444
526
  }
445
- catch (error) {
527
+ catch {
446
528
  skippedInaccessible++;
447
- handleDirectoryError(error);
448
529
  return;
449
530
  }
450
531
  for (const item of items) {
@@ -477,8 +558,8 @@ export async function analyzeDirectory(dirPath, options = {}) {
477
558
  totalSize += stats.size;
478
559
  const ext = path.extname(item.name).toLowerCase() || '(no extension)';
479
560
  fileTypes[ext] = (fileTypes[ext] ?? 0) + 1;
480
- insertSorted(largestFiles, { path: validated.resolvedPath, size: stats.size }, (a, b) => a.size > b.size, topN);
481
- insertSorted(recentlyModified, { path: validated.resolvedPath, modified: stats.mtime }, (a, b) => a.modified.getTime() > b.modified.getTime(), topN);
561
+ insertSorted(largestFiles, { path: validated.resolvedPath, size: stats.size }, (a, b) => b.size - a.size, topN);
562
+ insertSorted(recentlyModified, { path: validated.resolvedPath, modified: stats.mtime }, (a, b) => b.modified.getTime() - a.modified.getTime(), topN);
482
563
  }
483
564
  }
484
565
  catch (error) {
@@ -527,103 +608,126 @@ export async function getDirectoryTree(dirPath, options = {}) {
527
608
  const hitMaxFiles = () => {
528
609
  return maxFiles !== undefined && totalFiles >= maxFiles;
529
610
  };
530
- const buildTree = async (currentPath, depth, relativePath = '') => {
611
+ const collectedEntries = [];
612
+ const directoriesFound = new Set([validPath]);
613
+ await runWorkQueue([{ currentPath: validPath, depth: 0 }], async ({ currentPath, depth }, enqueue) => {
531
614
  if (hitMaxFiles()) {
532
615
  truncated = true;
533
- return null;
534
- }
535
- let validatedPath;
536
- let isSymlink = false;
537
- try {
538
- ({ resolvedPath: validatedPath, isSymlink } =
539
- await validateExistingPathDetailed(currentPath));
540
- }
541
- catch (error) {
542
- if (classifyAccessError(error) === 'symlink') {
543
- symlinksNotFollowed++;
544
- }
545
- else {
546
- skippedInaccessible++;
547
- }
548
- return null;
549
- }
550
- const name = path.basename(validatedPath);
551
- if (shouldExclude(name, relativePath)) {
552
- return null;
616
+ return;
553
617
  }
554
- if (!includeHidden && name.startsWith('.') && relativePath !== '') {
555
- return null;
618
+ if (depth > maxDepth) {
619
+ truncated = true;
620
+ return;
556
621
  }
557
622
  maxDepthReached = Math.max(maxDepthReached, depth);
558
- if (isSymlink) {
559
- symlinksNotFollowed++;
560
- return null;
561
- }
562
- let stats;
623
+ let items;
563
624
  try {
564
- stats = await fs.stat(validatedPath);
625
+ items = await fs.readdir(currentPath, { withFileTypes: true });
565
626
  }
566
627
  catch {
567
628
  skippedInaccessible++;
568
- return null;
629
+ return;
569
630
  }
570
- const { size } = stats;
571
- if (stats.isFile()) {
631
+ for (const item of items) {
572
632
  if (hitMaxFiles()) {
573
633
  truncated = true;
574
- return null;
575
- }
576
- totalFiles++;
577
- const entry = { name, type: 'file' };
578
- if (includeSize) {
579
- entry.size = size;
634
+ break;
580
635
  }
581
- return entry;
582
- }
583
- if (stats.isDirectory()) {
584
- totalDirectories++;
585
- if (depth >= maxDepth) {
586
- truncated = true;
587
- return { name, type: 'directory', children: [] };
636
+ const { name } = item;
637
+ if (!includeHidden && name.startsWith('.')) {
638
+ continue;
588
639
  }
589
- let items;
590
- try {
591
- items = await fs.readdir(validatedPath, { withFileTypes: true });
640
+ const fullPath = path.join(currentPath, name);
641
+ const relativePath = path.relative(validPath, fullPath);
642
+ if (shouldExclude(name, relativePath)) {
643
+ continue;
592
644
  }
593
- catch {
594
- skippedInaccessible++;
595
- return { name, type: 'directory', children: [] };
645
+ if (item.isSymbolicLink()) {
646
+ symlinksNotFollowed++;
647
+ continue;
596
648
  }
597
- const children = [];
598
- for (let i = 0; i < items.length && !hitMaxFiles(); i += DIR_TRAVERSAL_CONCURRENCY) {
599
- const batch = items.slice(i, i + DIR_TRAVERSAL_CONCURRENCY);
600
- const batchResults = await Promise.all(batch.map((item) => {
601
- const childPath = path.join(validatedPath, item.name);
602
- const childRelative = relativePath
603
- ? `${relativePath}/${item.name}`
604
- : item.name;
605
- return buildTree(childPath, depth + 1, childRelative);
606
- }));
607
- for (const entry of batchResults) {
608
- if (entry !== null) {
609
- children.push(entry);
649
+ try {
650
+ const { resolvedPath, isSymlink } = await validateExistingPathDetailed(fullPath);
651
+ if (isSymlink) {
652
+ symlinksNotFollowed++;
653
+ continue;
654
+ }
655
+ const stats = await fs.stat(resolvedPath);
656
+ if (stats.isFile()) {
657
+ totalFiles++;
658
+ collectedEntries.push({
659
+ parentPath: currentPath,
660
+ name,
661
+ type: 'file',
662
+ size: includeSize ? stats.size : undefined,
663
+ depth,
664
+ });
665
+ }
666
+ else if (stats.isDirectory()) {
667
+ totalDirectories++;
668
+ directoriesFound.add(resolvedPath);
669
+ collectedEntries.push({
670
+ parentPath: currentPath,
671
+ name,
672
+ type: 'directory',
673
+ depth,
674
+ });
675
+ if (depth + 1 <= maxDepth) {
676
+ enqueue({ currentPath: resolvedPath, depth: depth + 1 });
677
+ }
678
+ else {
679
+ truncated = true;
610
680
  }
611
681
  }
612
682
  }
613
- children.sort((a, b) => {
614
- if (a.type !== b.type) {
615
- return a.type === 'directory' ? -1 : 1;
683
+ catch (error) {
684
+ if (classifyAccessError(error) === 'symlink') {
685
+ symlinksNotFollowed++;
616
686
  }
617
- return a.name.localeCompare(b.name);
618
- });
619
- return { name, type: 'directory', children };
687
+ else {
688
+ skippedInaccessible++;
689
+ }
690
+ }
691
+ }
692
+ }, DIR_TRAVERSAL_CONCURRENCY);
693
+ const childrenByParent = new Map();
694
+ for (const dirPath of directoriesFound) {
695
+ childrenByParent.set(dirPath, []);
696
+ }
697
+ for (const entry of collectedEntries) {
698
+ const treeEntry = {
699
+ name: entry.name,
700
+ type: entry.type,
701
+ };
702
+ if (entry.type === 'file' && entry.size !== undefined) {
703
+ treeEntry.size = entry.size;
704
+ }
705
+ if (entry.type === 'directory') {
706
+ const fullPath = path.join(entry.parentPath, entry.name);
707
+ treeEntry.children = childrenByParent.get(fullPath) ?? [];
620
708
  }
621
- return null;
709
+ const siblings = childrenByParent.get(entry.parentPath);
710
+ if (siblings) {
711
+ siblings.push(treeEntry);
712
+ }
713
+ }
714
+ const sortChildren = (entries) => {
715
+ entries.sort((a, b) => {
716
+ if (a.type !== b.type) {
717
+ return a.type === 'directory' ? -1 : 1;
718
+ }
719
+ return a.name.localeCompare(b.name);
720
+ });
622
721
  };
623
- const tree = await buildTree(validPath, 0);
624
- if (!tree) {
625
- throw new McpError(ErrorCode.E_UNKNOWN, `Unable to build tree for path: ${dirPath}`, dirPath);
722
+ for (const children of childrenByParent.values()) {
723
+ sortChildren(children);
626
724
  }
725
+ const rootName = path.basename(validPath);
726
+ const tree = {
727
+ name: rootName || validPath,
728
+ type: 'directory',
729
+ children: childrenByParent.get(validPath) ?? [],
730
+ };
627
731
  return {
628
732
  tree,
629
733
  summary: {
@@ -636,8 +740,7 @@ export async function getDirectoryTree(dirPath, options = {}) {
636
740
  },
637
741
  };
638
742
  }
639
- export async function readMediaFile(filePath, options = {}) {
640
- const { maxSize = MAX_MEDIA_FILE_SIZE } = options;
743
+ export async function readMediaFile(filePath, { maxSize = MAX_MEDIA_FILE_SIZE } = {}) {
641
744
  const validPath = await validateExistingPath(filePath);
642
745
  const stats = await fs.stat(validPath);
643
746
  const { size } = stats;
@@ -1 +1 @@
1
- {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,SAAS,MAAM,aAAa,CAAC;AAiBpC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEtE,6DAA6D;AAC7D,SAAS,cAAc,CAAC,IAAY;IAClC,kDAAkD;IAClD,MAAM,YAAY,GAAG;QACnB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KAC+B,CAAC;IAEvC,yDAAyD;IACzD,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;IAEhC,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;IAEhD,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,GAC9C,MAAM,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpD,IAAI,aAAiC,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,SAAS;QACxB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QACvC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;QACxB,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,UAOI,EAAE;IAEN,MAAM,EACJ,SAAS,GAAG,KAAK,EACjB,aAAa,GAAG,KAAK,EACrB,QAAQ,GAAG,iBAAiB,EAC5B,UAAU,EACV,MAAM,GAAG,MAAM,EACf,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAE5B,MAAM,YAAY,GAAG,GAAY,EAAE;QACjC,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC7D,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,YAAY,CAChB,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;QACxC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QAC7B,IAAI,YAAY,EAAE;YAAE,OAAO;QAC3B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,aAAa;YAChC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjD,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAC3D,MAAM,iBAAiB,CACrB,YAAY,EACZ,KAAK,EACH,IAAI,EAIH,EAAE;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YAElD,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC1B,mBAAmB,EAAE,CAAC;oBACtB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAEvC,IAAI,aAAiC,CAAC;oBACtC,IAAI,qBAAqB,EAAE,CAAC;wBAC1B,IAAI,CAAC;4BACH,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC9C,CAAC;wBAAC,MAAM,CAAC;4BACP,4BAA4B;wBAC9B,CAAC;oBACH,CAAC;oBAED,MAAM,KAAK,GAAmB;wBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,QAAQ;wBACd,YAAY;wBACZ,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,KAAK,CAAC,KAAK;wBACrB,aAAa;qBACd,CAAC;oBACF,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAa,KAAK;oBAC1B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;wBACb,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAEzB,MAAM,KAAK,GAAmB;oBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,QAAQ;oBACd,YAAY;oBACZ,IAAI;oBACJ,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;oBAC9C,QAAQ,EAAE,KAAK,CAAC,KAAK;iBACtB,CAAC;gBAEF,MAAM,UAAU,GACd,SAAS,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ;oBACzC,CAAC,CAAC;wBACE,WAAW,EAAE,MAAM,oBAAoB,CAAC,QAAQ,CAAC;wBACjD,KAAK,EAAE,KAAK,GAAG,CAAC;qBACjB;oBACH,CAAC,CAAC,SAAS,CAAC;gBAEhB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAmB;oBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,QAAQ;oBACd,YAAY;oBACZ,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;wBACtB,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;4BACb,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,OAAO;iBACd,CAAC;gBACF,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CACF,CAAC;QAEJ,mBAAmB,IAAI,gBAAgB,CAAC,MAAM,CAAC;QAE/C,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,gBAAgB,EAAE,CAAC;YACrD,IAAI,YAAY,EAAE;gBAAE,MAAM;YAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,gBAAgB,EAAE,CAAC;YACnD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,UAAU,EAAE,CAAC;YACxC,IAAI,UAAU;gBAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,EACD,yBAAyB,CAC1B,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO;QACP,OAAO,EAAE;YACP,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,UAAU;YACV,gBAAgB;YAChB,eAAe;YACf,SAAS;YACT,mBAAmB;YACnB,mBAAmB;SACpB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,OAAe,EACf,kBAA4B,EAAE,EAC9B,UAII,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEvD,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE1D,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;gBACxB,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACvC,QAAQ;aACc,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC7B,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;oBAC7D,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,mBAAmB,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;QAChC,GAAG,EAAE,SAAS;QACd,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,KAAK;QAChB,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;QAC1B,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC7D,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;YACzC,MAAM,UAAU,EAAE,CAAC;YACnB,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBAC7D,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,EAAE,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/C,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,OAAO;QACP,OAAO;QACP,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,SAAS;YACT,mBAAmB;SACpB;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAmB,EACnB,UAKI,EAAE;IAEN,MAAM,EACJ,QAAQ,GAAG,OAAO,EAClB,OAAO,GAAG,kBAAkB,EAC5B,IAAI,EACJ,IAAI,GACL,GAAG,OAAO,CAAC;IAEZ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,MAAM,GACV,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CACjD,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE;YACtC,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;QACH,OAAO;YACL,KAAK;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SACtD,CAAC;IACJ,CAAC,EACD,oBAAoB,CACrB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,aAAqB,EACrB,UAYI,EAAE;IAEN,MAAM,EACJ,WAAW,GAAG,MAAM,EACpB,eAAe,GAAG,EAAE,EACpB,aAAa,GAAG,KAAK,EACrB,UAAU,GAAG,mBAAmB,EAChC,WAAW,GAAG,wBAAwB,EACtC,eAAe,EACf,SAAS,EACT,UAAU,GAAG,IAAI,EACjB,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,KAAK,GAClB,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEvD,MAAM,UAAU,GACd,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/D,gFAAgF;IAChF,MAAM,YAAY,GAAG,oBAAoB,CAAC,aAAa,EAAE;QACvD,SAAS;QACT,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAEzE,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,iBAAiB,EAC3B,uDAAuD,aAAa,IAAI;YACtE,gGAAgG,EAClG,QAAQ,EACR,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAClC,CAAC;IACJ,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,iBAAiB,EAC3B,+BAA+B,YAAY,KAAK,OAAO,GAAG,EAC1D,QAAQ,EACR,EAAE,aAAa,EAAE,YAAY,EAAE,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,6BAA6B,GAAG,CAAC,CAAC;IACtC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAA8D,CAAC;IAEnE,MAAM,OAAO,GAAG,CAAC,MAA4B,EAAW,EAAE;QACxD,SAAS,GAAG,IAAI,CAAC;QACjB,aAAa,GAAG,MAAM,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;QACpC,GAAG,EAAE,SAAS;QACd,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;YACxD,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;YACrE,OAAO,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,YAAY,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QAED,IAAI,SAAiB,CAAC;QACtB,IAAI,MAAiC,CAAC;QACtC,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAElC,YAAY,EAAE,CAAC;YAEf,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;gBAC7B,eAAe,EAAE,CAAC;gBAClB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,GAAG,SAAS,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACzD,IAAI,MAAM,EAAE,CAAC;oBACX,aAAa,EAAE,CAAC;oBAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,GAAG,SAAS,CAAC;oBACnB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,SAAS,CAAC;YAEnB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE;gBAC5D,UAAU;gBACV,YAAY;gBACZ,UAAU;gBACV,iBAAiB,EAAE,OAAO,CAAC,MAAM;aAClC,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACpC,6BAA6B,IAAI,UAAU,CAAC,6BAA6B,CAAC;YAC1E,IAAI,UAAU,CAAC,cAAc;gBAAE,YAAY,EAAE,CAAC;YAE9C,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;gBACxD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,MAAM;YACR,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACjC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACtB,MAAM;YACR,CAAC;YAED,IAAI,aAAa,KAAK,SAAS;gBAAE,MAAM;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,mBAAmB,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,aAAa;QACtB,WAAW;QACX,OAAO;QACP,OAAO,EAAE;YACP,YAAY;YACZ,YAAY;YACZ,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,SAAS;YACT,eAAe;YACf,aAAa;YACb,mBAAmB;YACnB,6BAA6B;YAC7B,aAAa;SACd;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,UAKI,EAAE;IAEN,MAAM,EACJ,QAAQ,GAAG,iBAAiB,EAC5B,IAAI,GAAG,aAAa,EACpB,eAAe,GAAG,EAAE,EACpB,aAAa,GAAG,KAAK,GACtB,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAqC,EAAE,CAAC;IAC1D,MAAM,gBAAgB,GAAuC,EAAE,CAAC;IAEhE,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE5D,MAAM,YAAY,CAChB,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;QACxC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QAC7B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,QAAQ,CAAC,CAAC;gBAC/D,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBACjD,mBAAmB,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,gBAAgB,EAAE,CAAC;oBACnB,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;wBAC1B,OAAO,CAAC;4BACN,WAAW,EAAE,SAAS,CAAC,YAAY;4BACnC,KAAK,EAAE,KAAK,GAAG,CAAC;yBACjB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,UAAU,EAAE,CAAC;oBACb,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;oBAExB,MAAM,GAAG,GACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC;oBAC5D,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAE3C,YAAY,CACV,YAAY,EACZ,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EACzB,IAAI,CACL,CAAC;oBACF,YAAY,CACV,gBAAgB,EAChB,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,EACvD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EACrD,IAAI,CACL,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC7C,mBAAmB,EAAE,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,mBAAmB,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EACD,yBAAyB,CAC1B,CAAC;IAEF,MAAM,QAAQ,GAAsB;QAClC,IAAI,EAAE,SAAS;QACf,UAAU;QACV,gBAAgB;QAChB,SAAS;QACT,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,QAAQ,EAAE,eAAe;KAC1B,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,OAAO,EAAE;YACP,SAAS,EAAE,KAAK;YAChB,mBAAmB;YACnB,mBAAmB;SACpB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,UAMI,EAAE;IAEN,MAAM,EACJ,QAAQ,GAAG,iBAAiB,EAC5B,eAAe,GAAG,EAAE,EACpB,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,QAAQ,GACT,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,oBAAoB,OAAO,EAAE,EAC7B,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,GAAY,EAAE;QAChC,OAAO,QAAQ,KAAK,SAAS,IAAI,UAAU,IAAI,QAAQ,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EACrB,WAAmB,EACnB,KAAa,EACb,YAAY,GAAG,EAAE,EACU,EAAE;QAC7B,IAAI,WAAW,EAAE,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAqB,CAAC;QAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE;gBACzC,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7C,mBAAmB,EAAE,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,mBAAmB,EAAE,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,SAAS,EAAE,CAAC;YACd,mBAAmB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,IAAI,WAAW,EAAE,EAAE,CAAC;gBAClB,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,UAAU,EAAE,CAAC;YACb,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,gBAAgB,EAAE,CAAC;YAEnB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACtB,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YACnD,CAAC;YAED,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YACnD,CAAC;YAED,MAAM,QAAQ,GAAgB,EAAE,CAAC;YACjC,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAClC,CAAC,IAAI,yBAAyB,EAC9B,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,yBAAyB,CAAC,CAAC;gBAC5D,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtD,MAAM,aAAa,GAAG,YAAY;wBAChC,CAAC,CAAC,GAAG,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE;wBAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACd,OAAO,SAAS,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;gBACxD,CAAC,CAAC,CACH,CAAC;gBACF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBACjC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACtB,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,SAAS,EACnB,kCAAkC,OAAO,EAAE,EAC3C,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI;QACJ,OAAO,EAAE;YACP,UAAU;YACV,gBAAgB;YAChB,eAAe;YACf,SAAS;YACT,mBAAmB;YACnB,mBAAmB;SACpB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,UAEI,EAAE;IAEN,MAAM,EAAE,OAAO,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,UAAU,EACpB,eAAe,QAAQ,EAAE,EACzB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,WAAW,EACrB,mBAAmB,IAAI,gBAAgB,OAAO,SAAS,EACvD,QAAQ,EACR,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAA0B,CAAC;IAE/B,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,UAAU,EAAE,CAAC;YACf,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"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"}