@millstone/synapse-cli 0.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.
- package/README.md +135 -0
- package/bin/synapse.js +3 -0
- package/dist/commands/eject.d.ts +19 -0
- package/dist/commands/eject.d.ts.map +1 -0
- package/dist/commands/eject.js +146 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/fetch-reference.d.ts +19 -0
- package/dist/commands/fetch-reference.d.ts.map +1 -0
- package/dist/commands/fetch-reference.js +93 -0
- package/dist/commands/fetch-reference.js.map +1 -0
- package/dist/commands/format.d.ts +26 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +126 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/generate-pdf.d.ts +19 -0
- package/dist/commands/generate-pdf.d.ts.map +1 -0
- package/dist/commands/generate-pdf.js +140 -0
- package/dist/commands/generate-pdf.js.map +1 -0
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +58 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +234 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +29 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +297 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +244 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/update.d.ts +25 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +253 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +37 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +526 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +277 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bodyRules.d.ts +70 -0
- package/dist/lib/bodyRules.d.ts.map +1 -0
- package/dist/lib/bodyRules.js +711 -0
- package/dist/lib/bodyRules.js.map +1 -0
- package/dist/lib/config.d.ts +49 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +91 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/git.d.ts +99 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +266 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/graph.d.ts +6 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +6 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/homepage.d.ts +10 -0
- package/dist/lib/homepage.d.ts.map +1 -0
- package/dist/lib/homepage.js +172 -0
- package/dist/lib/homepage.js.map +1 -0
- package/dist/lib/markdown.d.ts +107 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +318 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/mode-detection.d.ts +10 -0
- package/dist/lib/mode-detection.d.ts.map +1 -0
- package/dist/lib/mode-detection.js +29 -0
- package/dist/lib/mode-detection.js.map +1 -0
- package/dist/lib/naming.d.ts +47 -0
- package/dist/lib/naming.d.ts.map +1 -0
- package/dist/lib/naming.js +403 -0
- package/dist/lib/naming.js.map +1 -0
- package/dist/lib/schemas.d.ts +38 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +248 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/templateLint.d.ts +21 -0
- package/dist/lib/templateLint.d.ts.map +1 -0
- package/dist/lib/templateLint.js +243 -0
- package/dist/lib/templateLint.js.map +1 -0
- package/dist/lib/templates.d.ts +53 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +128 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/tracking.d.ts +52 -0
- package/dist/lib/tracking.d.ts.map +1 -0
- package/dist/lib/tracking.js +135 -0
- package/dist/lib/tracking.js.map +1 -0
- package/dist/lib/types.generated.d.ts +54 -0
- package/dist/lib/types.generated.d.ts.map +1 -0
- package/dist/lib/types.generated.js +144 -0
- package/dist/lib/types.generated.js.map +1 -0
- package/dist/lib/validate-plugins.d.ts +22 -0
- package/dist/lib/validate-plugins.d.ts.map +1 -0
- package/dist/lib/validate-plugins.js +851 -0
- package/dist/lib/validate-plugins.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { checkGitRepo, hasRemote, fetchRemote, getCurrentBranch, getCommitsBetween, isMergeInProgress, getMergeConflicts, createBackupBranch, merge, abortMerge, acceptMergeStrategy, getCurrentVersion, isWorkingDirectoryClean, } from '../lib/git.js';
|
|
2
|
+
import { loadTracking, isEjected, updateSyncInfo, recordConflict, } from '../lib/tracking.js';
|
|
3
|
+
import { detectInstallMode } from '../lib/mode-detection.js';
|
|
4
|
+
let chalk;
|
|
5
|
+
async function getChalk() {
|
|
6
|
+
if (!chalk) {
|
|
7
|
+
try {
|
|
8
|
+
chalk = (await import('chalk')).default;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
chalk = {
|
|
12
|
+
green: (str) => str,
|
|
13
|
+
red: (str) => str,
|
|
14
|
+
yellow: (str) => str,
|
|
15
|
+
blue: (str) => str,
|
|
16
|
+
gray: (str) => str,
|
|
17
|
+
bold: (str) => str,
|
|
18
|
+
cyan: (str) => str,
|
|
19
|
+
magenta: (str) => str,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return chalk;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Continue a merge after manual conflict resolution
|
|
27
|
+
*/
|
|
28
|
+
async function continueUpdate(cwd) {
|
|
29
|
+
const c = await getChalk();
|
|
30
|
+
const dir = cwd ?? process.cwd();
|
|
31
|
+
console.log(c.bold('\nš Continuing merge...\n'));
|
|
32
|
+
// Check if there's a merge in progress
|
|
33
|
+
if (!isMergeInProgress(dir)) {
|
|
34
|
+
throw new Error('No merge in progress. Nothing to continue.');
|
|
35
|
+
}
|
|
36
|
+
// Check if there are still conflicts
|
|
37
|
+
const conflicts = getMergeConflicts(dir);
|
|
38
|
+
if (conflicts.length > 0) {
|
|
39
|
+
console.log(c.red('ā Conflicts still exist:\n'));
|
|
40
|
+
conflicts.forEach(conflict => {
|
|
41
|
+
console.log(c.yellow(` ${conflict.status} ${conflict.path}`));
|
|
42
|
+
});
|
|
43
|
+
console.log(c.gray('\nResolve conflicts and stage files with "git add", then run "synapse update --continue"'));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Commit the merge
|
|
47
|
+
const { execSync } = await import('child_process');
|
|
48
|
+
try {
|
|
49
|
+
execSync('git commit --no-edit', { cwd: dir, stdio: 'inherit' });
|
|
50
|
+
console.log(c.green('\nā
Merge completed successfully!'));
|
|
51
|
+
// Update tracking
|
|
52
|
+
const version = getCurrentVersion(dir);
|
|
53
|
+
await updateSyncInfo(version, dir);
|
|
54
|
+
await recordConflict([], 'manual', dir);
|
|
55
|
+
console.log(c.gray(`\nUpdated to version: ${version}`));
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new Error('Failed to commit merge. Please commit manually.');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Abort an in-progress merge
|
|
63
|
+
*/
|
|
64
|
+
async function abortUpdate(cwd) {
|
|
65
|
+
const c = await getChalk();
|
|
66
|
+
const dir = cwd ?? process.cwd();
|
|
67
|
+
console.log(c.bold('\nš Aborting merge...\n'));
|
|
68
|
+
if (!isMergeInProgress(dir)) {
|
|
69
|
+
throw new Error('No merge in progress. Nothing to abort.');
|
|
70
|
+
}
|
|
71
|
+
abortMerge(dir);
|
|
72
|
+
await recordConflict(getMergeConflicts(dir).map(c => c.path), 'aborted', dir);
|
|
73
|
+
console.log(c.yellow('ā ļø Merge aborted. Working directory restored to pre-merge state.'));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Accept all changes from one side during merge conflict
|
|
77
|
+
*/
|
|
78
|
+
async function acceptStrategy(strategy, cwd) {
|
|
79
|
+
const c = await getChalk();
|
|
80
|
+
const dir = cwd ?? process.cwd();
|
|
81
|
+
const label = strategy === 'theirs' ? 'upstream' : 'local';
|
|
82
|
+
console.log(c.bold(`\nš Accepting all ${label} changes...\n`));
|
|
83
|
+
if (!isMergeInProgress(dir)) {
|
|
84
|
+
throw new Error('No merge in progress.');
|
|
85
|
+
}
|
|
86
|
+
const conflicts = getMergeConflicts(dir);
|
|
87
|
+
if (conflicts.length === 0) {
|
|
88
|
+
throw new Error('No conflicts to resolve.');
|
|
89
|
+
}
|
|
90
|
+
console.log(c.gray(`Resolving ${conflicts.length} conflict(s):\n`));
|
|
91
|
+
conflicts.forEach(conflict => {
|
|
92
|
+
console.log(c.gray(` ${conflict.path}`));
|
|
93
|
+
});
|
|
94
|
+
acceptMergeStrategy(strategy, undefined, dir);
|
|
95
|
+
console.log(c.green(`\nā
Accepted all ${label} changes`));
|
|
96
|
+
console.log(c.gray('Run "synapse update --continue" to complete the merge'));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Fetch and merge upstream changes
|
|
100
|
+
*/
|
|
101
|
+
export async function update(options = {}) {
|
|
102
|
+
const c = await getChalk();
|
|
103
|
+
const rootDir = options.cwd ?? process.cwd();
|
|
104
|
+
// Handle special modes
|
|
105
|
+
if (options.abort) {
|
|
106
|
+
await abortUpdate(rootDir);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (options.acceptUpstream) {
|
|
110
|
+
await acceptStrategy('theirs', rootDir);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (options.acceptOurs) {
|
|
114
|
+
await acceptStrategy('ours', rootDir);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (options.continue) {
|
|
118
|
+
await continueUpdate(rootDir);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Normal update flow
|
|
122
|
+
console.log(c.bold('\nš Synapse Update\n'));
|
|
123
|
+
// Show deprecation warning in npm mode
|
|
124
|
+
const mode = detectInstallMode(rootDir);
|
|
125
|
+
if (mode === 'npm') {
|
|
126
|
+
console.log(c.yellow('DEPRECATED: "synapse update" is for fork-based installations.'));
|
|
127
|
+
console.log(c.yellow('Use `npm update @synapse/cli @synapse/schemas` instead for npm-based projects.\n'));
|
|
128
|
+
}
|
|
129
|
+
// Check git repository
|
|
130
|
+
if (!checkGitRepo(rootDir)) {
|
|
131
|
+
throw new Error('Not a git repository');
|
|
132
|
+
}
|
|
133
|
+
// Load tracking
|
|
134
|
+
const tracking = await loadTracking(rootDir);
|
|
135
|
+
// Check if ejected
|
|
136
|
+
if (await isEjected(rootDir)) {
|
|
137
|
+
throw new Error('Repository is ejected from upstream updates.\n' +
|
|
138
|
+
`Ejected on: ${tracking.ejectedAt}\n` +
|
|
139
|
+
`Ejected version: ${tracking.ejectedVersion}\n\n` +
|
|
140
|
+
'Cannot update an ejected repository.');
|
|
141
|
+
}
|
|
142
|
+
// Check for clean working directory
|
|
143
|
+
if (!isWorkingDirectoryClean(rootDir)) {
|
|
144
|
+
throw new Error('Working directory has uncommitted changes.\n' +
|
|
145
|
+
'Commit or stash your changes before updating.');
|
|
146
|
+
}
|
|
147
|
+
// Determine remote name and branch
|
|
148
|
+
const remoteName = options.remoteName || 'upstream';
|
|
149
|
+
const remoteBranch = options.remoteBranch || 'main';
|
|
150
|
+
const remoteRef = `${remoteName}/${remoteBranch}`;
|
|
151
|
+
// Check remote exists
|
|
152
|
+
if (!hasRemote(remoteName, rootDir)) {
|
|
153
|
+
throw new Error(`Remote "${remoteName}" not found.\n` +
|
|
154
|
+
`Add it with: git remote add ${remoteName} ${tracking.remote}`);
|
|
155
|
+
}
|
|
156
|
+
// Fetch from upstream
|
|
157
|
+
console.log(c.blue(`š” Fetching from ${remoteName}...`));
|
|
158
|
+
try {
|
|
159
|
+
fetchRemote(remoteName, rootDir);
|
|
160
|
+
console.log(c.green(` ā Fetched from ${remoteName}`));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw new Error(`Failed to fetch from ${remoteName}: ${error}`);
|
|
164
|
+
}
|
|
165
|
+
// Get current branch
|
|
166
|
+
const currentBranch = getCurrentBranch(rootDir);
|
|
167
|
+
console.log(c.gray(`\nCurrent branch: ${currentBranch}`));
|
|
168
|
+
// Get commits between current and upstream
|
|
169
|
+
console.log(c.blue('\nš Checking for updates...'));
|
|
170
|
+
const commits = getCommitsBetween(currentBranch, remoteRef, rootDir);
|
|
171
|
+
if (commits.length === 0) {
|
|
172
|
+
console.log(c.green('\nā
Already up to date!'));
|
|
173
|
+
console.log(c.gray(`Version: ${tracking.version}`));
|
|
174
|
+
console.log(c.gray(`Last sync: ${new Date(tracking.lastSync).toLocaleString()}`));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Show commits summary
|
|
178
|
+
console.log(c.cyan(`\nš ${commits.length} new commit(s) from upstream:\n`));
|
|
179
|
+
commits.slice(0, 10).forEach(commit => {
|
|
180
|
+
const shortHash = commit.hash.substring(0, 7);
|
|
181
|
+
const date = new Date(commit.date).toLocaleDateString();
|
|
182
|
+
console.log(c.gray(` ${shortHash} ${date} - ${commit.message}`));
|
|
183
|
+
});
|
|
184
|
+
if (commits.length > 10) {
|
|
185
|
+
console.log(c.gray(` ... and ${commits.length - 10} more`));
|
|
186
|
+
}
|
|
187
|
+
// Create backup branch
|
|
188
|
+
const backupBranch = `backup-${currentBranch}-${Date.now()}`;
|
|
189
|
+
console.log(c.blue(`\nš¾ Creating backup branch: ${backupBranch}`));
|
|
190
|
+
createBackupBranch(backupBranch, rootDir);
|
|
191
|
+
console.log(c.green(` ā Created backup branch`));
|
|
192
|
+
// Attempt merge
|
|
193
|
+
console.log(c.blue(`\nš Merging ${remoteRef} into ${currentBranch}...`));
|
|
194
|
+
const mergeResult = merge(remoteRef, { noFf: true, cwd: rootDir });
|
|
195
|
+
if (mergeResult.success) {
|
|
196
|
+
// Clean merge
|
|
197
|
+
console.log(c.green('\nā
Merge completed successfully!'));
|
|
198
|
+
// Update tracking
|
|
199
|
+
const version = getCurrentVersion(rootDir);
|
|
200
|
+
await updateSyncInfo(version, rootDir);
|
|
201
|
+
console.log(c.gray(`\nUpdated to version: ${version}`));
|
|
202
|
+
console.log(c.gray(`Backup branch: ${backupBranch}`));
|
|
203
|
+
console.log(c.gray(`\nYou can delete the backup with: git branch -D ${backupBranch}`));
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Conflicts detected
|
|
207
|
+
console.log(c.yellow('\nā ļø Merge conflicts detected!\n'));
|
|
208
|
+
console.log(c.red(`Conflicts in ${mergeResult.conflicts.length} file(s):\n`));
|
|
209
|
+
mergeResult.conflicts.forEach(conflict => {
|
|
210
|
+
console.log(c.yellow(` ${conflict.status} ${conflict.path}`));
|
|
211
|
+
});
|
|
212
|
+
// Record conflict
|
|
213
|
+
await recordConflict(mergeResult.conflicts.map(c => c.path), 'manual', rootDir);
|
|
214
|
+
console.log(c.bold('\nš Resolution options:\n'));
|
|
215
|
+
console.log(c.gray('1. Manual resolution:'));
|
|
216
|
+
console.log(c.gray(' - Edit conflicted files'));
|
|
217
|
+
console.log(c.gray(' - Stage resolved files: git add <file>'));
|
|
218
|
+
console.log(c.gray(' - Continue: synapse update --continue'));
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(c.gray('2. Accept all upstream changes:'));
|
|
221
|
+
console.log(c.gray(' synapse update --accept-upstream'));
|
|
222
|
+
console.log();
|
|
223
|
+
console.log(c.gray('3. Keep all local changes:'));
|
|
224
|
+
console.log(c.gray(' synapse update --accept-ours'));
|
|
225
|
+
console.log();
|
|
226
|
+
console.log(c.gray('4. Abort merge:'));
|
|
227
|
+
console.log(c.gray(' synapse update --abort'));
|
|
228
|
+
console.log();
|
|
229
|
+
console.log(c.gray(`Backup branch: ${backupBranch}`));
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* CLI command handler for update
|
|
235
|
+
*/
|
|
236
|
+
export async function updateCommand(args) {
|
|
237
|
+
const c = await getChalk();
|
|
238
|
+
try {
|
|
239
|
+
await update({
|
|
240
|
+
continue: args.continue,
|
|
241
|
+
acceptUpstream: args.acceptUpstream,
|
|
242
|
+
acceptOurs: args.acceptOurs,
|
|
243
|
+
abort: args.abort,
|
|
244
|
+
remoteName: args.remote,
|
|
245
|
+
remoteBranch: args.branch,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error(c.red('\nError:'), error instanceof Error ? error.message : error);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface ValidationIssue {
|
|
2
|
+
type: "error" | "warning";
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
file?: string;
|
|
6
|
+
line?: number;
|
|
7
|
+
column?: number;
|
|
8
|
+
field?: string;
|
|
9
|
+
sectionId?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ValidationResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
issues: ValidationIssue[];
|
|
14
|
+
filesValidated: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Main validation function
|
|
18
|
+
*/
|
|
19
|
+
export declare function validate(options: {
|
|
20
|
+
contentDir?: string;
|
|
21
|
+
schemaDir?: string;
|
|
22
|
+
pattern?: string;
|
|
23
|
+
strict?: boolean;
|
|
24
|
+
}): Promise<ValidationResult>;
|
|
25
|
+
/**
|
|
26
|
+
* CLI handler for validate command
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateCommand(args: {
|
|
29
|
+
dir?: string;
|
|
30
|
+
schema?: string;
|
|
31
|
+
pattern?: string;
|
|
32
|
+
strict?: boolean;
|
|
33
|
+
quiet?: boolean;
|
|
34
|
+
format?: string;
|
|
35
|
+
examples?: boolean;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AA2RD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4L5B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwHhB"}
|