vibe-coding-mcp 2.6.0 → 2.12.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 (60) hide show
  1. package/README.md +122 -4
  2. package/dist/__tests__/exportSession.test.d.ts +2 -0
  3. package/dist/__tests__/exportSession.test.d.ts.map +1 -0
  4. package/dist/__tests__/exportSession.test.js +180 -0
  5. package/dist/__tests__/exportSession.test.js.map +1 -0
  6. package/dist/__tests__/git.test.d.ts +2 -0
  7. package/dist/__tests__/git.test.d.ts.map +1 -0
  8. package/dist/__tests__/git.test.js +282 -0
  9. package/dist/__tests__/git.test.js.map +1 -0
  10. package/dist/__tests__/projectProfile.test.d.ts +2 -0
  11. package/dist/__tests__/projectProfile.test.d.ts.map +1 -0
  12. package/dist/__tests__/projectProfile.test.js +216 -0
  13. package/dist/__tests__/projectProfile.test.js.map +1 -0
  14. package/dist/core/profileStorage.d.ts +117 -0
  15. package/dist/core/profileStorage.d.ts.map +1 -0
  16. package/dist/core/profileStorage.js +251 -0
  17. package/dist/core/profileStorage.js.map +1 -0
  18. package/dist/core/schemas.d.ts +576 -4
  19. package/dist/core/schemas.d.ts.map +1 -1
  20. package/dist/core/schemas.js +185 -0
  21. package/dist/core/schemas.js.map +1 -1
  22. package/dist/stdio.js +44 -2
  23. package/dist/stdio.js.map +1 -1
  24. package/dist/tools/autoTag.d.ts +145 -0
  25. package/dist/tools/autoTag.d.ts.map +1 -0
  26. package/dist/tools/autoTag.js +475 -0
  27. package/dist/tools/autoTag.js.map +1 -0
  28. package/dist/tools/batch.d.ts +119 -0
  29. package/dist/tools/batch.d.ts.map +1 -0
  30. package/dist/tools/batch.js +459 -0
  31. package/dist/tools/batch.js.map +1 -0
  32. package/dist/tools/exportSession.d.ts +79 -0
  33. package/dist/tools/exportSession.d.ts.map +1 -0
  34. package/dist/tools/exportSession.js +434 -0
  35. package/dist/tools/exportSession.js.map +1 -0
  36. package/dist/tools/git.d.ts +226 -0
  37. package/dist/tools/git.d.ts.map +1 -0
  38. package/dist/tools/git.js +493 -0
  39. package/dist/tools/git.js.map +1 -0
  40. package/dist/tools/projectProfile.d.ts +230 -0
  41. package/dist/tools/projectProfile.d.ts.map +1 -0
  42. package/dist/tools/projectProfile.js +367 -0
  43. package/dist/tools/projectProfile.js.map +1 -0
  44. package/dist/tools/sessionStats.d.ts +129 -0
  45. package/dist/tools/sessionStats.d.ts.map +1 -0
  46. package/dist/tools/sessionStats.js +554 -0
  47. package/dist/tools/sessionStats.js.map +1 -0
  48. package/dist/tools/template.d.ts +127 -0
  49. package/dist/tools/template.d.ts.map +1 -0
  50. package/dist/tools/template.js +617 -0
  51. package/dist/tools/template.js.map +1 -0
  52. package/dist/utils/gitExecutor.d.ts +34 -0
  53. package/dist/utils/gitExecutor.d.ts.map +1 -0
  54. package/dist/utils/gitExecutor.js +95 -0
  55. package/dist/utils/gitExecutor.js.map +1 -0
  56. package/dist/utils/gitParsers.d.ts +90 -0
  57. package/dist/utils/gitParsers.d.ts.map +1 -0
  58. package/dist/utils/gitParsers.js +286 -0
  59. package/dist/utils/gitParsers.js.map +1 -0
  60. package/package.json +3 -2
@@ -0,0 +1,459 @@
1
+ /**
2
+ * Batch Operations Tool (v2.12)
3
+ * Executes multiple tool operations in batch with dependency management
4
+ */
5
+ import { createToolLogger } from '../core/logger.js';
6
+ // Import all available tools for batch execution
7
+ import { collectCodeContext } from './collectCodeContext.js';
8
+ import { summarizeDesignDecisions } from './summarizeDesignDecisions.js';
9
+ import { generateDevDocument } from './generateDevDocument.js';
10
+ import { normalizeForPlatform } from './normalizeForPlatform.js';
11
+ import { publishDocument } from './publishDocument.js';
12
+ import { createSessionLog } from './createSessionLog.js';
13
+ import { analyzeCodeTool } from './analyzeCode.js';
14
+ import { sessionHistoryTool } from './sessionHistory.js';
15
+ import { exportSessionTool } from './exportSession.js';
16
+ import { projectProfileTool } from './projectProfile.js';
17
+ import { gitTool } from './git.js';
18
+ import { sessionStatsTool } from './sessionStats.js';
19
+ import { autoTagTool } from './autoTag.js';
20
+ import { templateTool } from './template.js';
21
+ const logger = createToolLogger('batch');
22
+ // In-memory job storage
23
+ const jobHistory = new Map();
24
+ const activeJobs = new Map();
25
+ // Tool registry mapping tool names to functions
26
+ // Wrap sync functions to return promises for consistent handling
27
+ const toolRegistry = {
28
+ muse_collect_code_context: async (p) => collectCodeContext(p),
29
+ muse_summarize_design_decisions: summarizeDesignDecisions,
30
+ muse_generate_dev_document: async (p) => generateDevDocument(p),
31
+ muse_normalize_for_platform: async (p) => normalizeForPlatform(p),
32
+ muse_publish_document: publishDocument,
33
+ muse_create_session_log: createSessionLog,
34
+ muse_analyze_code: analyzeCodeTool,
35
+ muse_session_history: sessionHistoryTool,
36
+ muse_export_session: exportSessionTool,
37
+ muse_project_profile: projectProfileTool,
38
+ muse_git: gitTool,
39
+ muse_session_stats: sessionStatsTool,
40
+ muse_auto_tag: autoTagTool,
41
+ muse_template: templateTool,
42
+ };
43
+ // Helper functions
44
+ function generateJobId() {
45
+ const timestamp = Date.now().toString(36);
46
+ const random = Math.random().toString(36).substring(2, 8);
47
+ return `batch_${timestamp}_${random}`;
48
+ }
49
+ function generateOpId(index, tool) {
50
+ return `op_${index}_${tool.replace(/^muse_/, '')}`;
51
+ }
52
+ // Sort operations by dependencies using topological sort
53
+ function sortByDependencies(operations) {
54
+ const opMap = new Map();
55
+ const inDegree = new Map();
56
+ const graph = new Map();
57
+ // Initialize
58
+ operations.forEach((op, index) => {
59
+ const id = op.id || generateOpId(index, op.tool);
60
+ opMap.set(id, { ...op, id });
61
+ inDegree.set(id, 0);
62
+ graph.set(id, []);
63
+ });
64
+ // Build graph
65
+ operations.forEach((op, index) => {
66
+ const id = op.id || generateOpId(index, op.tool);
67
+ if (op.dependsOn) {
68
+ op.dependsOn.forEach((depId) => {
69
+ if (opMap.has(depId)) {
70
+ graph.get(depId).push(id);
71
+ inDegree.set(id, (inDegree.get(id) || 0) + 1);
72
+ }
73
+ });
74
+ }
75
+ });
76
+ // Topological sort
77
+ const queue = [];
78
+ const sorted = [];
79
+ inDegree.forEach((degree, id) => {
80
+ if (degree === 0)
81
+ queue.push(id);
82
+ });
83
+ while (queue.length > 0) {
84
+ const current = queue.shift();
85
+ sorted.push(opMap.get(current));
86
+ graph.get(current)?.forEach((neighbor) => {
87
+ const newDegree = (inDegree.get(neighbor) || 0) - 1;
88
+ inDegree.set(neighbor, newDegree);
89
+ if (newDegree === 0)
90
+ queue.push(neighbor);
91
+ });
92
+ }
93
+ // Check for cycles
94
+ if (sorted.length !== operations.length) {
95
+ throw new Error('Circular dependency detected in batch operations');
96
+ }
97
+ return sorted;
98
+ }
99
+ // Execute a single operation
100
+ async function executeOperation(operation, previousResults, timeout) {
101
+ const startedAt = new Date().toISOString();
102
+ const opId = operation.id || generateOpId(0, operation.tool);
103
+ // Resolve any parameter references to previous results
104
+ const resolvedParams = { ...operation.params };
105
+ Object.entries(resolvedParams).forEach(([key, value]) => {
106
+ if (typeof value === 'string' && value.startsWith('$')) {
107
+ const refId = value.substring(1);
108
+ if (previousResults.has(refId)) {
109
+ resolvedParams[key] = previousResults.get(refId);
110
+ }
111
+ }
112
+ });
113
+ try {
114
+ const toolFn = toolRegistry[operation.tool];
115
+ if (!toolFn) {
116
+ throw new Error(`Unknown tool: ${operation.tool}`);
117
+ }
118
+ // Execute with timeout
119
+ const result = await Promise.race([
120
+ toolFn(resolvedParams),
121
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Operation timeout')), timeout)),
122
+ ]);
123
+ const completedAt = new Date().toISOString();
124
+ const duration = new Date(completedAt).getTime() - new Date(startedAt).getTime();
125
+ return {
126
+ id: opId,
127
+ tool: operation.tool,
128
+ status: 'completed',
129
+ result,
130
+ startedAt,
131
+ completedAt,
132
+ duration,
133
+ };
134
+ }
135
+ catch (error) {
136
+ const completedAt = new Date().toISOString();
137
+ const duration = new Date(completedAt).getTime() - new Date(startedAt).getTime();
138
+ return {
139
+ id: opId,
140
+ tool: operation.tool,
141
+ status: 'failed',
142
+ error: error instanceof Error ? error.message : 'Unknown error',
143
+ startedAt,
144
+ completedAt,
145
+ duration,
146
+ };
147
+ }
148
+ }
149
+ // Main tool function
150
+ export async function batchTool(input) {
151
+ const { action, operations, mode = 'sequential', stopOnError = true, timeout = 60000, jobId, limit = 20, status: filterStatus, includeResults = true, includeErrors = true, } = input;
152
+ logger.info('Batch action requested', { action, mode, operationCount: operations?.length });
153
+ try {
154
+ switch (action) {
155
+ case 'execute':
156
+ case 'preview': {
157
+ if (!operations || operations.length === 0) {
158
+ return {
159
+ success: false,
160
+ action,
161
+ error: 'operations are required',
162
+ };
163
+ }
164
+ // Validate operations
165
+ for (const op of operations) {
166
+ if (!toolRegistry[op.tool]) {
167
+ return {
168
+ success: false,
169
+ action,
170
+ error: `Unknown tool: ${op.tool}`,
171
+ };
172
+ }
173
+ }
174
+ // For preview, just return the plan
175
+ if (action === 'preview') {
176
+ const sortedOps = sortByDependencies(operations);
177
+ const previewResults = sortedOps.map((op, index) => ({
178
+ id: op.id || generateOpId(index, op.tool),
179
+ tool: op.tool,
180
+ status: 'pending',
181
+ }));
182
+ return {
183
+ success: true,
184
+ action,
185
+ results: previewResults,
186
+ message: `Preview: ${operations.length} operations will be executed in ${mode} mode`,
187
+ };
188
+ }
189
+ // Execute
190
+ const batchJobId = generateJobId();
191
+ const startedAt = new Date().toISOString();
192
+ activeJobs.set(batchJobId, { cancelled: false });
193
+ const job = {
194
+ id: batchJobId,
195
+ status: 'running',
196
+ operations: [],
197
+ mode,
198
+ startedAt,
199
+ successCount: 0,
200
+ failCount: 0,
201
+ };
202
+ jobHistory.set(batchJobId, job);
203
+ const sortedOps = sortByDependencies(operations);
204
+ const previousResults = new Map();
205
+ if (mode === 'sequential') {
206
+ // Sequential execution
207
+ for (let i = 0; i < sortedOps.length; i++) {
208
+ const op = sortedOps[i];
209
+ // Check for cancellation
210
+ if (activeJobs.get(batchJobId)?.cancelled) {
211
+ job.status = 'cancelled';
212
+ break;
213
+ }
214
+ const result = await executeOperation(op, previousResults, timeout);
215
+ job.operations.push(result);
216
+ if (result.status === 'completed') {
217
+ job.successCount++;
218
+ previousResults.set(result.id, result.result);
219
+ }
220
+ else {
221
+ job.failCount++;
222
+ if (stopOnError) {
223
+ job.status = 'failed';
224
+ break;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ else {
230
+ // Parallel execution (respecting dependencies)
231
+ const completed = new Set();
232
+ const pending = new Map();
233
+ sortedOps.forEach((op, index) => {
234
+ const id = op.id || generateOpId(index, op.tool);
235
+ pending.set(id, { ...op, id });
236
+ });
237
+ while (pending.size > 0 && !activeJobs.get(batchJobId)?.cancelled) {
238
+ // Find operations that can be executed (dependencies satisfied)
239
+ const ready = [];
240
+ pending.forEach((op, id) => {
241
+ const deps = op.dependsOn || [];
242
+ if (deps.every((d) => completed.has(d))) {
243
+ ready.push(op);
244
+ }
245
+ });
246
+ if (ready.length === 0 && pending.size > 0) {
247
+ // Deadlock or cycle
248
+ job.status = 'failed';
249
+ job.operations.push({
250
+ id: 'deadlock',
251
+ tool: 'batch',
252
+ status: 'failed',
253
+ error: 'Deadlock detected: unable to proceed with remaining operations',
254
+ });
255
+ break;
256
+ }
257
+ // Execute ready operations in parallel
258
+ const results = await Promise.all(ready.map((op) => executeOperation(op, previousResults, timeout)));
259
+ for (const result of results) {
260
+ job.operations.push(result);
261
+ completed.add(result.id);
262
+ pending.delete(result.id);
263
+ if (result.status === 'completed') {
264
+ job.successCount++;
265
+ previousResults.set(result.id, result.result);
266
+ }
267
+ else {
268
+ job.failCount++;
269
+ if (stopOnError) {
270
+ job.status = 'failed';
271
+ pending.clear();
272
+ break;
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ // Finalize job
279
+ if (job.status === 'running') {
280
+ job.status = job.failCount > 0 ? 'failed' : 'completed';
281
+ }
282
+ job.completedAt = new Date().toISOString();
283
+ job.totalDuration = new Date(job.completedAt).getTime() - new Date(startedAt).getTime();
284
+ activeJobs.delete(batchJobId);
285
+ jobHistory.set(batchJobId, job);
286
+ // Prepare response
287
+ const responseResults = job.operations.map((op) => ({
288
+ ...op,
289
+ result: includeResults ? op.result : undefined,
290
+ error: includeErrors ? op.error : undefined,
291
+ }));
292
+ return {
293
+ success: job.status === 'completed',
294
+ action,
295
+ job: { ...job, operations: responseResults },
296
+ results: responseResults,
297
+ message: `Batch ${job.status}: ${job.successCount} succeeded, ${job.failCount} failed`,
298
+ };
299
+ }
300
+ case 'status': {
301
+ if (!jobId) {
302
+ return {
303
+ success: false,
304
+ action,
305
+ error: 'jobId is required',
306
+ };
307
+ }
308
+ const job = jobHistory.get(jobId);
309
+ if (!job) {
310
+ return {
311
+ success: false,
312
+ action,
313
+ error: `Job not found: ${jobId}`,
314
+ };
315
+ }
316
+ return {
317
+ success: true,
318
+ action,
319
+ job,
320
+ message: `Job ${job.status}`,
321
+ };
322
+ }
323
+ case 'cancel': {
324
+ if (!jobId) {
325
+ return {
326
+ success: false,
327
+ action,
328
+ error: 'jobId is required',
329
+ };
330
+ }
331
+ const activeJob = activeJobs.get(jobId);
332
+ if (!activeJob) {
333
+ return {
334
+ success: false,
335
+ action,
336
+ error: `Job not found or already completed: ${jobId}`,
337
+ };
338
+ }
339
+ activeJob.cancelled = true;
340
+ return {
341
+ success: true,
342
+ action,
343
+ message: `Job ${jobId} cancellation requested`,
344
+ };
345
+ }
346
+ case 'history': {
347
+ let jobs = Array.from(jobHistory.values());
348
+ // Filter by status if specified
349
+ if (filterStatus) {
350
+ jobs = jobs.filter((j) => j.status === filterStatus);
351
+ }
352
+ // Sort by start time (newest first)
353
+ jobs.sort((a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime());
354
+ // Paginate
355
+ const total = jobs.length;
356
+ const paginated = jobs.slice(0, limit);
357
+ return {
358
+ success: true,
359
+ action,
360
+ jobs: paginated,
361
+ total,
362
+ message: `Found ${total} batch jobs`,
363
+ };
364
+ }
365
+ default:
366
+ return {
367
+ success: false,
368
+ action,
369
+ error: `Unknown action: ${action}`,
370
+ };
371
+ }
372
+ }
373
+ catch (error) {
374
+ logger.error('Batch operation failed', error);
375
+ return {
376
+ success: false,
377
+ action,
378
+ error: error instanceof Error ? error.message : 'Unknown error',
379
+ };
380
+ }
381
+ }
382
+ // Schema for MCP registration
383
+ export const batchSchema = {
384
+ name: 'muse_batch',
385
+ description: 'Executes multiple tool operations in batch. Actions: execute (run batch), preview (plan without executing), status (check job status), cancel (stop running job), history (list past jobs). Supports sequential and parallel execution with dependency management.',
386
+ inputSchema: {
387
+ type: 'object',
388
+ properties: {
389
+ action: {
390
+ type: 'string',
391
+ enum: ['execute', 'preview', 'status', 'cancel', 'history'],
392
+ description: 'Action to perform',
393
+ },
394
+ operations: {
395
+ type: 'array',
396
+ items: {
397
+ type: 'object',
398
+ properties: {
399
+ tool: {
400
+ type: 'string',
401
+ description: 'Tool name to execute (e.g., muse_analyze_code)',
402
+ },
403
+ params: {
404
+ type: 'object',
405
+ description: 'Parameters to pass to the tool',
406
+ },
407
+ id: {
408
+ type: 'string',
409
+ description: 'Optional operation ID for dependency reference',
410
+ },
411
+ dependsOn: {
412
+ type: 'array',
413
+ items: { type: 'string' },
414
+ description: 'IDs of operations this depends on',
415
+ },
416
+ },
417
+ required: ['tool', 'params'],
418
+ },
419
+ description: 'Array of operations to execute',
420
+ },
421
+ mode: {
422
+ type: 'string',
423
+ enum: ['sequential', 'parallel'],
424
+ description: 'Execution mode (default: sequential)',
425
+ },
426
+ stopOnError: {
427
+ type: 'boolean',
428
+ description: 'Stop batch on first error (default: true)',
429
+ },
430
+ timeout: {
431
+ type: 'number',
432
+ description: 'Timeout per operation in ms (default: 60000)',
433
+ },
434
+ jobId: {
435
+ type: 'string',
436
+ description: 'Job ID for status/cancel actions',
437
+ },
438
+ limit: {
439
+ type: 'number',
440
+ description: 'Limit for history action (default: 20)',
441
+ },
442
+ status: {
443
+ type: 'string',
444
+ enum: ['pending', 'running', 'completed', 'failed', 'cancelled'],
445
+ description: 'Filter history by status',
446
+ },
447
+ includeResults: {
448
+ type: 'boolean',
449
+ description: 'Include operation results in response (default: true)',
450
+ },
451
+ includeErrors: {
452
+ type: 'boolean',
453
+ description: 'Include error details in response (default: true)',
454
+ },
455
+ },
456
+ required: ['action'],
457
+ },
458
+ };
459
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/tools/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 세션 Export 도구
3
+ * 세션 데이터를 다양한 형식으로 내보내기
4
+ * v2.7: Session Export
5
+ */
6
+ export type ExportFormat = 'markdown' | 'json' | 'html';
7
+ export interface ExportSessionInput {
8
+ sessionIds?: string[];
9
+ format: ExportFormat;
10
+ outputPath?: string;
11
+ includeMetadata?: boolean;
12
+ includeCodeBlocks?: boolean;
13
+ includeDesignDecisions?: boolean;
14
+ template?: 'default' | 'minimal' | 'detailed' | 'report';
15
+ title?: string;
16
+ bundleMultiple?: boolean;
17
+ }
18
+ export interface ExportSessionOutput {
19
+ success: boolean;
20
+ format: ExportFormat;
21
+ content?: string;
22
+ filePath?: string;
23
+ sessionCount: number;
24
+ message?: string;
25
+ error?: string;
26
+ }
27
+ export declare function exportSessionTool(input: ExportSessionInput): Promise<ExportSessionOutput>;
28
+ export declare const exportSessionSchema: {
29
+ name: string;
30
+ description: string;
31
+ inputSchema: {
32
+ type: string;
33
+ properties: {
34
+ sessionIds: {
35
+ type: string;
36
+ items: {
37
+ type: string;
38
+ };
39
+ description: string;
40
+ };
41
+ format: {
42
+ type: string;
43
+ enum: string[];
44
+ description: string;
45
+ };
46
+ outputPath: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ includeMetadata: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ includeCodeBlocks: {
55
+ type: string;
56
+ description: string;
57
+ };
58
+ includeDesignDecisions: {
59
+ type: string;
60
+ description: string;
61
+ };
62
+ template: {
63
+ type: string;
64
+ enum: string[];
65
+ description: string;
66
+ };
67
+ title: {
68
+ type: string;
69
+ description: string;
70
+ };
71
+ bundleMultiple: {
72
+ type: string;
73
+ description: string;
74
+ };
75
+ };
76
+ required: string[];
77
+ };
78
+ };
79
+ //# sourceMappingURL=exportSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportSession.d.ts","sourceRoot":"","sources":["../../src/tools/exportSession.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8UD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2G/F;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD/B,CAAC"}