@nxuss/lemma 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.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +311 -0
  3. package/dist/cloud/KeyManager.d.ts +29 -0
  4. package/dist/cloud/KeyManager.d.ts.map +1 -0
  5. package/dist/cloud/KeyManager.js +142 -0
  6. package/dist/cloud/KeyManager.js.map +1 -0
  7. package/dist/cloud/TenantCache.d.ts +29 -0
  8. package/dist/cloud/TenantCache.d.ts.map +1 -0
  9. package/dist/cloud/TenantCache.js +162 -0
  10. package/dist/cloud/TenantCache.js.map +1 -0
  11. package/dist/cloud/index.d.ts +4 -0
  12. package/dist/cloud/index.d.ts.map +1 -0
  13. package/dist/cloud/index.js +23 -0
  14. package/dist/cloud/index.js.map +1 -0
  15. package/dist/cloud/server.d.ts +17 -0
  16. package/dist/cloud/server.d.ts.map +1 -0
  17. package/dist/cloud/server.js +189 -0
  18. package/dist/cloud/server.js.map +1 -0
  19. package/dist/cloud/types.d.ts +35 -0
  20. package/dist/cloud/types.d.ts.map +1 -0
  21. package/dist/cloud/types.js +14 -0
  22. package/dist/cloud/types.js.map +1 -0
  23. package/dist/config/index.d.ts +44 -0
  24. package/dist/config/index.d.ts.map +1 -0
  25. package/dist/config/index.js +161 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/consensus/ConsensusEngine.d.ts +119 -0
  28. package/dist/consensus/ConsensusEngine.d.ts.map +1 -0
  29. package/dist/consensus/ConsensusEngine.js +314 -0
  30. package/dist/consensus/ConsensusEngine.js.map +1 -0
  31. package/dist/consensus/ModelPool.d.ts +103 -0
  32. package/dist/consensus/ModelPool.d.ts.map +1 -0
  33. package/dist/consensus/ModelPool.js +276 -0
  34. package/dist/consensus/ModelPool.js.map +1 -0
  35. package/dist/consensus/index.d.ts +8 -0
  36. package/dist/consensus/index.d.ts.map +1 -0
  37. package/dist/consensus/index.js +13 -0
  38. package/dist/consensus/index.js.map +1 -0
  39. package/dist/core/AgentRegistry.d.ts +89 -0
  40. package/dist/core/AgentRegistry.d.ts.map +1 -0
  41. package/dist/core/AgentRegistry.js +264 -0
  42. package/dist/core/AgentRegistry.js.map +1 -0
  43. package/dist/core/DashboardBroadcaster.d.ts +67 -0
  44. package/dist/core/DashboardBroadcaster.d.ts.map +1 -0
  45. package/dist/core/DashboardBroadcaster.js +264 -0
  46. package/dist/core/DashboardBroadcaster.js.map +1 -0
  47. package/dist/core/OrchestrationEngine.d.ts +84 -0
  48. package/dist/core/OrchestrationEngine.d.ts.map +1 -0
  49. package/dist/core/OrchestrationEngine.js +455 -0
  50. package/dist/core/OrchestrationEngine.js.map +1 -0
  51. package/dist/core/SubconsciousEngine.d.ts +53 -0
  52. package/dist/core/SubconsciousEngine.d.ts.map +1 -0
  53. package/dist/core/SubconsciousEngine.js +273 -0
  54. package/dist/core/SubconsciousEngine.js.map +1 -0
  55. package/dist/core/WebSocketServer.d.ts +89 -0
  56. package/dist/core/WebSocketServer.d.ts.map +1 -0
  57. package/dist/core/WebSocketServer.js +416 -0
  58. package/dist/core/WebSocketServer.js.map +1 -0
  59. package/dist/core/index.d.ts +15 -0
  60. package/dist/core/index.d.ts.map +1 -0
  61. package/dist/core/index.js +24 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/router.d.ts +105 -0
  64. package/dist/core/router.d.ts.map +1 -0
  65. package/dist/core/router.js +420 -0
  66. package/dist/core/router.js.map +1 -0
  67. package/dist/embed/index.d.ts +153 -0
  68. package/dist/embed/index.d.ts.map +1 -0
  69. package/dist/embed/index.js +408 -0
  70. package/dist/embed/index.js.map +1 -0
  71. package/dist/embed.d.ts +11 -0
  72. package/dist/embed.d.ts.map +1 -0
  73. package/dist/embed.js +19 -0
  74. package/dist/embed.js.map +1 -0
  75. package/dist/index.d.ts +83 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +176 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/protocol/flows.d.ts +126 -0
  80. package/dist/protocol/flows.d.ts.map +1 -0
  81. package/dist/protocol/flows.js +347 -0
  82. package/dist/protocol/flows.js.map +1 -0
  83. package/dist/protocol/iap.d.ts +54 -0
  84. package/dist/protocol/iap.d.ts.map +1 -0
  85. package/dist/protocol/iap.js +108 -0
  86. package/dist/protocol/iap.js.map +1 -0
  87. package/dist/protocol/index.d.ts +23 -0
  88. package/dist/protocol/index.d.ts.map +1 -0
  89. package/dist/protocol/index.js +45 -0
  90. package/dist/protocol/index.js.map +1 -0
  91. package/dist/protocol/types.d.ts +332 -0
  92. package/dist/protocol/types.d.ts.map +1 -0
  93. package/dist/protocol/types.js +57 -0
  94. package/dist/protocol/types.js.map +1 -0
  95. package/dist/protocol/utils.d.ts +130 -0
  96. package/dist/protocol/utils.d.ts.map +1 -0
  97. package/dist/protocol/utils.js +292 -0
  98. package/dist/protocol/utils.js.map +1 -0
  99. package/dist/protocol/validators.d.ts +54 -0
  100. package/dist/protocol/validators.d.ts.map +1 -0
  101. package/dist/protocol/validators.js +344 -0
  102. package/dist/protocol/validators.js.map +1 -0
  103. package/dist/security/AuthManager.d.ts +73 -0
  104. package/dist/security/AuthManager.d.ts.map +1 -0
  105. package/dist/security/AuthManager.js +102 -0
  106. package/dist/security/AuthManager.js.map +1 -0
  107. package/dist/security/MessageSanitizer.d.ts +51 -0
  108. package/dist/security/MessageSanitizer.d.ts.map +1 -0
  109. package/dist/security/MessageSanitizer.js +166 -0
  110. package/dist/security/MessageSanitizer.js.map +1 -0
  111. package/dist/security/RateLimiter.d.ts +46 -0
  112. package/dist/security/RateLimiter.d.ts.map +1 -0
  113. package/dist/security/RateLimiter.js +133 -0
  114. package/dist/security/RateLimiter.js.map +1 -0
  115. package/dist/security/SecurityMiddleware.d.ts +88 -0
  116. package/dist/security/SecurityMiddleware.d.ts.map +1 -0
  117. package/dist/security/SecurityMiddleware.js +146 -0
  118. package/dist/security/SecurityMiddleware.js.map +1 -0
  119. package/dist/security/index.d.ts +35 -0
  120. package/dist/security/index.d.ts.map +1 -0
  121. package/dist/security/index.js +42 -0
  122. package/dist/security/index.js.map +1 -0
  123. package/dist/speculative/PredictionEngine.d.ts +99 -0
  124. package/dist/speculative/PredictionEngine.d.ts.map +1 -0
  125. package/dist/speculative/PredictionEngine.js +291 -0
  126. package/dist/speculative/PredictionEngine.js.map +1 -0
  127. package/dist/speculative/SpeculativeCache.d.ts +117 -0
  128. package/dist/speculative/SpeculativeCache.d.ts.map +1 -0
  129. package/dist/speculative/SpeculativeCache.js +292 -0
  130. package/dist/speculative/SpeculativeCache.js.map +1 -0
  131. package/dist/speculative/SpeculativeEngine.d.ts +114 -0
  132. package/dist/speculative/SpeculativeEngine.d.ts.map +1 -0
  133. package/dist/speculative/SpeculativeEngine.js +244 -0
  134. package/dist/speculative/SpeculativeEngine.js.map +1 -0
  135. package/dist/speculative/WorkerPool.d.ts +109 -0
  136. package/dist/speculative/WorkerPool.d.ts.map +1 -0
  137. package/dist/speculative/WorkerPool.js +327 -0
  138. package/dist/speculative/WorkerPool.js.map +1 -0
  139. package/dist/speculative/index.d.ts +10 -0
  140. package/dist/speculative/index.d.ts.map +1 -0
  141. package/dist/speculative/index.js +17 -0
  142. package/dist/speculative/index.js.map +1 -0
  143. package/dist/subconscious/EmbeddingService.d.ts +73 -0
  144. package/dist/subconscious/EmbeddingService.d.ts.map +1 -0
  145. package/dist/subconscious/EmbeddingService.js +196 -0
  146. package/dist/subconscious/EmbeddingService.js.map +1 -0
  147. package/dist/subconscious/SemanticCache.d.ts +82 -0
  148. package/dist/subconscious/SemanticCache.d.ts.map +1 -0
  149. package/dist/subconscious/SemanticCache.js +164 -0
  150. package/dist/subconscious/SemanticCache.js.map +1 -0
  151. package/dist/subconscious/SubconsciousEngine.d.ts +121 -0
  152. package/dist/subconscious/SubconsciousEngine.d.ts.map +1 -0
  153. package/dist/subconscious/SubconsciousEngine.js +241 -0
  154. package/dist/subconscious/SubconsciousEngine.js.map +1 -0
  155. package/dist/subconscious/VectorStore.d.ts +54 -0
  156. package/dist/subconscious/VectorStore.d.ts.map +1 -0
  157. package/dist/subconscious/VectorStore.js +168 -0
  158. package/dist/subconscious/VectorStore.js.map +1 -0
  159. package/dist/subconscious/cache.d.ts +34 -0
  160. package/dist/subconscious/cache.d.ts.map +1 -0
  161. package/dist/subconscious/cache.js +156 -0
  162. package/dist/subconscious/cache.js.map +1 -0
  163. package/dist/subconscious/embeddings.d.ts +25 -0
  164. package/dist/subconscious/embeddings.d.ts.map +1 -0
  165. package/dist/subconscious/embeddings.js +65 -0
  166. package/dist/subconscious/embeddings.js.map +1 -0
  167. package/dist/subconscious/index.d.ts +12 -0
  168. package/dist/subconscious/index.d.ts.map +1 -0
  169. package/dist/subconscious/index.js +19 -0
  170. package/dist/subconscious/index.js.map +1 -0
  171. package/dist/types/index.d.ts +286 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +43 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/logger.d.ts +63 -0
  176. package/dist/utils/logger.d.ts.map +1 -0
  177. package/dist/utils/logger.js +126 -0
  178. package/dist/utils/logger.js.map +1 -0
  179. package/package.json +99 -0
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SubconsciousEngine = void 0;
7
+ const chromadb_1 = require("chromadb");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const config_1 = require("../config");
10
+ const logger_1 = require("../utils/logger");
11
+ const logger = (0, logger_1.createLogger)('SubconsciousEngine');
12
+ /**
13
+ * Subconscious Semantic Engine
14
+ * Provides semantic caching using ChromaDB and Ollama embeddings
15
+ * Implements the "short-circuit" logic for instant task resolution
16
+ */
17
+ class SubconsciousEngine {
18
+ constructor() {
19
+ this.collection = null;
20
+ this.isInitialized = false;
21
+ this.cacheHits = 0;
22
+ this.cacheMisses = 0;
23
+ this.client = new chromadb_1.ChromaClient({
24
+ path: (0, config_1.getChromaURL)(),
25
+ });
26
+ }
27
+ /**
28
+ * Initialize the engine and create/get collection
29
+ */
30
+ async initialize() {
31
+ try {
32
+ logger.info('Initializing Subconscious Engine...');
33
+ // Create or get collection
34
+ this.collection = await this.client.getOrCreateCollection({
35
+ name: config_1.config.CHROMA_COLLECTION,
36
+ metadata: {
37
+ description: 'Semantic cache for agent task responses',
38
+ 'hnsw:space': 'cosine',
39
+ },
40
+ });
41
+ this.isInitialized = true;
42
+ logger.info('Subconscious Engine initialized successfully', {
43
+ collection: config_1.config.CHROMA_COLLECTION,
44
+ });
45
+ }
46
+ catch (error) {
47
+ logger.error('Failed to initialize Subconscious Engine', error);
48
+ throw error;
49
+ }
50
+ }
51
+ /**
52
+ * Generate embedding using Ollama
53
+ */
54
+ async generateEmbedding(text) {
55
+ try {
56
+ const startTime = Date.now();
57
+ const response = await axios_1.default.post(`${config_1.config.OLLAMA_HOST}/api/embeddings`, {
58
+ model: config_1.config.OLLAMA_MODEL,
59
+ prompt: text,
60
+ }, {
61
+ timeout: 30000, // 30 second timeout
62
+ });
63
+ const embedding = response.data.embedding;
64
+ const duration = Date.now() - startTime;
65
+ logger.debug('Generated embedding', {
66
+ textLength: text.length,
67
+ embeddingDim: embedding.length,
68
+ duration,
69
+ });
70
+ return embedding;
71
+ }
72
+ catch (error) {
73
+ logger.error('Failed to generate embedding', error);
74
+ throw new Error('Embedding generation failed');
75
+ }
76
+ }
77
+ /**
78
+ * Search for semantically similar cached responses
79
+ * Returns the best match if similarity exceeds threshold
80
+ */
81
+ async search(query) {
82
+ if (!this.isInitialized || !this.collection) {
83
+ throw new Error('SubconsciousEngine not initialized');
84
+ }
85
+ if (!config_1.config.ENABLE_CACHING) {
86
+ this.cacheMisses++;
87
+ return null;
88
+ }
89
+ try {
90
+ const startTime = Date.now();
91
+ // Generate embedding for query
92
+ const queryEmbedding = await this.generateEmbedding(query);
93
+ // Search in ChromaDB
94
+ const results = await this.collection.query({
95
+ queryEmbeddings: [queryEmbedding],
96
+ nResults: 1,
97
+ });
98
+ const duration = Date.now() - startTime;
99
+ // Check if we have results
100
+ if (!results.ids[0] || results.ids[0].length === 0) {
101
+ this.cacheMisses++;
102
+ logger.debug('Cache miss - no results', { query, duration });
103
+ return null;
104
+ }
105
+ // Get similarity score (ChromaDB returns distances, convert to similarity)
106
+ const distance = results.distances?.[0]?.[0] ?? 1;
107
+ const similarity = 1 - distance; // Cosine distance to similarity
108
+ logger.debug('Semantic search result', {
109
+ similarity,
110
+ threshold: config_1.config.SEMANTIC_THRESHOLD,
111
+ duration,
112
+ });
113
+ // Check if similarity meets threshold
114
+ if (similarity < config_1.config.SEMANTIC_THRESHOLD) {
115
+ this.cacheMisses++;
116
+ logger.info('Cache miss - below threshold', {
117
+ similarity,
118
+ threshold: config_1.config.SEMANTIC_THRESHOLD,
119
+ duration,
120
+ });
121
+ return null;
122
+ }
123
+ // Cache hit!
124
+ this.cacheHits++;
125
+ const id = results.ids[0][0];
126
+ const metadata = results.metadatas?.[0]?.[0];
127
+ const response = metadata?.response ? JSON.parse(metadata.response) : null;
128
+ logger.info('Cache HIT! 🎯', {
129
+ similarity,
130
+ duration,
131
+ savedTime: metadata?.executionTime || 0,
132
+ });
133
+ logger.metric('cache-hit-latency', duration);
134
+ return {
135
+ id,
136
+ similarity,
137
+ response,
138
+ metadata: {
139
+ agentId: metadata?.agentId || 'unknown',
140
+ timestamp: metadata?.timestamp || Date.now(),
141
+ executionTime: metadata?.executionTime || 0,
142
+ tokensUsed: metadata?.tokensUsed,
143
+ },
144
+ };
145
+ }
146
+ catch (error) {
147
+ logger.error('Search failed', error);
148
+ this.cacheMisses++;
149
+ return null;
150
+ }
151
+ }
152
+ /**
153
+ * Store a new response in the semantic cache
154
+ */
155
+ async store(entry) {
156
+ if (!this.isInitialized || !this.collection) {
157
+ throw new Error('SubconsciousEngine not initialized');
158
+ }
159
+ if (!config_1.config.ENABLE_CACHING) {
160
+ return;
161
+ }
162
+ try {
163
+ const startTime = Date.now();
164
+ // Generate embedding for the query
165
+ const embedding = await this.generateEmbedding(entry.query);
166
+ // Store in ChromaDB
167
+ await this.collection.add({
168
+ ids: [entry.id],
169
+ embeddings: [embedding],
170
+ metadatas: [{
171
+ agentId: entry.metadata.agentId,
172
+ timestamp: entry.metadata.timestamp,
173
+ executionTime: entry.metadata.executionTime || 0,
174
+ tokensUsed: entry.metadata.tokensUsed || 0,
175
+ response: JSON.stringify(entry.response),
176
+ }],
177
+ documents: [entry.query],
178
+ });
179
+ const duration = Date.now() - startTime;
180
+ logger.debug('Stored in cache', {
181
+ id: entry.id,
182
+ duration,
183
+ });
184
+ // Check cache size and prune if necessary
185
+ await this.pruneIfNeeded();
186
+ }
187
+ catch (error) {
188
+ logger.error('Failed to store in cache', error);
189
+ // Don't throw - caching failures shouldn't break the system
190
+ }
191
+ }
192
+ /**
193
+ * Prune old entries if cache exceeds max size
194
+ */
195
+ async pruneIfNeeded() {
196
+ if (!this.collection)
197
+ return;
198
+ try {
199
+ const count = await this.collection.count();
200
+ if (count > config_1.config.MAX_CACHE_SIZE) {
201
+ const toDelete = count - config_1.config.MAX_CACHE_SIZE;
202
+ logger.info('Pruning cache', {
203
+ currentSize: count,
204
+ maxSize: config_1.config.MAX_CACHE_SIZE,
205
+ toDelete,
206
+ });
207
+ // Get oldest entries (this is a simplified approach)
208
+ // In production, you'd want more sophisticated LRU logic
209
+ const results = await this.collection.get({
210
+ limit: toDelete,
211
+ });
212
+ if (results.ids.length > 0) {
213
+ await this.collection.delete({
214
+ ids: results.ids,
215
+ });
216
+ logger.info('Cache pruned', { deleted: results.ids.length });
217
+ }
218
+ }
219
+ }
220
+ catch (error) {
221
+ logger.error('Failed to prune cache', error);
222
+ }
223
+ }
224
+ /**
225
+ * Get cache statistics
226
+ */
227
+ getStats() {
228
+ const total = this.cacheHits + this.cacheMisses;
229
+ const hitRate = total > 0 ? (this.cacheHits / total) * 100 : 0;
230
+ return {
231
+ cacheHits: this.cacheHits,
232
+ cacheMisses: this.cacheMisses,
233
+ totalQueries: total,
234
+ hitRate: hitRate.toFixed(2) + '%',
235
+ };
236
+ }
237
+ /**
238
+ * Clear all cache entries
239
+ */
240
+ async clear() {
241
+ if (!this.collection)
242
+ return;
243
+ try {
244
+ await this.client.deleteCollection({
245
+ name: config_1.config.CHROMA_COLLECTION,
246
+ });
247
+ this.collection = await this.client.createCollection({
248
+ name: config_1.config.CHROMA_COLLECTION,
249
+ metadata: {
250
+ description: 'Semantic cache for agent task responses',
251
+ 'hnsw:space': 'cosine',
252
+ },
253
+ });
254
+ this.cacheHits = 0;
255
+ this.cacheMisses = 0;
256
+ logger.info('Cache cleared');
257
+ }
258
+ catch (error) {
259
+ logger.error('Failed to clear cache', error);
260
+ throw error;
261
+ }
262
+ }
263
+ /**
264
+ * Shutdown the engine
265
+ */
266
+ async shutdown() {
267
+ logger.info('Shutting down Subconscious Engine');
268
+ this.isInitialized = false;
269
+ this.collection = null;
270
+ }
271
+ }
272
+ exports.SubconsciousEngine = SubconsciousEngine;
273
+ //# sourceMappingURL=SubconsciousEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubconsciousEngine.js","sourceRoot":"","sources":["../../src/core/SubconsciousEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { EventEmitter } from 'events';
2
+ import { AgentConnection, ServerConfig, ConnectionStats } from '../types';
3
+ import { SecurityMiddleware, SecurityConfig } from '../security';
4
+ /**
5
+ * High-performance WebSocket server for agent connections
6
+ * Handles connection lifecycle, heartbeat, reconnection logic, and security
7
+ */
8
+ export declare class WebSocketServer extends EventEmitter {
9
+ private wss;
10
+ private connections;
11
+ private heartbeatInterval;
12
+ private config;
13
+ private security;
14
+ private stats;
15
+ constructor(config: ServerConfig, securityConfig?: SecurityConfig);
16
+ /**
17
+ * Start the WebSocket server
18
+ */
19
+ start(): Promise<void>;
20
+ /**
21
+ * Handle new WebSocket connection
22
+ */
23
+ private handleConnection;
24
+ /**
25
+ * Handle incoming message from agent
26
+ */
27
+ private handleMessage;
28
+ /**
29
+ * Handle pong response (heartbeat)
30
+ */
31
+ private handlePong;
32
+ /**
33
+ * Handle connection close
34
+ */
35
+ private handleDisconnection;
36
+ /**
37
+ * Handle WebSocket error
38
+ */
39
+ private handleError;
40
+ /**
41
+ * Start heartbeat mechanism (ping/pong)
42
+ */
43
+ private startHeartbeat;
44
+ /**
45
+ * Send message to specific connection
46
+ */
47
+ sendToConnection(connectionId: string, message: any): boolean;
48
+ /**
49
+ * Send message to specific agent
50
+ */
51
+ sendToAgent(agentId: string, message: any): boolean;
52
+ /**
53
+ * Broadcast message to all connected agents
54
+ */
55
+ broadcast(message: any, excludeConnectionId?: string): void;
56
+ /**
57
+ * Send error message to connection
58
+ */
59
+ private sendError;
60
+ /**
61
+ * Update agent information for a connection
62
+ */
63
+ updateAgentInfo(connectionId: string, agentId: string, capabilities: string[]): boolean;
64
+ /**
65
+ * Get connection by ID
66
+ */
67
+ getConnection(connectionId: string): AgentConnection | undefined;
68
+ /**
69
+ * Get all active connections
70
+ */
71
+ getConnections(): AgentConnection[];
72
+ /**
73
+ * Get connection statistics
74
+ */
75
+ getStats(): ConnectionStats;
76
+ /**
77
+ * Generate unique connection ID
78
+ */
79
+ private generateConnectionId;
80
+ /**
81
+ * Stop the WebSocket server
82
+ */
83
+ stop(): Promise<void>;
84
+ /**
85
+ * Get security middleware (for key management)
86
+ */
87
+ getSecurity(): SecurityMiddleware | null;
88
+ }
89
+ //# sourceMappingURL=WebSocketServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketServer.d.ts","sourceRoot":"","sources":["../../src/core/WebSocketServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,KAAK,CAMX;gBAEU,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,cAAc;IAqBjE;;OAEG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8ExB;;OAEG;IACH,OAAO,CAAC,aAAa;IA6ErB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO;IAgBpE;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO;IAY1D;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI;IAelE;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAY9F;;OAEG;IACI,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIvE;;OAEG;IACI,cAAc,IAAI,eAAe,EAAE;IAI1C;;OAEG;IACI,QAAQ,IAAI,eAAe;IAIlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BlC;;OAEG;IACI,WAAW,IAAI,kBAAkB,GAAG,IAAI;CAGhD"}