@danielsimonjr/memory-mcp 11.1.1 → 12.5.2

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 (161) hide show
  1. package/README.md +302 -107
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -0
  5. package/dist/server/toolDefinitions.d.ts +1 -1
  6. package/dist/server/toolDefinitions.d.ts.map +1 -1
  7. package/dist/server/toolDefinitions.js +2323 -6
  8. package/dist/server/toolHandlers.d.ts +2 -10
  9. package/dist/server/toolHandlers.d.ts.map +1 -1
  10. package/dist/server/toolHandlers.js +2097 -7
  11. package/package.json +9 -6
  12. package/dist/core/EntityManager.d.ts +0 -263
  13. package/dist/core/EntityManager.d.ts.map +0 -1
  14. package/dist/core/EntityManager.js +0 -478
  15. package/dist/core/GraphStorage.d.ts +0 -344
  16. package/dist/core/GraphStorage.d.ts.map +0 -1
  17. package/dist/core/GraphStorage.js +0 -708
  18. package/dist/core/GraphTraversal.d.ts +0 -136
  19. package/dist/core/GraphTraversal.d.ts.map +0 -1
  20. package/dist/core/GraphTraversal.js +0 -556
  21. package/dist/core/HierarchyManager.d.ts +0 -111
  22. package/dist/core/HierarchyManager.d.ts.map +0 -1
  23. package/dist/core/HierarchyManager.js +0 -224
  24. package/dist/core/ManagerContext.d.ts +0 -72
  25. package/dist/core/ManagerContext.d.ts.map +0 -1
  26. package/dist/core/ManagerContext.js +0 -118
  27. package/dist/core/ObservationManager.d.ts +0 -85
  28. package/dist/core/ObservationManager.d.ts.map +0 -1
  29. package/dist/core/ObservationManager.js +0 -123
  30. package/dist/core/RelationManager.d.ts +0 -131
  31. package/dist/core/RelationManager.d.ts.map +0 -1
  32. package/dist/core/RelationManager.js +0 -210
  33. package/dist/core/SQLiteStorage.d.ts +0 -354
  34. package/dist/core/SQLiteStorage.d.ts.map +0 -1
  35. package/dist/core/SQLiteStorage.js +0 -917
  36. package/dist/core/StorageFactory.d.ts +0 -45
  37. package/dist/core/StorageFactory.d.ts.map +0 -1
  38. package/dist/core/StorageFactory.js +0 -64
  39. package/dist/core/TransactionManager.d.ts +0 -259
  40. package/dist/core/TransactionManager.d.ts.map +0 -1
  41. package/dist/core/TransactionManager.js +0 -392
  42. package/dist/core/index.d.ts +0 -16
  43. package/dist/core/index.d.ts.map +0 -1
  44. package/dist/core/index.js +0 -17
  45. package/dist/features/AnalyticsManager.d.ts +0 -44
  46. package/dist/features/AnalyticsManager.d.ts.map +0 -1
  47. package/dist/features/AnalyticsManager.js +0 -223
  48. package/dist/features/ArchiveManager.d.ts +0 -121
  49. package/dist/features/ArchiveManager.d.ts.map +0 -1
  50. package/dist/features/ArchiveManager.js +0 -240
  51. package/dist/features/CompressionManager.d.ts +0 -109
  52. package/dist/features/CompressionManager.d.ts.map +0 -1
  53. package/dist/features/CompressionManager.js +0 -404
  54. package/dist/features/IOManager.d.ts +0 -221
  55. package/dist/features/IOManager.d.ts.map +0 -1
  56. package/dist/features/IOManager.js +0 -997
  57. package/dist/features/StreamingExporter.d.ts +0 -105
  58. package/dist/features/StreamingExporter.d.ts.map +0 -1
  59. package/dist/features/StreamingExporter.js +0 -150
  60. package/dist/features/TagManager.d.ts +0 -147
  61. package/dist/features/TagManager.d.ts.map +0 -1
  62. package/dist/features/TagManager.js +0 -210
  63. package/dist/features/index.d.ts +0 -12
  64. package/dist/features/index.d.ts.map +0 -1
  65. package/dist/features/index.js +0 -11
  66. package/dist/search/BasicSearch.d.ts +0 -51
  67. package/dist/search/BasicSearch.d.ts.map +0 -1
  68. package/dist/search/BasicSearch.js +0 -137
  69. package/dist/search/BooleanSearch.d.ts +0 -98
  70. package/dist/search/BooleanSearch.d.ts.map +0 -1
  71. package/dist/search/BooleanSearch.js +0 -430
  72. package/dist/search/EmbeddingService.d.ts +0 -178
  73. package/dist/search/EmbeddingService.d.ts.map +0 -1
  74. package/dist/search/EmbeddingService.js +0 -358
  75. package/dist/search/FuzzySearch.d.ts +0 -118
  76. package/dist/search/FuzzySearch.d.ts.map +0 -1
  77. package/dist/search/FuzzySearch.js +0 -312
  78. package/dist/search/RankedSearch.d.ts +0 -71
  79. package/dist/search/RankedSearch.d.ts.map +0 -1
  80. package/dist/search/RankedSearch.js +0 -238
  81. package/dist/search/SavedSearchManager.d.ts +0 -79
  82. package/dist/search/SavedSearchManager.d.ts.map +0 -1
  83. package/dist/search/SavedSearchManager.js +0 -145
  84. package/dist/search/SearchFilterChain.d.ts +0 -120
  85. package/dist/search/SearchFilterChain.d.ts.map +0 -1
  86. package/dist/search/SearchFilterChain.js +0 -185
  87. package/dist/search/SearchManager.d.ts +0 -285
  88. package/dist/search/SearchManager.d.ts.map +0 -1
  89. package/dist/search/SearchManager.js +0 -338
  90. package/dist/search/SearchSuggestions.d.ts +0 -27
  91. package/dist/search/SearchSuggestions.d.ts.map +0 -1
  92. package/dist/search/SearchSuggestions.js +0 -57
  93. package/dist/search/SemanticSearch.d.ts +0 -146
  94. package/dist/search/SemanticSearch.d.ts.map +0 -1
  95. package/dist/search/SemanticSearch.js +0 -313
  96. package/dist/search/TFIDFIndexManager.d.ts +0 -63
  97. package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
  98. package/dist/search/TFIDFIndexManager.js +0 -215
  99. package/dist/search/VectorStore.d.ts +0 -235
  100. package/dist/search/VectorStore.d.ts.map +0 -1
  101. package/dist/search/VectorStore.js +0 -311
  102. package/dist/search/index.d.ts +0 -18
  103. package/dist/search/index.d.ts.map +0 -1
  104. package/dist/search/index.js +0 -21
  105. package/dist/types/index.d.ts +0 -13
  106. package/dist/types/index.d.ts.map +0 -1
  107. package/dist/types/index.js +0 -12
  108. package/dist/types/types.d.ts +0 -1234
  109. package/dist/types/types.d.ts.map +0 -1
  110. package/dist/types/types.js +0 -9
  111. package/dist/utils/compressedCache.d.ts +0 -192
  112. package/dist/utils/compressedCache.d.ts.map +0 -1
  113. package/dist/utils/compressedCache.js +0 -309
  114. package/dist/utils/compressionUtil.d.ts +0 -214
  115. package/dist/utils/compressionUtil.d.ts.map +0 -1
  116. package/dist/utils/compressionUtil.js +0 -247
  117. package/dist/utils/constants.d.ts +0 -245
  118. package/dist/utils/constants.d.ts.map +0 -1
  119. package/dist/utils/constants.js +0 -252
  120. package/dist/utils/entityUtils.d.ts +0 -321
  121. package/dist/utils/entityUtils.d.ts.map +0 -1
  122. package/dist/utils/entityUtils.js +0 -538
  123. package/dist/utils/errors.d.ts +0 -77
  124. package/dist/utils/errors.d.ts.map +0 -1
  125. package/dist/utils/errors.js +0 -121
  126. package/dist/utils/formatters.d.ts +0 -145
  127. package/dist/utils/formatters.d.ts.map +0 -1
  128. package/dist/utils/formatters.js +0 -132
  129. package/dist/utils/index.d.ts +0 -22
  130. package/dist/utils/index.d.ts.map +0 -1
  131. package/dist/utils/index.js +0 -75
  132. package/dist/utils/indexes.d.ts +0 -270
  133. package/dist/utils/indexes.d.ts.map +0 -1
  134. package/dist/utils/indexes.js +0 -526
  135. package/dist/utils/logger.d.ts +0 -24
  136. package/dist/utils/logger.d.ts.map +0 -1
  137. package/dist/utils/logger.js +0 -33
  138. package/dist/utils/parallelUtils.d.ts +0 -72
  139. package/dist/utils/parallelUtils.d.ts.map +0 -1
  140. package/dist/utils/parallelUtils.js +0 -169
  141. package/dist/utils/schemas.d.ts +0 -374
  142. package/dist/utils/schemas.d.ts.map +0 -1
  143. package/dist/utils/schemas.js +0 -484
  144. package/dist/utils/searchAlgorithms.d.ts +0 -99
  145. package/dist/utils/searchAlgorithms.d.ts.map +0 -1
  146. package/dist/utils/searchAlgorithms.js +0 -167
  147. package/dist/utils/searchCache.d.ts +0 -108
  148. package/dist/utils/searchCache.d.ts.map +0 -1
  149. package/dist/utils/searchCache.js +0 -209
  150. package/dist/utils/taskScheduler.d.ts +0 -290
  151. package/dist/utils/taskScheduler.d.ts.map +0 -1
  152. package/dist/utils/taskScheduler.js +0 -466
  153. package/dist/workers/WorkerPool.d.ts +0 -81
  154. package/dist/workers/WorkerPool.d.ts.map +0 -1
  155. package/dist/workers/WorkerPool.js +0 -121
  156. package/dist/workers/index.d.ts +0 -12
  157. package/dist/workers/index.d.ts.map +0 -1
  158. package/dist/workers/index.js +0 -9
  159. package/dist/workers/levenshteinWorker.d.ts +0 -60
  160. package/dist/workers/levenshteinWorker.d.ts.map +0 -1
  161. package/dist/workers/levenshteinWorker.js +0 -98
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@danielsimonjr/memory-mcp",
3
- "version": "11.1.1",
4
- "description": "Enhanced MCP memory server with hierarchies, compression, archiving, graph algorithms, semantic search, and 59 advanced tools",
3
+ "version": "12.5.2",
4
+ "description": "Enhanced MCP memory server with hierarchies, compression, archiving, graph algorithms, semantic search, temporal KG, RBAC, bitemporal validity, OCC, procedural memory, causal reasoning, world model, do_not_remember exclusions, decision rationale, project context, heuristic guidelines, tool affordance + observer, observation dedup, spell correction, and 213 advanced tools",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=18.0.0"
@@ -58,15 +58,18 @@
58
58
  "tools:build": "cd tools/chunking-for-files && npm run build && cd ../compress-for-context && npm run build && cd ../create-dependency-graph && npm run build && cd ../migrate-from-jsonl-to-sqlite && npm run build"
59
59
  },
60
60
  "dependencies": {
61
- "@danielsimonjr/memoryjs": "^1.2.2",
61
+ "@danielsimonjr/memoryjs": "^2.8.1",
62
62
  "@modelcontextprotocol/sdk": "^1.21.1",
63
- "zod": "^3.24.1"
63
+ "zod": "^4.4.3"
64
+ },
65
+ "overrides": {
66
+ "better-sqlite3": "^12.10.1"
64
67
  },
65
68
  "devDependencies": {
66
69
  "@types/node": "^22",
67
- "@vitest/coverage-v8": "^4.0.13",
70
+ "@vitest/coverage-v8": "^4.1.5",
68
71
  "shx": "^0.4.0",
69
72
  "typescript": "^5.6.2",
70
- "vitest": "^4.0.13"
73
+ "vitest": "^4.1.5"
71
74
  }
72
75
  }
@@ -1,263 +0,0 @@
1
- /**
2
- * Entity Manager
3
- *
4
- * Handles CRUD operations for entities in the knowledge graph.
5
- * Focused on core entity and tag operations only (Phase 4: Consolidate God Objects).
6
- *
7
- * @module core/EntityManager
8
- */
9
- import type { Entity } from '../types/index.js';
10
- import type { GraphStorage } from './GraphStorage.js';
11
- /**
12
- * Minimum importance value (least important).
13
- */
14
- export declare const MIN_IMPORTANCE = 0;
15
- /**
16
- * Maximum importance value (most important).
17
- */
18
- export declare const MAX_IMPORTANCE = 10;
19
- /**
20
- * Manages entity operations with automatic timestamp handling.
21
- */
22
- export declare class EntityManager {
23
- private storage;
24
- constructor(storage: GraphStorage);
25
- /**
26
- * Create multiple entities in a single batch operation.
27
- *
28
- * This method performs the following operations:
29
- * - Filters out entities that already exist (duplicate names)
30
- * - Automatically adds createdAt and lastModified timestamps
31
- * - Normalizes all tags to lowercase for consistent searching
32
- * - Validates importance values (must be between 0-10)
33
- *
34
- * @param entities - Array of entities to create. Each entity must have a unique name.
35
- * @returns Promise resolving to array of newly created entities (excludes duplicates)
36
- * @throws {InvalidImportanceError} If any entity has importance outside the valid range [0-10]
37
- *
38
- * @example
39
- * ```typescript
40
- * const manager = new EntityManager(storage);
41
- *
42
- * // Create single entity
43
- * const results = await manager.createEntities([{
44
- * name: 'Alice',
45
- * entityType: 'person',
46
- * observations: ['Works as engineer', 'Lives in Seattle'],
47
- * importance: 7,
48
- * tags: ['Team', 'Engineering']
49
- * }]);
50
- *
51
- * // Create multiple entities at once
52
- * const users = await manager.createEntities([
53
- * { name: 'Bob', entityType: 'person', observations: [] },
54
- * { name: 'Charlie', entityType: 'person', observations: [] }
55
- * ]);
56
- * ```
57
- */
58
- createEntities(entities: Entity[]): Promise<Entity[]>;
59
- /**
60
- * Delete multiple entities by name in a single batch operation.
61
- *
62
- * This method performs cascading deletion:
63
- * - Removes all specified entities from the graph
64
- * - Automatically removes all relations where these entities are source or target
65
- * - Silently ignores entity names that don't exist (no error thrown)
66
- *
67
- * @param entityNames - Array of entity names to delete
68
- * @returns Promise that resolves when deletion is complete
69
- *
70
- * @example
71
- * ```typescript
72
- * const manager = new EntityManager(storage);
73
- *
74
- * // Delete single entity
75
- * await manager.deleteEntities(['Alice']);
76
- *
77
- * // Delete multiple entities at once
78
- * await manager.deleteEntities(['Bob', 'Charlie', 'Dave']);
79
- *
80
- * // Safe to delete non-existent entities (no error)
81
- * await manager.deleteEntities(['NonExistent']); // No error thrown
82
- * ```
83
- */
84
- deleteEntities(entityNames: string[]): Promise<void>;
85
- /**
86
- * Retrieve a single entity by its unique name.
87
- *
88
- * This is a read-only operation that does not modify the graph.
89
- * Entity names are case-sensitive.
90
- *
91
- * @param name - The unique name of the entity to retrieve
92
- * @returns Promise resolving to the Entity object if found, or null if not found
93
- *
94
- * @example
95
- * ```typescript
96
- * const manager = new EntityManager(storage);
97
- *
98
- * // Get an existing entity
99
- * const alice = await manager.getEntity('Alice');
100
- * if (alice) {
101
- * console.log(alice.observations);
102
- * console.log(alice.importance);
103
- * }
104
- *
105
- * // Handle non-existent entity
106
- * const missing = await manager.getEntity('NonExistent');
107
- * console.log(missing); // null
108
- * ```
109
- */
110
- getEntity(name: string): Promise<Entity | null>;
111
- /**
112
- * Update one or more fields of an existing entity.
113
- *
114
- * This method allows partial updates - only the fields specified in the updates
115
- * object will be changed. All other fields remain unchanged.
116
- * The lastModified timestamp is automatically updated.
117
- *
118
- * @param name - The unique name of the entity to update
119
- * @param updates - Partial entity object containing only the fields to update
120
- * @returns Promise resolving to the fully updated Entity object
121
- * @throws {EntityNotFoundError} If no entity with the given name exists
122
- *
123
- * @example
124
- * ```typescript
125
- * const manager = new EntityManager(storage);
126
- *
127
- * // Update importance only
128
- * const updated = await manager.updateEntity('Alice', {
129
- * importance: 9
130
- * });
131
- *
132
- * // Update multiple fields
133
- * await manager.updateEntity('Bob', {
134
- * entityType: 'senior_engineer',
135
- * tags: ['leadership', 'architecture'],
136
- * observations: ['Led project X', 'Designed system Y']
137
- * });
138
- *
139
- * // Add observations (requires reading existing entity first)
140
- * const entity = await manager.getEntity('Charlie');
141
- * if (entity) {
142
- * await manager.updateEntity('Charlie', {
143
- * observations: [...entity.observations, 'New observation']
144
- * });
145
- * }
146
- * ```
147
- */
148
- updateEntity(name: string, updates: Partial<Entity>): Promise<Entity>;
149
- /**
150
- * Update multiple entities in a single batch operation.
151
- *
152
- * This method is more efficient than calling updateEntity multiple times
153
- * as it loads and saves the graph only once. All updates are applied atomically.
154
- * The lastModified timestamp is automatically updated for all entities.
155
- *
156
- * @param updates - Array of updates, each containing entity name and changes
157
- * @returns Promise resolving to array of updated entities
158
- * @throws {EntityNotFoundError} If any entity is not found
159
- * @throws {ValidationError} If any update data is invalid
160
- *
161
- * @example
162
- * ```typescript
163
- * const manager = new EntityManager(storage);
164
- *
165
- * // Update multiple entities at once
166
- * const updated = await manager.batchUpdate([
167
- * { name: 'Alice', updates: { importance: 9 } },
168
- * { name: 'Bob', updates: { importance: 8, tags: ['senior'] } },
169
- * { name: 'Charlie', updates: { entityType: 'lead_engineer' } }
170
- * ]);
171
- *
172
- * console.log(`Updated ${updated.length} entities`);
173
- *
174
- * // Efficiently update many entities (single graph load/save)
175
- * const massUpdate = employees.map(name => ({
176
- * name,
177
- * updates: { tags: ['team-2024'] }
178
- * }));
179
- * await manager.batchUpdate(massUpdate);
180
- * ```
181
- */
182
- batchUpdate(updates: Array<{
183
- name: string;
184
- updates: Partial<Entity>;
185
- }>): Promise<Entity[]>;
186
- /**
187
- * Add tags to an entity.
188
- *
189
- * Tags are normalized to lowercase and duplicates are filtered out.
190
- *
191
- * @param entityName - Name of the entity
192
- * @param tags - Tags to add
193
- * @returns Result with entity name and added tags
194
- * @throws {EntityNotFoundError} If entity is not found
195
- */
196
- addTags(entityName: string, tags: string[]): Promise<{
197
- entityName: string;
198
- addedTags: string[];
199
- }>;
200
- /**
201
- * Remove tags from an entity.
202
- *
203
- * @param entityName - Name of the entity
204
- * @param tags - Tags to remove
205
- * @returns Result with entity name and removed tags
206
- * @throws {EntityNotFoundError} If entity is not found
207
- */
208
- removeTags(entityName: string, tags: string[]): Promise<{
209
- entityName: string;
210
- removedTags: string[];
211
- }>;
212
- /**
213
- * Set importance level for an entity.
214
- *
215
- * @param entityName - Name of the entity
216
- * @param importance - Importance level (0-10)
217
- * @returns Result with entity name and importance
218
- * @throws {EntityNotFoundError} If entity is not found
219
- * @throws {Error} If importance is out of range
220
- */
221
- setImportance(entityName: string, importance: number): Promise<{
222
- entityName: string;
223
- importance: number;
224
- }>;
225
- /**
226
- * Add tags to multiple entities in a single operation.
227
- *
228
- * @param entityNames - Names of entities to tag
229
- * @param tags - Tags to add to each entity
230
- * @returns Array of results showing which tags were added to each entity
231
- */
232
- addTagsToMultipleEntities(entityNames: string[], tags: string[]): Promise<{
233
- entityName: string;
234
- addedTags: string[];
235
- }[]>;
236
- /**
237
- * Replace a tag with a new tag across all entities (rename tag).
238
- *
239
- * @param oldTag - Tag to replace
240
- * @param newTag - New tag value
241
- * @returns Result with affected entities and count
242
- */
243
- replaceTag(oldTag: string, newTag: string): Promise<{
244
- affectedEntities: string[];
245
- count: number;
246
- }>;
247
- /**
248
- * Merge two tags into one target tag across all entities.
249
- *
250
- * Combines tag1 and tag2 into targetTag. Any entity with either tag1 or tag2
251
- * will have both removed and targetTag added (if not already present).
252
- *
253
- * @param tag1 - First tag to merge
254
- * @param tag2 - Second tag to merge
255
- * @param targetTag - Target tag to merge into
256
- * @returns Object with affected entity names and count
257
- */
258
- mergeTags(tag1: string, tag2: string, targetTag: string): Promise<{
259
- affectedEntities: string[];
260
- count: number;
261
- }>;
262
- }
263
- //# sourceMappingURL=EntityManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../src/core/EntityManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD;;GAEG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;GAEG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0D3D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,WAAW,CACf,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,GACzD,OAAO,CAAC,MAAM,EAAE,CAAC;IAuCpB;;;;;;;;;OASG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAsBvG;;;;;;;OAOG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAoC5G;;;;;;;;OAQG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBhH;;;;;;OAMG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAiC9H;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBxG;;;;;;;;;;OAUG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAmCvH"}