agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1

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 (314) hide show
  1. package/dist/agentdb.min.js +4 -4
  2. package/dist/simulation/cli.js +0 -0
  3. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  4. package/dist/src/cli/agentdb-cli.js +78 -0
  5. package/dist/src/cli/agentdb-cli.js.map +1 -1
  6. package/package.json +3 -3
  7. package/src/cli/agentdb-cli.ts +78 -0
  8. package/dist/agentdb-advanced.js +0 -2110
  9. package/dist/agentdb-advanced.min.js +0 -1
  10. package/dist/backends/GraphBackend.d.ts +0 -196
  11. package/dist/backends/GraphBackend.d.ts.map +0 -1
  12. package/dist/backends/GraphBackend.js +0 -33
  13. package/dist/backends/GraphBackend.js.map +0 -1
  14. package/dist/backends/LearningBackend.d.ts +0 -148
  15. package/dist/backends/LearningBackend.d.ts.map +0 -1
  16. package/dist/backends/LearningBackend.js +0 -27
  17. package/dist/backends/LearningBackend.js.map +0 -1
  18. package/dist/backends/VectorBackend.d.ts +0 -119
  19. package/dist/backends/VectorBackend.d.ts.map +0 -1
  20. package/dist/backends/VectorBackend.js +0 -14
  21. package/dist/backends/VectorBackend.js.map +0 -1
  22. package/dist/backends/detector.d.ts +0 -81
  23. package/dist/backends/detector.d.ts.map +0 -1
  24. package/dist/backends/detector.js +0 -192
  25. package/dist/backends/detector.js.map +0 -1
  26. package/dist/backends/factory.d.ts +0 -50
  27. package/dist/backends/factory.d.ts.map +0 -1
  28. package/dist/backends/factory.js +0 -161
  29. package/dist/backends/factory.js.map +0 -1
  30. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  31. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  32. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  33. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  34. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  35. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  36. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  37. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  38. package/dist/backends/hnswlib/index.d.ts +0 -7
  39. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  40. package/dist/backends/hnswlib/index.js +0 -7
  41. package/dist/backends/hnswlib/index.js.map +0 -1
  42. package/dist/backends/index.d.ts +0 -14
  43. package/dist/backends/index.d.ts.map +0 -1
  44. package/dist/backends/index.js +0 -13
  45. package/dist/backends/index.js.map +0 -1
  46. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  47. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  48. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  49. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  50. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  51. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  52. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  53. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  54. package/dist/backends/ruvector/index.d.ts +0 -9
  55. package/dist/backends/ruvector/index.d.ts.map +0 -1
  56. package/dist/backends/ruvector/index.js +0 -8
  57. package/dist/backends/ruvector/index.js.map +0 -1
  58. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  59. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  60. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  61. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  62. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  63. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  64. package/dist/browser/AdvancedFeatures.js +0 -430
  65. package/dist/browser/AdvancedFeatures.js.map +0 -1
  66. package/dist/browser/HNSWIndex.d.ts +0 -117
  67. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  68. package/dist/browser/HNSWIndex.js +0 -402
  69. package/dist/browser/HNSWIndex.js.map +0 -1
  70. package/dist/browser/ProductQuantization.d.ts +0 -107
  71. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  72. package/dist/browser/ProductQuantization.js +0 -337
  73. package/dist/browser/ProductQuantization.js.map +0 -1
  74. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  75. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  76. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  77. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  78. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  79. package/dist/browser/browser/HNSWIndex.js +0 -402
  80. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  81. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  82. package/dist/browser/browser/ProductQuantization.js +0 -348
  83. package/dist/browser/browser/index.d.ts +0 -223
  84. package/dist/browser/browser/index.d.ts.map +0 -1
  85. package/dist/browser/browser/index.js +0 -233
  86. package/dist/browser/index.d.ts +0 -223
  87. package/dist/browser/index.d.ts.map +0 -1
  88. package/dist/browser/index.js +0 -225
  89. package/dist/browser/index.js.map +0 -1
  90. package/dist/cli/agentdb-cli.d.ts +0 -154
  91. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  92. package/dist/cli/agentdb-cli.js +0 -2273
  93. package/dist/cli/agentdb-cli.js.map +0 -1
  94. package/dist/cli/agentdb.db +0 -0
  95. package/dist/cli/commands/init.d.ts +0 -12
  96. package/dist/cli/commands/init.d.ts.map +0 -1
  97. package/dist/cli/commands/init.js +0 -115
  98. package/dist/cli/commands/init.js.map +0 -1
  99. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  100. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  101. package/dist/cli/commands/install-embeddings.js +0 -68
  102. package/dist/cli/commands/install-embeddings.js.map +0 -1
  103. package/dist/cli/commands/migrate.d.ts +0 -15
  104. package/dist/cli/commands/migrate.d.ts.map +0 -1
  105. package/dist/cli/commands/migrate.js +0 -425
  106. package/dist/cli/commands/migrate.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -10
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -129
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  112. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  113. package/dist/controllers/CausalMemoryGraph.js +0 -323
  114. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  115. package/dist/controllers/CausalRecall.d.ts +0 -139
  116. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  117. package/dist/controllers/CausalRecall.js +0 -356
  118. package/dist/controllers/CausalRecall.js.map +0 -1
  119. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  120. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  121. package/dist/controllers/ContextSynthesizer.js +0 -208
  122. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  123. package/dist/controllers/EmbeddingService.d.ts +0 -37
  124. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  125. package/dist/controllers/EmbeddingService.js +0 -136
  126. package/dist/controllers/EmbeddingService.js.map +0 -1
  127. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  128. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  129. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  130. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  131. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  132. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  133. package/dist/controllers/ExplainableRecall.js +0 -485
  134. package/dist/controllers/ExplainableRecall.js.map +0 -1
  135. package/dist/controllers/HNSWIndex.d.ts +0 -128
  136. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  137. package/dist/controllers/HNSWIndex.js +0 -361
  138. package/dist/controllers/HNSWIndex.js.map +0 -1
  139. package/dist/controllers/LearningSystem.d.ts +0 -195
  140. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  141. package/dist/controllers/LearningSystem.js +0 -929
  142. package/dist/controllers/LearningSystem.js.map +0 -1
  143. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  144. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  145. package/dist/controllers/MMRDiversityRanker.js +0 -130
  146. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  147. package/dist/controllers/MetadataFilter.d.ts +0 -70
  148. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  149. package/dist/controllers/MetadataFilter.js +0 -243
  150. package/dist/controllers/MetadataFilter.js.map +0 -1
  151. package/dist/controllers/NightlyLearner.d.ts +0 -114
  152. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  153. package/dist/controllers/NightlyLearner.js +0 -394
  154. package/dist/controllers/NightlyLearner.js.map +0 -1
  155. package/dist/controllers/QUICClient.d.ts +0 -109
  156. package/dist/controllers/QUICClient.d.ts.map +0 -1
  157. package/dist/controllers/QUICClient.js +0 -299
  158. package/dist/controllers/QUICClient.js.map +0 -1
  159. package/dist/controllers/QUICServer.d.ts +0 -121
  160. package/dist/controllers/QUICServer.d.ts.map +0 -1
  161. package/dist/controllers/QUICServer.js +0 -383
  162. package/dist/controllers/QUICServer.js.map +0 -1
  163. package/dist/controllers/ReasoningBank.d.ts +0 -196
  164. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  165. package/dist/controllers/ReasoningBank.js +0 -494
  166. package/dist/controllers/ReasoningBank.js.map +0 -1
  167. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  168. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  169. package/dist/controllers/ReflexionMemory.js +0 -521
  170. package/dist/controllers/ReflexionMemory.js.map +0 -1
  171. package/dist/controllers/SkillLibrary.d.ts +0 -149
  172. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  173. package/dist/controllers/SkillLibrary.js +0 -547
  174. package/dist/controllers/SkillLibrary.js.map +0 -1
  175. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  176. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  177. package/dist/controllers/SyncCoordinator.js +0 -441
  178. package/dist/controllers/SyncCoordinator.js.map +0 -1
  179. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  180. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  181. package/dist/controllers/WASMVectorSearch.js +0 -234
  182. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  183. package/dist/controllers/frontier-index.d.ts +0 -14
  184. package/dist/controllers/frontier-index.d.ts.map +0 -1
  185. package/dist/controllers/frontier-index.js +0 -10
  186. package/dist/controllers/frontier-index.js.map +0 -1
  187. package/dist/controllers/index.d.ts +0 -30
  188. package/dist/controllers/index.d.ts.map +0 -1
  189. package/dist/controllers/index.js +0 -18
  190. package/dist/controllers/index.js.map +0 -1
  191. package/dist/db-fallback.d.ts +0 -26
  192. package/dist/db-fallback.d.ts.map +0 -1
  193. package/dist/db-fallback.js +0 -264
  194. package/dist/db-fallback.js.map +0 -1
  195. package/dist/db-test.d.ts +0 -13
  196. package/dist/db-test.d.ts.map +0 -1
  197. package/dist/db-test.js +0 -55
  198. package/dist/db-test.js.map +0 -1
  199. package/dist/db-unified.d.ts +0 -76
  200. package/dist/db-unified.d.ts.map +0 -1
  201. package/dist/db-unified.js +0 -278
  202. package/dist/db-unified.js.map +0 -1
  203. package/dist/examples/quic-sync-example.d.ts +0 -9
  204. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  205. package/dist/examples/quic-sync-example.js +0 -169
  206. package/dist/examples/quic-sync-example.js.map +0 -1
  207. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  208. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  209. package/dist/examples/wasm-vector-usage.js +0 -190
  210. package/dist/examples/wasm-vector-usage.js.map +0 -1
  211. package/dist/index.d.ts +0 -28
  212. package/dist/index.d.ts.map +0 -1
  213. package/dist/index.js +0 -35
  214. package/dist/index.js.map +0 -1
  215. package/dist/malp/core/ccc.d.ts +0 -99
  216. package/dist/malp/core/ccc.d.ts.map +0 -1
  217. package/dist/malp/core/ccc.js +0 -181
  218. package/dist/malp/core/ccc.js.map +0 -1
  219. package/dist/malp/core/index.d.ts +0 -9
  220. package/dist/malp/core/index.d.ts.map +0 -1
  221. package/dist/malp/core/index.js +0 -9
  222. package/dist/malp/core/index.js.map +0 -1
  223. package/dist/malp/core/linalg.d.ts +0 -101
  224. package/dist/malp/core/linalg.d.ts.map +0 -1
  225. package/dist/malp/core/linalg.js +0 -278
  226. package/dist/malp/core/linalg.js.map +0 -1
  227. package/dist/malp/core/optimizer.d.ts +0 -68
  228. package/dist/malp/core/optimizer.d.ts.map +0 -1
  229. package/dist/malp/core/optimizer.js +0 -160
  230. package/dist/malp/core/optimizer.js.map +0 -1
  231. package/dist/malp/index.d.ts +0 -33
  232. package/dist/malp/index.d.ts.map +0 -1
  233. package/dist/malp/index.js +0 -37
  234. package/dist/malp/index.js.map +0 -1
  235. package/dist/malp/metrics/agreement.d.ts +0 -106
  236. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  237. package/dist/malp/metrics/agreement.js +0 -199
  238. package/dist/malp/metrics/agreement.js.map +0 -1
  239. package/dist/malp/metrics/comparison.d.ts +0 -93
  240. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  241. package/dist/malp/metrics/comparison.js +0 -256
  242. package/dist/malp/metrics/comparison.js.map +0 -1
  243. package/dist/malp/metrics/index.d.ts +0 -8
  244. package/dist/malp/metrics/index.d.ts.map +0 -1
  245. package/dist/malp/metrics/index.js +0 -8
  246. package/dist/malp/metrics/index.js.map +0 -1
  247. package/dist/malp/metrics/performance.d.ts +0 -61
  248. package/dist/malp/metrics/performance.d.ts.map +0 -1
  249. package/dist/malp/metrics/performance.js +0 -190
  250. package/dist/malp/metrics/performance.js.map +0 -1
  251. package/dist/malp/models/index.d.ts +0 -7
  252. package/dist/malp/models/index.d.ts.map +0 -1
  253. package/dist/malp/models/index.js +0 -7
  254. package/dist/malp/models/index.js.map +0 -1
  255. package/dist/malp/models/malp.d.ts +0 -116
  256. package/dist/malp/models/malp.d.ts.map +0 -1
  257. package/dist/malp/models/malp.js +0 -206
  258. package/dist/malp/models/malp.js.map +0 -1
  259. package/dist/malp/models/regressor.d.ts +0 -80
  260. package/dist/malp/models/regressor.d.ts.map +0 -1
  261. package/dist/malp/models/regressor.js +0 -229
  262. package/dist/malp/models/regressor.js.map +0 -1
  263. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  264. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  265. package/dist/malp/reasoningbank_validator.js +0 -246
  266. package/dist/malp/reasoningbank_validator.js.map +0 -1
  267. package/dist/malp/wasm_bindings.d.ts +0 -344
  268. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  269. package/dist/malp/wasm_bindings.js +0 -9
  270. package/dist/malp/wasm_bindings.js.map +0 -1
  271. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  272. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  273. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  274. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  275. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  276. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  277. package/dist/mcp/learning-tools-handlers.js +0 -105
  278. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  279. package/dist/optimizations/BatchOperations.d.ts +0 -109
  280. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  281. package/dist/optimizations/BatchOperations.js +0 -407
  282. package/dist/optimizations/BatchOperations.js.map +0 -1
  283. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  284. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  285. package/dist/optimizations/QueryOptimizer.js +0 -228
  286. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  287. package/dist/optimizations/ToolCache.d.ts +0 -137
  288. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  289. package/dist/optimizations/ToolCache.js +0 -281
  290. package/dist/optimizations/ToolCache.js.map +0 -1
  291. package/dist/optimizations/index.d.ts +0 -10
  292. package/dist/optimizations/index.d.ts.map +0 -1
  293. package/dist/optimizations/index.js +0 -8
  294. package/dist/optimizations/index.js.map +0 -1
  295. package/dist/security/input-validation.d.ts +0 -109
  296. package/dist/security/input-validation.d.ts.map +0 -1
  297. package/dist/security/input-validation.js +0 -398
  298. package/dist/security/input-validation.js.map +0 -1
  299. package/dist/security/limits.d.ts +0 -150
  300. package/dist/security/limits.d.ts.map +0 -1
  301. package/dist/security/limits.js +0 -288
  302. package/dist/security/limits.js.map +0 -1
  303. package/dist/security/path-security.d.ts +0 -100
  304. package/dist/security/path-security.d.ts.map +0 -1
  305. package/dist/security/path-security.js +0 -337
  306. package/dist/security/path-security.js.map +0 -1
  307. package/dist/security/validation.d.ts +0 -95
  308. package/dist/security/validation.d.ts.map +0 -1
  309. package/dist/security/validation.js +0 -315
  310. package/dist/security/validation.js.map +0 -1
  311. package/dist/types/quic.d.ts +0 -518
  312. package/dist/types/quic.d.ts.map +0 -1
  313. package/dist/types/quic.js +0 -272
  314. package/dist/types/quic.js.map +0 -1
@@ -1,521 +0,0 @@
1
- /**
2
- * ReflexionMemory - Episodic Replay Memory System
3
- *
4
- * Implements reflexion-style episodic replay for agent self-improvement.
5
- * Stores self-critiques and outcomes, retrieves relevant past experiences.
6
- *
7
- * Based on: "Reflexion: Language Agents with Verbal Reinforcement Learning"
8
- * https://arxiv.org/abs/2303.11366
9
- */
10
- export class ReflexionMemory {
11
- db;
12
- embedder;
13
- vectorBackend;
14
- learningBackend;
15
- graphBackend;
16
- constructor(db, embedder, vectorBackend, learningBackend, graphBackend) {
17
- this.db = db;
18
- this.embedder = embedder;
19
- this.vectorBackend = vectorBackend;
20
- this.learningBackend = learningBackend;
21
- this.graphBackend = graphBackend;
22
- }
23
- /**
24
- * Store a new episode with its critique and outcome
25
- */
26
- async storeEpisode(episode) {
27
- const stmt = this.db.prepare(`
28
- INSERT INTO episodes (
29
- session_id, task, input, output, critique, reward, success,
30
- latency_ms, tokens_used, tags, metadata
31
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
32
- `);
33
- const tags = episode.tags ? JSON.stringify(episode.tags) : null;
34
- const metadata = episode.metadata ? JSON.stringify(episode.metadata) : null;
35
- const result = stmt.run(episode.sessionId, episode.task, episode.input || null, episode.output || null, episode.critique || null, episode.reward, episode.success ? 1 : 0, episode.latencyMs || null, episode.tokensUsed || null, tags, metadata);
36
- const episodeId = result.lastInsertRowid;
37
- // Generate and store embedding
38
- const text = this.buildEpisodeText(episode);
39
- const embedding = await this.embedder.embed(text);
40
- // Use vector backend if available (150x faster retrieval)
41
- if (this.vectorBackend) {
42
- this.vectorBackend.insert(episodeId.toString(), embedding);
43
- }
44
- // Also store in SQL for fallback
45
- this.storeEmbedding(episodeId, embedding);
46
- // Create graph node for episode if graph backend available
47
- if (this.graphBackend) {
48
- await this.createEpisodeGraphNode(episodeId, episode, embedding);
49
- }
50
- // Add training sample if learning backend available
51
- if (this.learningBackend && episode.success !== undefined) {
52
- this.learningBackend.addSample({
53
- embedding,
54
- label: episode.success ? 1 : 0,
55
- weight: Math.abs(episode.reward),
56
- context: {
57
- task: episode.task,
58
- sessionId: episode.sessionId,
59
- latencyMs: episode.latencyMs,
60
- tokensUsed: episode.tokensUsed
61
- }
62
- });
63
- }
64
- return episodeId;
65
- }
66
- /**
67
- * Retrieve relevant past episodes for a new task attempt
68
- */
69
- async retrieveRelevant(query) {
70
- const { task, currentState = '', k = 5, minReward, onlyFailures = false, onlySuccesses = false, timeWindowDays } = query;
71
- // Generate query embedding
72
- const queryText = currentState ? `${task}\n${currentState}` : task;
73
- let queryEmbedding = await this.embedder.embed(queryText);
74
- // Enhance query with GNN if learning backend available
75
- if (this.learningBackend) {
76
- queryEmbedding = await this.enhanceQueryWithGNN(queryEmbedding, k);
77
- }
78
- // Use optimized vector backend if available (150x faster)
79
- if (this.vectorBackend) {
80
- // Get candidates from vector backend
81
- const searchResults = this.vectorBackend.search(queryEmbedding, k * 3, {
82
- threshold: 0.0
83
- });
84
- // Fetch full episode data from DB
85
- const episodeIds = searchResults.map(r => parseInt(r.id));
86
- if (episodeIds.length === 0) {
87
- return [];
88
- }
89
- const placeholders = episodeIds.map(() => '?').join(',');
90
- const stmt = this.db.prepare(`
91
- SELECT * FROM episodes
92
- WHERE id IN (${placeholders})
93
- `);
94
- const rows = stmt.all(...episodeIds);
95
- const episodeMap = new Map(rows.map(r => [r.id.toString(), r]));
96
- // Map results back with similarity scores and apply filters
97
- const episodes = [];
98
- for (const result of searchResults) {
99
- const row = episodeMap.get(result.id);
100
- if (!row)
101
- continue;
102
- // Apply additional filters
103
- if (minReward !== undefined && row.reward < minReward)
104
- continue;
105
- if (onlyFailures && row.success === 1)
106
- continue;
107
- if (onlySuccesses && row.success === 0)
108
- continue;
109
- if (timeWindowDays && row.ts < (Date.now() / 1000 - timeWindowDays * 86400))
110
- continue;
111
- episodes.push({
112
- id: row.id,
113
- ts: row.ts,
114
- sessionId: row.session_id,
115
- task: row.task,
116
- input: row.input,
117
- output: row.output,
118
- critique: row.critique,
119
- reward: row.reward,
120
- success: row.success === 1,
121
- latencyMs: row.latency_ms,
122
- tokensUsed: row.tokens_used,
123
- tags: row.tags ? JSON.parse(row.tags) : undefined,
124
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
125
- similarity: result.similarity
126
- });
127
- if (episodes.length >= k)
128
- break;
129
- }
130
- return episodes;
131
- }
132
- // Fallback to SQL-based similarity search
133
- const filters = [];
134
- const params = [];
135
- if (minReward !== undefined) {
136
- filters.push('e.reward >= ?');
137
- params.push(minReward);
138
- }
139
- if (onlyFailures) {
140
- filters.push('e.success = 0');
141
- }
142
- if (onlySuccesses) {
143
- filters.push('e.success = 1');
144
- }
145
- if (timeWindowDays) {
146
- filters.push('e.ts > strftime("%s", "now") - ?');
147
- params.push(timeWindowDays * 86400);
148
- }
149
- const whereClause = filters.length > 0 ? `WHERE ${filters.join(' AND ')}` : '';
150
- const stmt = this.db.prepare(`
151
- SELECT
152
- e.*,
153
- ee.embedding
154
- FROM episodes e
155
- JOIN episode_embeddings ee ON e.id = ee.episode_id
156
- ${whereClause}
157
- ORDER BY e.reward DESC
158
- `);
159
- const rows = stmt.all(...params);
160
- // Calculate similarities manually
161
- const episodes = rows.map(row => {
162
- const embedding = this.deserializeEmbedding(row.embedding);
163
- const similarity = this.cosineSimilarity(queryEmbedding, embedding);
164
- return {
165
- id: row.id,
166
- ts: row.ts,
167
- sessionId: row.session_id,
168
- task: row.task,
169
- input: row.input,
170
- output: row.output,
171
- critique: row.critique,
172
- reward: row.reward,
173
- success: row.success === 1,
174
- latencyMs: row.latency_ms,
175
- tokensUsed: row.tokens_used,
176
- tags: row.tags ? JSON.parse(row.tags) : undefined,
177
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
178
- embedding,
179
- similarity
180
- };
181
- });
182
- // Sort by similarity and return top-k
183
- episodes.sort((a, b) => (b.similarity || 0) - (a.similarity || 0));
184
- return episodes.slice(0, k);
185
- }
186
- /**
187
- * Get statistics for a task
188
- */
189
- getTaskStats(task, timeWindowDays) {
190
- const windowFilter = timeWindowDays
191
- ? `AND ts > strftime('%s', 'now') - ${timeWindowDays * 86400}`
192
- : '';
193
- const stmt = this.db.prepare(`
194
- SELECT
195
- COUNT(*) as total,
196
- AVG(CASE WHEN success = 1 THEN 1.0 ELSE 0.0 END) as success_rate,
197
- AVG(reward) as avg_reward,
198
- AVG(latency_ms) as avg_latency
199
- FROM episodes
200
- WHERE task = ? ${windowFilter}
201
- `);
202
- const stats = stmt.get(task);
203
- // Calculate improvement trend (recent vs older)
204
- const trendStmt = this.db.prepare(`
205
- SELECT
206
- AVG(CASE
207
- WHEN ts > strftime('%s', 'now') - ${7 * 86400} THEN reward
208
- END) as recent_reward,
209
- AVG(CASE
210
- WHEN ts <= strftime('%s', 'now') - ${7 * 86400} THEN reward
211
- END) as older_reward
212
- FROM episodes
213
- WHERE task = ? ${windowFilter}
214
- `);
215
- const trend = trendStmt.get(task);
216
- const improvementTrend = trend.recent_reward && trend.older_reward
217
- ? (trend.recent_reward - trend.older_reward) / trend.older_reward
218
- : 0;
219
- return {
220
- totalAttempts: stats.total || 0,
221
- successRate: stats.success_rate || 0,
222
- avgReward: stats.avg_reward || 0,
223
- avgLatency: stats.avg_latency || 0,
224
- improvementTrend
225
- };
226
- }
227
- /**
228
- * Build critique summary from similar failed episodes
229
- */
230
- async getCritiqueSummary(query) {
231
- const failures = await this.retrieveRelevant({
232
- ...query,
233
- onlyFailures: true,
234
- k: 3
235
- });
236
- if (failures.length === 0) {
237
- return 'No prior failures found for this task.';
238
- }
239
- const critiques = failures
240
- .filter(ep => ep.critique)
241
- .map((ep, i) => `${i + 1}. ${ep.critique} (reward: ${ep.reward.toFixed(2)})`)
242
- .join('\n');
243
- return `Prior failures and lessons learned:\n${critiques}`;
244
- }
245
- /**
246
- * Get successful strategies for a task
247
- */
248
- async getSuccessStrategies(query) {
249
- const successes = await this.retrieveRelevant({
250
- ...query,
251
- onlySuccesses: true,
252
- minReward: 0.7,
253
- k: 3
254
- });
255
- if (successes.length === 0) {
256
- return 'No successful strategies found for this task.';
257
- }
258
- const strategies = successes
259
- .map((ep, i) => {
260
- const approach = ep.output?.substring(0, 200) || 'No output recorded';
261
- return `${i + 1}. Approach (reward ${ep.reward.toFixed(2)}): ${approach}...`;
262
- })
263
- .join('\n');
264
- return `Successful strategies:\n${strategies}`;
265
- }
266
- /**
267
- * Get recent episodes for a session
268
- */
269
- async getRecentEpisodes(sessionId, limit = 10) {
270
- const stmt = this.db.prepare(`
271
- SELECT * FROM episodes
272
- WHERE session_id = ?
273
- ORDER BY ts DESC
274
- LIMIT ?
275
- `);
276
- const rows = stmt.all(sessionId, limit);
277
- return rows.map(row => ({
278
- id: row.id,
279
- ts: row.ts,
280
- sessionId: row.session_id,
281
- task: row.task,
282
- input: row.input,
283
- output: row.output,
284
- critique: row.critique,
285
- reward: row.reward,
286
- success: row.success === 1,
287
- latencyMs: row.latency_ms,
288
- tokensUsed: row.tokens_used,
289
- tags: row.tags ? JSON.parse(row.tags) : undefined,
290
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined
291
- }));
292
- }
293
- /**
294
- * Prune low-quality episodes based on TTL and quality threshold
295
- */
296
- pruneEpisodes(config) {
297
- const { minReward = 0.3, maxAgeDays = 30, keepMinPerTask = 5 } = config;
298
- // Keep high-reward episodes and minimum per task
299
- const stmt = this.db.prepare(`
300
- DELETE FROM episodes
301
- WHERE id IN (
302
- SELECT id FROM (
303
- SELECT
304
- id,
305
- reward,
306
- ts,
307
- ROW_NUMBER() OVER (PARTITION BY task ORDER BY reward DESC) as rank
308
- FROM episodes
309
- WHERE reward < ?
310
- AND ts < strftime('%s', 'now') - ?
311
- ) WHERE rank > ?
312
- )
313
- `);
314
- const result = stmt.run(minReward, maxAgeDays * 86400, keepMinPerTask);
315
- return result.changes;
316
- }
317
- // ========================================================================
318
- // Private Helper Methods
319
- // ========================================================================
320
- buildEpisodeText(episode) {
321
- const parts = [episode.task];
322
- if (episode.critique)
323
- parts.push(episode.critique);
324
- if (episode.output)
325
- parts.push(episode.output);
326
- return parts.join('\n');
327
- }
328
- storeEmbedding(episodeId, embedding) {
329
- const stmt = this.db.prepare(`
330
- INSERT INTO episode_embeddings (episode_id, embedding)
331
- VALUES (?, ?)
332
- `);
333
- stmt.run(episodeId, this.serializeEmbedding(embedding));
334
- }
335
- serializeEmbedding(embedding) {
336
- // Handle empty/null embeddings
337
- if (!embedding || !embedding.buffer) {
338
- return Buffer.alloc(0);
339
- }
340
- return Buffer.from(embedding.buffer);
341
- }
342
- deserializeEmbedding(buffer) {
343
- return new Float32Array(buffer.buffer, buffer.byteOffset, buffer.length / 4);
344
- }
345
- cosineSimilarity(a, b) {
346
- let dotProduct = 0;
347
- let normA = 0;
348
- let normB = 0;
349
- for (let i = 0; i < a.length; i++) {
350
- dotProduct += a[i] * b[i];
351
- normA += a[i] * a[i];
352
- normB += b[i] * b[i];
353
- }
354
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
355
- }
356
- // ========================================================================
357
- // GNN and Graph Integration Methods
358
- // ========================================================================
359
- /**
360
- * Create graph node for episode with relationships
361
- */
362
- async createEpisodeGraphNode(episodeId, episode, embedding) {
363
- if (!this.graphBackend)
364
- return;
365
- // Create episode node
366
- const nodeId = await this.graphBackend.createNode(['Episode', episode.success ? 'Success' : 'Failure'], {
367
- episodeId,
368
- sessionId: episode.sessionId,
369
- task: episode.task,
370
- reward: episode.reward,
371
- success: episode.success,
372
- timestamp: episode.ts || Date.now(),
373
- latencyMs: episode.latencyMs,
374
- tokensUsed: episode.tokensUsed
375
- });
376
- // Find similar episodes using graph vector search
377
- const similarEpisodes = await this.graphBackend.vectorSearch(embedding, 5, nodeId);
378
- // Create similarity relationships to similar episodes
379
- for (const similar of similarEpisodes) {
380
- if (similar.id !== nodeId && similar.properties.episodeId !== episodeId) {
381
- await this.graphBackend.createRelationship(nodeId, similar.id, 'SIMILAR_TO', {
382
- similarity: this.cosineSimilarity(embedding, similar.embedding || new Float32Array()),
383
- createdAt: Date.now()
384
- });
385
- }
386
- }
387
- // Create session relationship
388
- const sessionNodes = await this.graphBackend.execute('MATCH (s:Session {sessionId: $sessionId}) RETURN s', { sessionId: episode.sessionId });
389
- let sessionNodeId;
390
- if (sessionNodes.rows.length === 0) {
391
- // Create session node if doesn't exist
392
- sessionNodeId = await this.graphBackend.createNode(['Session'], {
393
- sessionId: episode.sessionId,
394
- startTime: episode.ts || Date.now()
395
- });
396
- }
397
- else {
398
- sessionNodeId = sessionNodes.rows[0].s.id;
399
- }
400
- await this.graphBackend.createRelationship(nodeId, sessionNodeId, 'BELONGS_TO_SESSION', { timestamp: episode.ts || Date.now() });
401
- // If episode has critique, create causal relationship to previous failures
402
- if (episode.critique && !episode.success) {
403
- const previousFailures = await this.graphBackend.execute(`MATCH (e:Episode:Failure {sessionId: $sessionId})
404
- WHERE e.timestamp < $timestamp
405
- RETURN e
406
- ORDER BY e.timestamp DESC
407
- LIMIT 3`, { sessionId: episode.sessionId, timestamp: episode.ts || Date.now() });
408
- for (const prevFailure of previousFailures.rows) {
409
- await this.graphBackend.createRelationship(nodeId, prevFailure.e.id, 'LEARNED_FROM', {
410
- critique: episode.critique,
411
- improvementAttempt: true
412
- });
413
- }
414
- }
415
- }
416
- /**
417
- * Enhance query embedding using GNN attention mechanism
418
- */
419
- async enhanceQueryWithGNN(queryEmbedding, k) {
420
- if (!this.learningBackend || !this.vectorBackend) {
421
- return queryEmbedding;
422
- }
423
- try {
424
- // Get initial neighbors
425
- const initialResults = this.vectorBackend.search(queryEmbedding, k * 2, {
426
- threshold: 0.0
427
- });
428
- if (initialResults.length === 0) {
429
- return queryEmbedding;
430
- }
431
- // Fetch neighbor embeddings
432
- const neighborEmbeddings = [];
433
- const weights = [];
434
- const episodeIds = initialResults.map(r => r.id);
435
- const placeholders = episodeIds.map(() => '?').join(',');
436
- const episodes = this.db.prepare(`
437
- SELECT ee.embedding, e.reward
438
- FROM episode_embeddings ee
439
- JOIN episodes e ON e.id = ee.episode_id
440
- WHERE ee.episode_id IN (${placeholders})
441
- `).all(...episodeIds);
442
- for (const ep of episodes) {
443
- const embedding = this.deserializeEmbedding(ep.embedding);
444
- neighborEmbeddings.push(embedding);
445
- // Use reward as weight (higher reward = more important)
446
- weights.push(Math.max(0.1, ep.reward));
447
- }
448
- // Enhance query using GNN
449
- const enhanced = this.learningBackend.enhance(queryEmbedding, neighborEmbeddings, weights);
450
- return enhanced;
451
- }
452
- catch (error) {
453
- console.warn('[ReflexionMemory] GNN enhancement failed:', error);
454
- return queryEmbedding;
455
- }
456
- }
457
- /**
458
- * Get graph-based episode relationships
459
- */
460
- async getEpisodeRelationships(episodeId) {
461
- if (!this.graphBackend) {
462
- return { similar: [], session: '', learnedFrom: [] };
463
- }
464
- const result = await this.graphBackend.execute(`MATCH (e:Episode {episodeId: $episodeId})
465
- OPTIONAL MATCH (e)-[:SIMILAR_TO]->(similar:Episode)
466
- OPTIONAL MATCH (e)-[:BELONGS_TO_SESSION]->(s:Session)
467
- OPTIONAL MATCH (e)-[:LEARNED_FROM]->(learned:Episode)
468
- RETURN e, collect(DISTINCT similar.episodeId) as similar,
469
- s.sessionId as session,
470
- collect(DISTINCT learned.episodeId) as learnedFrom`, { episodeId });
471
- if (result.rows.length === 0) {
472
- return { similar: [], session: '', learnedFrom: [] };
473
- }
474
- const row = result.rows[0];
475
- return {
476
- similar: (row.similar || []).filter((id) => id != null),
477
- session: row.session || '',
478
- learnedFrom: (row.learnedFrom || []).filter((id) => id != null)
479
- };
480
- }
481
- /**
482
- * Train GNN model on accumulated samples
483
- */
484
- async trainGNN(options) {
485
- if (!this.learningBackend) {
486
- console.warn('[ReflexionMemory] No learning backend available for training');
487
- return;
488
- }
489
- const stats = this.learningBackend.getStats();
490
- if (stats.samplesCollected < 10) {
491
- console.warn('[ReflexionMemory] Not enough samples for training (need at least 10)');
492
- return;
493
- }
494
- const result = await this.learningBackend.train(options);
495
- console.log('[ReflexionMemory] GNN training complete:', {
496
- epochs: result.epochs,
497
- finalLoss: result.finalLoss.toFixed(4),
498
- improvement: `${(result.improvement * 100).toFixed(1)}%`,
499
- duration: `${result.duration}ms`
500
- });
501
- }
502
- /**
503
- * Get learning backend statistics
504
- */
505
- getLearningStats() {
506
- if (!this.learningBackend) {
507
- return null;
508
- }
509
- return this.learningBackend.getStats();
510
- }
511
- /**
512
- * Get graph backend statistics
513
- */
514
- getGraphStats() {
515
- if (!this.graphBackend) {
516
- return null;
517
- }
518
- return this.graphBackend.getStats();
519
- }
520
- }
521
- //# sourceMappingURL=ReflexionMemory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReflexionMemory.js","sourceRoot":"","sources":["../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH,MAAM,OAAO,eAAe;IAClB,EAAE,CAAW;IACb,QAAQ,CAAmB;IAC3B,aAAa,CAAiB;IAC9B,eAAe,CAAmB;IAClC,YAAY,CAAgB;IAEpC,YACE,EAAY,EACZ,QAA0B,EAC1B,aAA6B,EAC7B,eAAiC,EACjC,YAA2B;QAE3B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAgB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACrB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,IAAI,IAAI,EACrB,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,QAAQ,IAAI,IAAI,EACxB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,SAAS,IAAI,IAAI,EACzB,OAAO,CAAC,UAAU,IAAI,IAAI,EAC1B,IAAI,EACJ,QAAQ,CACT,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,eAAyB,CAAC;QAEnD,+BAA+B;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE1C,2DAA2D;QAC3D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC;QAED,oDAAoD;QACpD,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;gBAC7B,SAAS;gBACT,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChC,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAqB;QAC1C,MAAM,EACJ,IAAI,EACJ,YAAY,GAAG,EAAE,EACjB,CAAC,GAAG,CAAC,EACL,SAAS,EACT,YAAY,GAAG,KAAK,EACpB,aAAa,GAAG,KAAK,EACrB,cAAc,EACf,GAAG,KAAK,CAAC;QAEV,2BAA2B;QAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE1D,uDAAuD;QACvD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,qCAAqC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE;gBACrE,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,kCAAkC;YAClC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;uBAEZ,YAAY;OAC5B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAU,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhE,4DAA4D;YAC5D,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAE5C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG;oBAAE,SAAS;gBAEnB,2BAA2B;gBAC3B,IAAI,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS;oBAAE,SAAS;gBAChE,IAAI,YAAY,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC;oBAAE,SAAS;gBAChD,IAAI,aAAa,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC;oBAAE,SAAS;gBACjD,IAAI,cAAc,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,cAAc,GAAG,KAAK,CAAC;oBAAE,SAAS;gBAEtF,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;oBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,UAAU,EAAE,GAAG,CAAC,WAAW;oBAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACjD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7D,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;oBAAE,MAAM;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,0CAA0C;QAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/E,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;QAMzB,WAAW;;KAEd,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAU,CAAC;QAE1C,kCAAkC;QAClC,MAAM,QAAQ,GAA2B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAEpE,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;gBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,SAAS;gBACT,UAAU;aACX,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,sCAAsC;QACtC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY,EAAE,cAAuB;QAOhD,MAAM,YAAY,GAAG,cAAc;YACjC,CAAC,CAAC,oCAAoC,cAAc,GAAG,KAAK,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;uBAOV,YAAY;KAC9B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,CAAC;QAEpC,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;8CAGQ,CAAC,GAAG,KAAK;;;+CAGR,CAAC,GAAG,KAAK;;;uBAGjC,YAAY;KAC9B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAQ,CAAC;QACzC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY;YAChE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY;YACjE,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YAC/B,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;YACpC,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;YAChC,UAAU,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;YAClC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAqB;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC3C,GAAG,KAAK;YACR,YAAY,EAAE,IAAI;YAClB,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,wCAAwC,CAAC;QAClD,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ;aACvB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;aACzB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;aAC5E,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,wCAAwC,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAqB;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC5C,GAAG,KAAK;YACR,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,GAAG;YACd,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,+CAA+C,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,SAAS;aACzB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,oBAAoB,CAAC;YACtE,OAAO,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,KAAK,CAAC;QAC/E,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,2BAA2B,UAAU,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,QAAgB,EAAE;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC;QAEjD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;YAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACjD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAIb;QACC,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,EAAE,cAAc,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;QAExE,iDAAiD;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;KAc5B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,KAAK,EAAE,cAAc,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,2EAA2E;IAC3E,yBAAyB;IACzB,2EAA2E;IAEnE,gBAAgB,CAAC,OAAgB;QACvC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,cAAc,CAAC,SAAiB,EAAE,SAAuB;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,kBAAkB,CAAC,SAAuB;QAChD,+BAA+B;QAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEO,oBAAoB,CAAC,MAAc;QACzC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEO,gBAAgB,CAAC,CAAe,EAAE,CAAe;QACvD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,2EAA2E;IAC3E,oCAAoC;IACpC,2EAA2E;IAE3E;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAClC,SAAiB,EACjB,OAAgB,EAChB,SAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EACpD;YACE,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CACF,CAAC;QAEF,kDAAkD;QAClD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAEnF,sDAAsD;QACtD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACxE,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CACxC,MAAM,EACN,OAAO,CAAC,EAAE,EACV,YAAY,EACZ;oBACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAC/B,SAAS,EACT,OAAO,CAAC,SAAS,IAAI,IAAI,YAAY,EAAE,CACxC;oBACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAClD,oDAAoD,EACpD,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACjC,CAAC;QAEF,IAAI,aAAqB,CAAC;QAC1B,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,uCAAuC;YACvC,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAChD,CAAC,SAAS,CAAC,EACX;gBACE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;aACpC,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CACxC,MAAM,EACN,aAAa,EACb,oBAAoB,EACpB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CACxC,CAAC;QAEF,2EAA2E;QAC3E,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CACtD;;;;iBAIS,EACT,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CACtE,CAAC;YAEF,KAAK,MAAM,WAAW,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CACxC,MAAM,EACN,WAAW,CAAC,CAAC,CAAC,EAAE,EAChB,cAAc,EACd;oBACE,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,kBAAkB,EAAE,IAAI;iBACzB,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,cAA4B,EAC5B,CAAS;QAET,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjD,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE;gBACtE,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,cAAc,CAAC;YACxB,CAAC;YAED,4BAA4B;YAC5B,MAAM,kBAAkB,GAAmB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;kCAIL,YAAY;OACvC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAU,CAAC;YAE/B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC1D,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,wDAAwD;gBACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAC3C,cAAc,EACd,kBAAkB,EAClB,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,SAAiB;QAK7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC5C;;;;;;iEAM2D,EAC3D,EAAE,SAAS,EAAE,CACd,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC;YAC5D,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;YAC1B,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC;SACrE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAA6B;QAC1C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE;YACtD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACxD,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;CACF"}