mycontext-cli 2.0.27 → 2.0.28

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 (129) hide show
  1. package/README.md +35 -369
  2. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  3. package/dist/agents/implementations/CodeGenSubAgent.js +67 -14
  4. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
  5. package/dist/agents/implementations/DesignPipelineAgent.d.ts +80 -0
  6. package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -0
  7. package/dist/agents/implementations/DesignPipelineAgent.js +1406 -0
  8. package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -0
  9. package/dist/agents/implementations/FeatureAssemblyAgent.d.ts +67 -0
  10. package/dist/agents/implementations/FeatureAssemblyAgent.d.ts.map +1 -0
  11. package/dist/agents/implementations/FeatureAssemblyAgent.js +564 -0
  12. package/dist/agents/implementations/FeatureAssemblyAgent.js.map +1 -0
  13. package/dist/agents/implementations/PromptConstructorAgent.d.ts +10 -0
  14. package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
  15. package/dist/agents/implementations/PromptConstructorAgent.js +172 -12
  16. package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
  17. package/dist/agents/implementations/RoleBasedGenerator.d.ts +52 -0
  18. package/dist/agents/implementations/RoleBasedGenerator.d.ts.map +1 -0
  19. package/dist/agents/implementations/RoleBasedGenerator.js +370 -0
  20. package/dist/agents/implementations/RoleBasedGenerator.js.map +1 -0
  21. package/dist/cli.js +65 -0
  22. package/dist/cli.js.map +1 -1
  23. package/dist/clients/ClaudeSDKClient.d.ts +48 -0
  24. package/dist/clients/ClaudeSDKClient.d.ts.map +1 -0
  25. package/dist/clients/ClaudeSDKClient.js +158 -0
  26. package/dist/clients/ClaudeSDKClient.js.map +1 -0
  27. package/dist/clients/MyContextAIClient.d.ts +73 -0
  28. package/dist/clients/MyContextAIClient.d.ts.map +1 -0
  29. package/dist/clients/MyContextAIClient.js +280 -0
  30. package/dist/clients/MyContextAIClient.js.map +1 -0
  31. package/dist/clients/ProviderChain.d.ts +87 -0
  32. package/dist/clients/ProviderChain.d.ts.map +1 -0
  33. package/dist/clients/ProviderChain.js +246 -0
  34. package/dist/clients/ProviderChain.js.map +1 -0
  35. package/dist/clients/XAIClient.d.ts +48 -0
  36. package/dist/clients/XAIClient.d.ts.map +1 -0
  37. package/dist/clients/XAIClient.js +152 -0
  38. package/dist/clients/XAIClient.js.map +1 -0
  39. package/dist/commands/assemble-features.d.ts +40 -0
  40. package/dist/commands/assemble-features.d.ts.map +1 -0
  41. package/dist/commands/assemble-features.js +383 -0
  42. package/dist/commands/assemble-features.js.map +1 -0
  43. package/dist/commands/clone-starter.d.ts +32 -0
  44. package/dist/commands/clone-starter.d.ts.map +1 -0
  45. package/dist/commands/clone-starter.js +218 -0
  46. package/dist/commands/clone-starter.js.map +1 -0
  47. package/dist/commands/design-analyze.d.ts +46 -0
  48. package/dist/commands/design-analyze.d.ts.map +1 -0
  49. package/dist/commands/design-analyze.js +232 -0
  50. package/dist/commands/design-analyze.js.map +1 -0
  51. package/dist/commands/generate-components.d.ts +1 -0
  52. package/dist/commands/generate-components.d.ts.map +1 -1
  53. package/dist/commands/generate-components.js +42 -9
  54. package/dist/commands/generate-components.js.map +1 -1
  55. package/dist/commands/generate.d.ts.map +1 -1
  56. package/dist/commands/generate.js +34 -1
  57. package/dist/commands/generate.js.map +1 -1
  58. package/dist/commands/setup-complete.d.ts.map +1 -1
  59. package/dist/commands/setup-complete.js +38 -2
  60. package/dist/commands/setup-complete.js.map +1 -1
  61. package/dist/commands/workflow.d.ts.map +1 -1
  62. package/dist/commands/workflow.js +86 -7
  63. package/dist/commands/workflow.js.map +1 -1
  64. package/dist/config/intent-dictionary.json +3700 -0
  65. package/dist/package.json +3 -1
  66. package/dist/services/IntentEnricher.d.ts +61 -0
  67. package/dist/services/IntentEnricher.d.ts.map +1 -0
  68. package/dist/services/IntentEnricher.js +318 -0
  69. package/dist/services/IntentEnricher.js.map +1 -0
  70. package/dist/services/IntentValidator.d.ts +114 -0
  71. package/dist/services/IntentValidator.d.ts.map +1 -0
  72. package/dist/services/IntentValidator.js +680 -0
  73. package/dist/services/IntentValidator.js.map +1 -0
  74. package/dist/types/design-pipeline.d.ts +300 -0
  75. package/dist/types/design-pipeline.d.ts.map +1 -0
  76. package/dist/types/design-pipeline.js +9 -0
  77. package/dist/types/design-pipeline.js.map +1 -0
  78. package/dist/types/feature-bundle.d.ts +239 -0
  79. package/dist/types/feature-bundle.d.ts.map +1 -0
  80. package/dist/types/feature-bundle.js +9 -0
  81. package/dist/types/feature-bundle.js.map +1 -0
  82. package/dist/types/index.d.ts +2 -0
  83. package/dist/types/index.d.ts.map +1 -1
  84. package/dist/types/index.js +2 -0
  85. package/dist/types/index.js.map +1 -1
  86. package/dist/types/intent-dictionary.d.ts +525 -0
  87. package/dist/types/intent-dictionary.d.ts.map +1 -0
  88. package/dist/types/intent-dictionary.js +11 -0
  89. package/dist/types/intent-dictionary.js.map +1 -0
  90. package/dist/types/role-permissions.d.ts +167 -0
  91. package/dist/types/role-permissions.d.ts.map +1 -0
  92. package/dist/types/role-permissions.js +9 -0
  93. package/dist/types/role-permissions.js.map +1 -0
  94. package/dist/utils/contextEnricher.d.ts +41 -0
  95. package/dist/utils/contextEnricher.d.ts.map +1 -0
  96. package/dist/utils/contextEnricher.js +327 -0
  97. package/dist/utils/contextEnricher.js.map +1 -0
  98. package/dist/utils/designFallbacks.d.ts +48 -0
  99. package/dist/utils/designFallbacks.d.ts.map +1 -0
  100. package/dist/utils/designFallbacks.js +885 -0
  101. package/dist/utils/designFallbacks.js.map +1 -0
  102. package/dist/utils/designManifestManager.d.ts +89 -0
  103. package/dist/utils/designManifestManager.d.ts.map +1 -0
  104. package/dist/utils/designManifestManager.js +533 -0
  105. package/dist/utils/designManifestManager.js.map +1 -0
  106. package/dist/utils/designPipelineStateManager.d.ts +63 -0
  107. package/dist/utils/designPipelineStateManager.d.ts.map +1 -0
  108. package/dist/utils/designPipelineStateManager.js +174 -0
  109. package/dist/utils/designPipelineStateManager.js.map +1 -0
  110. package/dist/utils/envExampleGenerator.d.ts.map +1 -1
  111. package/dist/utils/envExampleGenerator.js +35 -171
  112. package/dist/utils/envExampleGenerator.js.map +1 -1
  113. package/dist/utils/featureBundleManager.d.ts +90 -0
  114. package/dist/utils/featureBundleManager.d.ts.map +1 -0
  115. package/dist/utils/featureBundleManager.js +340 -0
  116. package/dist/utils/featureBundleManager.js.map +1 -0
  117. package/dist/utils/githubCloner.d.ts +93 -0
  118. package/dist/utils/githubCloner.d.ts.map +1 -0
  119. package/dist/utils/githubCloner.js +305 -0
  120. package/dist/utils/githubCloner.js.map +1 -0
  121. package/dist/utils/rolePermissionMapper.d.ts +89 -0
  122. package/dist/utils/rolePermissionMapper.d.ts.map +1 -0
  123. package/dist/utils/rolePermissionMapper.js +337 -0
  124. package/dist/utils/rolePermissionMapper.js.map +1 -0
  125. package/dist/utils/unifiedDesignContextLoader.d.ts +76 -0
  126. package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -0
  127. package/dist/utils/unifiedDesignContextLoader.js +344 -0
  128. package/dist/utils/unifiedDesignContextLoader.js.map +1 -0
  129. package/package.json +3 -1
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ /**
3
+ * GitHub Cloner Utility
4
+ *
5
+ * Handles cloning GitHub repositories for admin starter templates
6
+ * and other project templates.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.GitHubCloner = void 0;
46
+ const child_process_1 = require("child_process");
47
+ const util_1 = require("util");
48
+ const fs = __importStar(require("fs/promises"));
49
+ const path = __importStar(require("path"));
50
+ const chalk_1 = __importDefault(require("chalk"));
51
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
52
+ class GitHubCloner {
53
+ /**
54
+ * Clone a GitHub repository
55
+ */
56
+ static async clone(options) {
57
+ try {
58
+ const { url, outputPath, branch = "main", depth = 1, removeGit = true, verbose = false, } = options;
59
+ if (verbose) {
60
+ console.log(chalk_1.default.gray(` 📥 Cloning ${url} to ${outputPath}`));
61
+ }
62
+ // Ensure output directory exists
63
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
64
+ // Clone repository
65
+ const cloneCommand = `git clone --depth ${depth} --branch ${branch} ${url} ${outputPath}`;
66
+ await execAsync(cloneCommand);
67
+ // Get commit hash
68
+ const commitHash = await this.getCommitHash(outputPath);
69
+ // Remove .git directory if requested
70
+ if (removeGit) {
71
+ await fs.rm(path.join(outputPath, ".git"), {
72
+ recursive: true,
73
+ force: true,
74
+ });
75
+ }
76
+ // Extract repository name from URL
77
+ const repository = this.extractRepositoryName(url);
78
+ const result = {
79
+ success: true,
80
+ outputPath,
81
+ metadata: {
82
+ repository,
83
+ branch,
84
+ commitHash,
85
+ clonedAt: new Date().toISOString(),
86
+ },
87
+ };
88
+ if (verbose) {
89
+ console.log(chalk_1.default.green(` ✓ Repository cloned successfully`));
90
+ console.log(chalk_1.default.gray(` Repository: ${repository}`));
91
+ console.log(chalk_1.default.gray(` Branch: ${branch}`));
92
+ console.log(chalk_1.default.gray(` Commit: ${commitHash.substring(0, 8)}`));
93
+ }
94
+ return result;
95
+ }
96
+ catch (error) {
97
+ return {
98
+ success: false,
99
+ outputPath: options.outputPath,
100
+ error: error instanceof Error ? error.message : String(error),
101
+ };
102
+ }
103
+ }
104
+ /**
105
+ * Clone admin starter repository
106
+ */
107
+ static async cloneAdminStarter(outputPath, options = {}) {
108
+ const defaultOptions = {
109
+ url: "https://github.com/mycontext/admin-starter",
110
+ outputPath,
111
+ branch: "main",
112
+ depth: 1,
113
+ removeGit: true,
114
+ verbose: true,
115
+ };
116
+ return this.clone({ ...defaultOptions, ...options });
117
+ }
118
+ /**
119
+ * Clone a specific template repository
120
+ */
121
+ static async cloneTemplate(templateName, outputPath, options = {}) {
122
+ const templateUrl = `https://github.com/mycontext/${templateName}-template`;
123
+ const defaultOptions = {
124
+ url: templateUrl,
125
+ outputPath,
126
+ branch: "main",
127
+ depth: 1,
128
+ removeGit: true,
129
+ verbose: true,
130
+ };
131
+ return this.clone({ ...defaultOptions, ...options });
132
+ }
133
+ /**
134
+ * Check if a repository exists and is accessible
135
+ */
136
+ static async checkRepository(url) {
137
+ try {
138
+ const command = `git ls-remote --heads ${url}`;
139
+ await execAsync(command);
140
+ return { exists: true };
141
+ }
142
+ catch (error) {
143
+ return {
144
+ exists: false,
145
+ error: error instanceof Error ? error.message : String(error),
146
+ };
147
+ }
148
+ }
149
+ /**
150
+ * Get available branches for a repository
151
+ */
152
+ static async getBranches(url) {
153
+ try {
154
+ const command = `git ls-remote --heads ${url}`;
155
+ const { stdout } = await execAsync(command);
156
+ const branches = stdout
157
+ .split("\n")
158
+ .filter((line) => line.trim())
159
+ .map((line) => line.split("refs/heads/")[1])
160
+ .filter((branch) => Boolean(branch));
161
+ return { branches };
162
+ }
163
+ catch (error) {
164
+ return {
165
+ branches: [],
166
+ error: error instanceof Error ? error.message : String(error),
167
+ };
168
+ }
169
+ }
170
+ /**
171
+ * Get the latest commit hash for a repository
172
+ */
173
+ static async getLatestCommit(url, branch = "main") {
174
+ try {
175
+ const command = `git ls-remote ${url} refs/heads/${branch}`;
176
+ const { stdout } = await execAsync(command);
177
+ const commitHash = stdout.split("\t")[0] || "";
178
+ return { commitHash };
179
+ }
180
+ catch (error) {
181
+ return {
182
+ commitHash: "",
183
+ error: error instanceof Error ? error.message : String(error),
184
+ };
185
+ }
186
+ }
187
+ /**
188
+ * Get commit hash for a cloned repository
189
+ */
190
+ static async getCommitHash(repoPath) {
191
+ try {
192
+ const command = "git rev-parse HEAD";
193
+ const { stdout } = await execAsync(command, { cwd: repoPath });
194
+ return stdout.trim();
195
+ }
196
+ catch {
197
+ return "unknown";
198
+ }
199
+ }
200
+ /**
201
+ * Extract repository name from URL
202
+ */
203
+ static extractRepositoryName(url) {
204
+ const match = url.match(/github\.com\/([^\/]+)\/([^\/]+)(?:\.git)?$/);
205
+ if (match) {
206
+ return `${match[1]}/${match[2]}`;
207
+ }
208
+ return url;
209
+ }
210
+ /**
211
+ * Clone with retry logic
212
+ */
213
+ static async cloneWithRetry(options, maxRetries = 3) {
214
+ let lastError;
215
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
216
+ if (options.verbose && attempt > 1) {
217
+ console.log(chalk_1.default.yellow(` 🔄 Retry attempt ${attempt}/${maxRetries}`));
218
+ }
219
+ const result = await this.clone(options);
220
+ if (result.success) {
221
+ return result;
222
+ }
223
+ lastError = result.error;
224
+ if (attempt < maxRetries) {
225
+ // Wait before retry
226
+ await new Promise((resolve) => setTimeout(resolve, 1000 * attempt));
227
+ }
228
+ }
229
+ return {
230
+ success: false,
231
+ outputPath: options.outputPath,
232
+ error: `Failed after ${maxRetries} attempts. Last error: ${lastError}`,
233
+ };
234
+ }
235
+ /**
236
+ * Clone and setup project
237
+ */
238
+ static async cloneAndSetup(options) {
239
+ const { installDependencies = true, runSetup = true, setupCommands = [], ...cloneOptions } = options;
240
+ // Clone repository
241
+ const cloneResult = await this.clone(cloneOptions);
242
+ if (!cloneResult.success) {
243
+ return cloneResult;
244
+ }
245
+ try {
246
+ // Install dependencies
247
+ if (installDependencies) {
248
+ await this.installDependencies(cloneResult.outputPath);
249
+ }
250
+ // Run setup commands
251
+ if (runSetup && setupCommands.length > 0) {
252
+ await this.runSetupCommands(cloneResult.outputPath, setupCommands);
253
+ }
254
+ return cloneResult;
255
+ }
256
+ catch (error) {
257
+ return {
258
+ success: false,
259
+ outputPath: cloneResult.outputPath,
260
+ error: `Setup failed: ${error}`,
261
+ };
262
+ }
263
+ }
264
+ /**
265
+ * Install dependencies in cloned repository
266
+ */
267
+ static async installDependencies(repoPath) {
268
+ try {
269
+ // Check if package.json exists
270
+ const packageJsonPath = path.join(repoPath, "package.json");
271
+ await fs.access(packageJsonPath);
272
+ // Install dependencies
273
+ await execAsync("npm install", { cwd: repoPath });
274
+ }
275
+ catch {
276
+ // No package.json or install failed, skip
277
+ }
278
+ }
279
+ /**
280
+ * Run setup commands in cloned repository
281
+ */
282
+ static async runSetupCommands(repoPath, commands) {
283
+ for (const command of commands) {
284
+ try {
285
+ await execAsync(command, { cwd: repoPath });
286
+ }
287
+ catch (error) {
288
+ console.warn(chalk_1.default.yellow(` ⚠️ Setup command failed: ${command}`));
289
+ }
290
+ }
291
+ }
292
+ /**
293
+ * Clean up cloned repository
294
+ */
295
+ static async cleanup(outputPath) {
296
+ try {
297
+ await fs.rm(outputPath, { recursive: true, force: true });
298
+ }
299
+ catch {
300
+ // Ignore cleanup errors
301
+ }
302
+ }
303
+ }
304
+ exports.GitHubCloner = GitHubCloner;
305
+ //# sourceMappingURL=githubCloner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubCloner.js","sourceRoot":"","sources":["../../src/utils/githubCloner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Role Permission Mapper
3
+ *
4
+ * Maps features, components, actions, and routes to role-based permissions
5
+ * for the Feature Assembly system.
6
+ */
7
+ import { Role, Permission, RoleHierarchy } from "../types/role-permissions";
8
+ import { FeatureBundle } from "../types/feature-bundle";
9
+ export declare class RolePermissionMapper {
10
+ private roleHierarchy;
11
+ constructor(roleHierarchy: RoleHierarchy);
12
+ /**
13
+ * Map feature to role-based configuration
14
+ */
15
+ mapFeatureToRoles(feature: FeatureBundle): Map<Role, FeatureBundle>;
16
+ /**
17
+ * Map component to permissions for a specific role
18
+ */
19
+ mapComponentToPermissions(component: string, role: Role): Permission[];
20
+ /**
21
+ * Map action to permissions for a specific role
22
+ */
23
+ mapActionToPermissions(action: string, role: Role): Permission[];
24
+ /**
25
+ * Map route to permissions for a specific role
26
+ */
27
+ mapRouteToPermissions(route: string, role: Role): Permission[];
28
+ /**
29
+ * Generate role-based code for a feature
30
+ */
31
+ generateRoleBasedCode(feature: FeatureBundle, role: Role, config: any): string;
32
+ /**
33
+ * Check if a role has permission for a specific action
34
+ */
35
+ hasPermission(role: Role, resource: string, action: string): boolean;
36
+ /**
37
+ * Get all permissions for a role
38
+ */
39
+ getRolePermissions(role: Role): Permission[];
40
+ /**
41
+ * Get inherited permissions for a role
42
+ */
43
+ getInheritedPermissions(role: Role): Permission[];
44
+ /**
45
+ * Create a role-specific feature from a base feature
46
+ */
47
+ private createRoleFeature;
48
+ /**
49
+ * Map component name to resource type
50
+ */
51
+ private mapComponentToResource;
52
+ /**
53
+ * Map action name to resource type
54
+ */
55
+ private mapActionToResource;
56
+ /**
57
+ * Map route path to resource type
58
+ */
59
+ private mapRouteToResource;
60
+ /**
61
+ * Check if a role has permission for a component
62
+ */
63
+ private hasComponentPermission;
64
+ /**
65
+ * Check if a role has permission for an action
66
+ */
67
+ private hasActionPermission;
68
+ /**
69
+ * Check if a role has permission for a hook
70
+ */
71
+ private hasHookPermission;
72
+ /**
73
+ * Check if a role has permission for a route
74
+ */
75
+ private hasRoutePermission;
76
+ /**
77
+ * Apply role-specific restrictions to permissions
78
+ */
79
+ private applyRoleRestrictions;
80
+ /**
81
+ * Generate permission code for a role
82
+ */
83
+ private generatePermissionCode;
84
+ /**
85
+ * Get role definition by name
86
+ */
87
+ private getRoleDefinition;
88
+ }
89
+ //# sourceMappingURL=rolePermissionMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolePermissionMapper.d.ts","sourceRoot":"","sources":["../../src/utils/rolePermissionMapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AAEzE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAIxC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC;IAWnE;;OAEG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IA6BtE;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IA6BhE;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IA6B9D;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,GAAG,GACV,MAAM;IAsCT;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAUpE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IAO5C;;OAEG;IACH,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE;IAcjD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+CzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAK9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}