diff --git a/.env.example b/.env.example
index 35abc3608cd..7b3137b9b85 100644
--- a/.env.example
+++ b/.env.example
@@ -37,10 +37,6 @@ SMALL_OLLAMA_MODEL=         #default llama3.2
 MEDIUM_OLLAMA_MODEL=        #default herems3
 LARGE_OLLAMA_MODEL=         #default hermes3:70b
 
-#to still use the original LOCALLLAMA provider but with ollama
-LOCAL_LLAMA_PROVIDER= #"OLLAMA" #Leave blank for LLAMA-CPP or add OLLAMA
-
-
 # For asking Claude stuff
 ANTHROPIC_API_KEY=
 
diff --git a/docs/README_CN.md b/docs/README_CN.md
index 6ef2ffb2e0a..5a4bfe5c0d3 100644
--- a/docs/README_CN.md
+++ b/docs/README_CN.md
@@ -30,7 +30,7 @@
 
 ### 编辑.env文件
 
-- -   将 .env.example 复制为 .env 并填写适当的值
+- - 将 .env.example 复制为 .env 并填写适当的值
 - 编辑推特环境并输入你的推特账号和密码
 
 ### 编辑角色文件
diff --git a/docs/api/classes/AgentRuntime.md b/docs/api/classes/AgentRuntime.md
index d9350777fe3..87f1617f6b5 100644
--- a/docs/api/classes/AgentRuntime.md
+++ b/docs/api/classes/AgentRuntime.md
@@ -47,13 +47,19 @@ Optional custom actions.
 
 Optional custom evaluators.
 
+• **opts.plugins?**: [`Plugin`](../type-aliases/Plugin.md)[]
+
 • **opts.providers?**: [`Provider`](../interfaces/Provider.md)[]
 
 Optional context providers.
 
-• **opts.imageGenModel?**: [`ImageGenModel`](../enumerations/ImageGenModel.md)
+• **opts.modelProvider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
+
+• **opts.services?**: [`Service`](Service.md)[]
 
-• **opts.modelProvider**: [`ModelProvider`](../enumerations/ModelProvider.md)
+Optional custom services.
+
+• **opts.managers?**: [`IMemoryManager`](../interfaces/IMemoryManager.md)[]
 
 • **opts.databaseAdapter**: [`IDatabaseAdapter`](../interfaces/IDatabaseAdapter.md)
 
@@ -71,7 +77,7 @@ Custom fetch function to use for making requests.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:189](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L189)
+[packages/core/src/runtime.ts:192](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L192)
 
 ## Properties
 
@@ -87,9 +93,9 @@ The ID of the agent
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:73](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L73)
+[packages/core/src/runtime.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L59)
 
-***
+---
 
 ### serverUrl
 
@@ -103,9 +109,9 @@ The base URL of the server where the agent's requests are processed.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:77](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L77)
+[packages/core/src/runtime.ts:63](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L63)
 
-***
+---
 
 ### databaseAdapter
 
@@ -119,9 +125,9 @@ The database adapter used for interacting with the database.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:82](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L82)
+[packages/core/src/runtime.ts:68](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L68)
 
-***
+---
 
 ### token
 
@@ -135,9 +141,9 @@ Authentication token used for securing requests.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L87)
+[packages/core/src/runtime.ts:73](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L73)
 
-***
+---
 
 ### actions
 
@@ -151,9 +157,9 @@ Custom actions that the agent can perform.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:92](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L92)
+[packages/core/src/runtime.ts:78](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L78)
 
-***
+---
 
 ### evaluators
 
@@ -161,11 +167,15 @@ Custom actions that the agent can perform.
 
 Evaluators used to assess and guide the agent's responses.
 
+#### Implementation of
+
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`evaluators`](../interfaces/IAgentRuntime.md#evaluators)
+
 #### Defined in
 
-[packages/core/src/core/runtime.ts:97](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L97)
+[packages/core/src/runtime.ts:83](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L83)
 
-***
+---
 
 ### providers
 
@@ -179,13 +189,13 @@ Context providers used to provide context for message generation.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:102](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L102)
+[packages/core/src/runtime.ts:88](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L88)
 
-***
+---
 
 ### modelProvider
 
-> **modelProvider**: [`ModelProvider`](../enumerations/ModelProvider.md) = `ModelProvider.LLAMALOCAL`
+> **modelProvider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
 
 The model to use for generateText.
 
@@ -195,269 +205,257 @@ The model to use for generateText.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:107](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L107)
+[packages/core/src/runtime.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L93)
 
-***
+---
+
+### fetch()
 
-### imageGenModel
+> **fetch**: (`input`, `init`?) => `Promise`\<`Response`\>(`input`, `init`?) => `Promise`\<`Response`\>
 
-> **imageGenModel**: [`ImageGenModel`](../enumerations/ImageGenModel.md) = `ImageGenModel.TogetherAI`
+Fetch function to use
+Some environments may not have access to the global fetch function and need a custom fetch override.
 
-The model to use for image generation.
+[MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch)
 
-#### Implementation of
+#### Parameters
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`imageGenModel`](../interfaces/IAgentRuntime.md#imagegenmodel)
+• **input**: `RequestInfo` \| `URL`
 
-#### Defined in
+• **init?**: `RequestInit`
 
-[packages/core/src/core/runtime.ts:112](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L112)
+#### Returns
 
-***
+`Promise`\<`Response`\>
 
-### llamaService
+#### Parameters
 
-> **llamaService**: `LlamaService` = `null`
+• **input**: `string` \| `Request` \| `URL`
 
-Local Llama if no OpenAI key is present
+• **init?**: `RequestInit`
 
-#### Implementation of
+#### Returns
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`llamaService`](../interfaces/IAgentRuntime.md#llamaservice)
+`Promise`\<`Response`\>
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:117](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L117)
+[packages/core/src/runtime.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L99)
+
+---
 
-***
+### character
 
-### speechService
+> **character**: [`Character`](../type-aliases/Character.md)
 
-> **speechService**: [`ISpeechService`](../interfaces/ISpeechService.md)
+The character to use for the agent
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`speechService`](../interfaces/IAgentRuntime.md#speechservice)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`character`](../interfaces/IAgentRuntime.md#character)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L120)
+[packages/core/src/runtime.ts:104](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L104)
 
-***
+---
 
-### transcriptionService
+### messageManager
 
-> **transcriptionService**: [`ITranscriptionService`](../interfaces/ITranscriptionService.md)
+> **messageManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+
+Store messages that are sent and received by the agent.
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`transcriptionService`](../interfaces/IAgentRuntime.md#transcriptionservice)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`messageManager`](../interfaces/IAgentRuntime.md#messagemanager)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:122](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L122)
+[packages/core/src/runtime.ts:109](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L109)
+
+---
 
-***
+### descriptionManager
 
-### imageDescriptionService
+> **descriptionManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-> **imageDescriptionService**: [`IImageRecognitionService`](../interfaces/IImageRecognitionService.md)
+Store and recall descriptions of users based on conversations.
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`imageDescriptionService`](../interfaces/IAgentRuntime.md#imagedescriptionservice)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`descriptionManager`](../interfaces/IAgentRuntime.md#descriptionmanager)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:124](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L124)
+[packages/core/src/runtime.ts:114](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L114)
 
-***
+---
 
-### browserService
+### loreManager
+
+> **loreManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-> **browserService**: [`IBrowserService`](../interfaces/IBrowserService.md)
+Manage the creation and recall of static information (documents, historical game lore, etc)
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`browserService`](../interfaces/IAgentRuntime.md#browserservice)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`loreManager`](../interfaces/IAgentRuntime.md#loremanager)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:126](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L126)
-
-***
+[packages/core/src/runtime.ts:119](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L119)
 
-### videoService
+---
 
-> **videoService**: [`IVideoService`](../interfaces/IVideoService.md)
+### documentsManager
 
-#### Implementation of
+> **documentsManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`videoService`](../interfaces/IAgentRuntime.md#videoservice)
+Hold large documents that can be referenced
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:128](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L128)
+[packages/core/src/runtime.ts:124](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L124)
 
-***
+---
 
-### pdfService
-
-> **pdfService**: [`IPdfService`](../interfaces/IPdfService.md)
+### fragmentsManager
 
-#### Implementation of
+> **fragmentsManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`pdfService`](../interfaces/IAgentRuntime.md#pdfservice)
+Searchable document fragments
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:130](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L130)
+[packages/core/src/runtime.ts:129](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L129)
 
-***
+---
 
-### fetch()
+### services
 
-> **fetch**: (`input`, `init`?) => `Promise`\<`Response`\>(`input`, `init`?) => `Promise`\<`Response`\>
-
-Fetch function to use
-Some environments may not have access to the global fetch function and need a custom fetch override.
+> **services**: `Map`\<[`ServiceType`](../enumerations/ServiceType.md), [`Service`](Service.md)\>
 
-[MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch)
-
-#### Parameters
+#### Implementation of
 
-• **input**: `RequestInfo` \| `URL`
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`services`](../interfaces/IAgentRuntime.md#services)
 
-• **init?**: `RequestInit`
+#### Defined in
 
-#### Returns
+[packages/core/src/runtime.ts:131](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L131)
 
-`Promise`\<`Response`\>
+---
 
-#### Parameters
+### memoryManagers
 
-• **input**: `string` \| `Request` \| `URL`
+> **memoryManagers**: `Map`\<`string`, [`IMemoryManager`](../interfaces/IMemoryManager.md)\>
 
-• **init?**: `RequestInit`
+#### Defined in
 
-#### Returns
+[packages/core/src/runtime.ts:132](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L132)
 
-`Promise`\<`Response`\>
+## Methods
 
-#### Defined in
+### registerMemoryManager()
 
-[packages/core/src/core/runtime.ts:136](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L136)
+> **registerMemoryManager**(`manager`): `void`
 
-***
+#### Parameters
 
-### character
+• **manager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-> **character**: [`Character`](../type-aliases/Character.md)
+#### Returns
 
-The character to use for the agent
+`void`
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`character`](../interfaces/IAgentRuntime.md#character)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`registerMemoryManager`](../interfaces/IAgentRuntime.md#registermemorymanager)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:141](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L141)
-
-***
-
-### messageManager
-
-> **messageManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
-
-Store messages that are sent and received by the agent.
-
-#### Implementation of
+[packages/core/src/runtime.ts:134](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L134)
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`messageManager`](../interfaces/IAgentRuntime.md#messagemanager)
+---
 
-#### Defined in
+### getMemoryManager()
 
-[packages/core/src/core/runtime.ts:146](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L146)
+> **getMemoryManager**(`tableName`): [`IMemoryManager`](../interfaces/IMemoryManager.md)
 
-***
+#### Parameters
 
-### descriptionManager
+• **tableName**: `string`
 
-> **descriptionManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+#### Returns
 
-Store and recall descriptions of users based on conversations.
+[`IMemoryManager`](../interfaces/IMemoryManager.md)
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`descriptionManager`](../interfaces/IAgentRuntime.md#descriptionmanager)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`getMemoryManager`](../interfaces/IAgentRuntime.md#getmemorymanager)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:151](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L151)
-
-***
-
-### factManager
+[packages/core/src/runtime.ts:149](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L149)
 
-> **factManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+---
 
-Manage the fact and recall of facts.
+### getService()
 
-#### Implementation of
-
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`factManager`](../interfaces/IAgentRuntime.md#factmanager)
+> **getService**\<`T`\>(`service`): `T`
 
-#### Defined in
+#### Type Parameters
 
-[packages/core/src/core/runtime.ts:156](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L156)
+• **T**
 
-***
+#### Parameters
 
-### loreManager
+• **service**: [`ServiceType`](../enumerations/ServiceType.md)
 
-> **loreManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+#### Returns
 
-Manage the creation and recall of static information (documents, historical game lore, etc)
+`T`
 
 #### Implementation of
 
-[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`loreManager`](../interfaces/IAgentRuntime.md#loremanager)
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`getService`](../interfaces/IAgentRuntime.md#getservice)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:161](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L161)
-
-***
+[packages/core/src/runtime.ts:153](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L153)
 
-### documentsManager
+---
 
-> **documentsManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+### registerService()
 
-Hold large documents that can be referenced
+> **registerService**(`service`): `void`
 
-#### Defined in
+#### Parameters
 
-[packages/core/src/core/runtime.ts:166](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L166)
+• **service**: [`Service`](Service.md)
 
-***
+#### Returns
 
-### fragmentsManager
+`void`
 
-> **fragmentsManager**: [`IMemoryManager`](../interfaces/IMemoryManager.md)
+#### Implementation of
 
-Searchable document fragments
+[`IAgentRuntime`](../interfaces/IAgentRuntime.md).[`registerService`](../interfaces/IAgentRuntime.md#registerservice)
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:171](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L171)
+[packages/core/src/runtime.ts:161](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L161)
 
-## Methods
+---
 
 ### getSetting()
 
 > **getSetting**(`key`): `any`
 
+Processes character knowledge by creating document memories and fragment memories.
+This function takes an array of knowledge items, creates a document memory for each item if it doesn't exist,
+then chunks the content into fragments, embeds each fragment, and creates fragment memories.
+
 #### Parameters
 
 • **key**: `string`
@@ -472,9 +470,9 @@ Searchable document fragments
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:392](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L392)
+[packages/core/src/runtime.ts:371](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L371)
 
-***
+---
 
 ### getConversationLength()
 
@@ -494,9 +492,9 @@ The number of recent messages to be kept in memory.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:414](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L414)
+[packages/core/src/runtime.ts:393](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L393)
 
-***
+---
 
 ### registerAction()
 
@@ -520,9 +518,9 @@ The action to register.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:422](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L422)
+[packages/core/src/runtime.ts:401](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L401)
 
-***
+---
 
 ### registerEvaluator()
 
@@ -542,9 +540,9 @@ The evaluator to register.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:431](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L431)
+[packages/core/src/runtime.ts:410](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L410)
 
-***
+---
 
 ### registerContextProvider()
 
@@ -564,9 +562,9 @@ The context provider to register.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:439](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L439)
+[packages/core/src/runtime.ts:418](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L418)
 
-***
+---
 
 ### processActions()
 
@@ -596,9 +594,9 @@ The message to process.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:448](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L448)
+[packages/core/src/runtime.ts:427](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L427)
 
-***
+---
 
 ### evaluate()
 
@@ -628,9 +626,9 @@ The results of the evaluation.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:520](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L520)
+[packages/core/src/runtime.ts:499](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L499)
 
-***
+---
 
 ### ensureParticipantExists()
 
@@ -660,9 +658,9 @@ An error if the participant cannot be added.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:586](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L586)
+[packages/core/src/runtime.ts:565](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L565)
 
-***
+---
 
 ### ensureUserExists()
 
@@ -696,9 +694,9 @@ The user name to ensure the existence of.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:602](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L602)
+[packages/core/src/runtime.ts:581](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L581)
 
-***
+---
 
 ### ensureParticipantInRoom()
 
@@ -720,9 +718,9 @@ The user name to ensure the existence of.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:622](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L622)
+[packages/core/src/runtime.ts:601](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L601)
 
-***
+---
 
 ### ensureConnection()
 
@@ -750,9 +748,9 @@ The user name to ensure the existence of.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:633](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L633)
+[packages/core/src/runtime.ts:612](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L612)
 
-***
+---
 
 ### ensureRoomExists()
 
@@ -781,9 +779,9 @@ An error if the room cannot be created.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:669](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L669)
+[packages/core/src/runtime.ts:648](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L648)
 
-***
+---
 
 ### composeState()
 
@@ -811,9 +809,9 @@ The state of the agent.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:682](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L682)
+[packages/core/src/runtime.ts:661](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L661)
 
-***
+---
 
 ### updateRecentMessageState()
 
@@ -833,4 +831,4 @@ The state of the agent.
 
 #### Defined in
 
-[packages/core/src/core/runtime.ts:1155](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/runtime.ts#L1155)
+[packages/core/src/runtime.ts:1094](https://github.com/ai16z/eliza/blob/main/packages/core/src/runtime.ts#L1094)
diff --git a/docs/api/classes/DatabaseAdapter.md b/docs/api/classes/DatabaseAdapter.md
index 660744fc162..a6a02a606ad 100644
--- a/docs/api/classes/DatabaseAdapter.md
+++ b/docs/api/classes/DatabaseAdapter.md
@@ -3,11 +3,6 @@
 An abstract class representing a database adapter for managing various entities
 like accounts, memories, actors, goals, and rooms.
 
-## Extended by
-
-- [`PostgresDatabaseAdapter`](PostgresDatabaseAdapter.md)
-- [`SqliteDatabaseAdapter`](SqliteDatabaseAdapter.md)
-
 ## Implements
 
 - [`IDatabaseAdapter`](../interfaces/IDatabaseAdapter.md)
@@ -36,7 +31,7 @@ The database instance.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:21](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L21)
+[packages/core/src/database.ts:21](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L21)
 
 ## Methods
 
@@ -64,9 +59,9 @@ A Promise that resolves to the Account object or null if not found.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L27)
+[packages/core/src/database.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L27)
 
-***
+---
 
 ### createAccount()
 
@@ -92,9 +87,9 @@ A Promise that resolves when the account creation is complete.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L34)
+[packages/core/src/database.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L34)
 
-***
+---
 
 ### getMemories()
 
@@ -128,9 +123,9 @@ A Promise that resolves to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:41](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L41)
+[packages/core/src/database.ts:41](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L41)
 
-***
+---
 
 ### getMemoriesByRoomIds()
 
@@ -156,9 +151,9 @@ A Promise that resolves to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:48](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L48)
+[packages/core/src/database.ts:48](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L48)
 
-***
+---
 
 ### getMemoryById()
 
@@ -178,9 +173,9 @@ A Promise that resolves to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L54)
+[packages/core/src/database.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L54)
 
-***
+---
 
 ### getCachedEmbeddings()
 
@@ -194,17 +189,17 @@ Retrieves cached embeddings based on the specified query parameters.
 
 An object containing parameters for the embedding retrieval.
 
-• **params.query\_table\_name**: `string`
+• **params.query_table_name**: `string`
 
-• **params.query\_threshold**: `number`
+• **params.query_threshold**: `number`
 
-• **params.query\_input**: `string`
+• **params.query_input**: `string`
 
-• **params.query\_field\_name**: `string`
+• **params.query_field_name**: `string`
 
-• **params.query\_field\_sub\_name**: `string`
+• **params.query_field_sub_name**: `string`
 
-• **params.query\_match\_count**: `number`
+• **params.query_match_count**: `number`
 
 #### Returns
 
@@ -218,9 +213,9 @@ A Promise that resolves to an array of objects containing embeddings and levensh
 
 #### Defined in
 
-[packages/core/src/core/database.ts:61](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L61)
+[packages/core/src/database.ts:61](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L61)
 
-***
+---
 
 ### log()
 
@@ -254,9 +249,9 @@ A Promise that resolves when the log entry has been saved.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L87)
+[packages/core/src/database.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L87)
 
-***
+---
 
 ### getActorDetails()
 
@@ -284,9 +279,9 @@ A Promise that resolves to an array of Actor objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L99)
+[packages/core/src/database.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L99)
 
-***
+---
 
 ### searchMemories()
 
@@ -306,9 +301,9 @@ An object containing parameters for the memory search.
 
 • **params.embedding**: `number`[]
 
-• **params.match\_threshold**: `number`
+• **params.match_threshold**: `number`
 
-• **params.match\_count**: `number`
+• **params.match_count**: `number`
 
 • **params.unique**: `boolean`
 
@@ -324,9 +319,9 @@ A Promise that resolves to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:106](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L106)
+[packages/core/src/database.ts:106](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L106)
 
-***
+---
 
 ### updateGoalStatus()
 
@@ -356,9 +351,9 @@ A Promise that resolves when the goal status has been updated.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L120)
+[packages/core/src/database.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L120)
 
-***
+---
 
 ### searchMemoriesByEmbedding()
 
@@ -376,7 +371,7 @@ The embedding vector to search with.
 
 Additional parameters for the search.
 
-• **params.match\_threshold?**: `number`
+• **params.match_threshold?**: `number`
 
 • **params.count?**: `number`
 
@@ -400,9 +395,9 @@ A Promise that resolves to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:131](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L131)
+[packages/core/src/database.ts:131](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L131)
 
-***
+---
 
 ### createMemory()
 
@@ -436,9 +431,9 @@ A Promise that resolves when the memory has been created.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L150)
+[packages/core/src/database.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L150)
 
-***
+---
 
 ### removeMemory()
 
@@ -468,9 +463,9 @@ A Promise that resolves when the memory has been removed.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:162](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L162)
+[packages/core/src/database.ts:162](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L162)
 
-***
+---
 
 ### removeAllMemories()
 
@@ -500,9 +495,9 @@ A Promise that resolves when all memories have been removed.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:170](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L170)
+[packages/core/src/database.ts:170](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L170)
 
-***
+---
 
 ### countMemories()
 
@@ -536,9 +531,9 @@ A Promise that resolves to the number of memories.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L179)
+[packages/core/src/database.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L179)
 
-***
+---
 
 ### getGoals()
 
@@ -572,9 +567,9 @@ A Promise that resolves to an array of Goal objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:190](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L190)
+[packages/core/src/database.ts:190](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L190)
 
-***
+---
 
 ### updateGoal()
 
@@ -600,9 +595,9 @@ A Promise that resolves when the goal has been updated.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:202](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L202)
+[packages/core/src/database.ts:202](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L202)
 
-***
+---
 
 ### createGoal()
 
@@ -628,9 +623,9 @@ A Promise that resolves when the goal has been created.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:209](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L209)
+[packages/core/src/database.ts:209](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L209)
 
-***
+---
 
 ### removeGoal()
 
@@ -656,9 +651,9 @@ A Promise that resolves when the goal has been removed.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:216](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L216)
+[packages/core/src/database.ts:216](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L216)
 
-***
+---
 
 ### removeAllGoals()
 
@@ -684,9 +679,9 @@ A Promise that resolves when all goals have been removed.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:223](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L223)
+[packages/core/src/database.ts:223](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L223)
 
-***
+---
 
 ### getRoom()
 
@@ -712,9 +707,9 @@ A Promise that resolves to the room ID or null if not found.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:230](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L230)
+[packages/core/src/database.ts:230](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L230)
 
-***
+---
 
 ### createRoom()
 
@@ -740,9 +735,9 @@ A Promise that resolves to the UUID of the created room.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:237](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L237)
+[packages/core/src/database.ts:237](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L237)
 
-***
+---
 
 ### removeRoom()
 
@@ -768,9 +763,9 @@ A Promise that resolves when the room has been removed.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:244](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L244)
+[packages/core/src/database.ts:244](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L244)
 
-***
+---
 
 ### getRoomsForParticipant()
 
@@ -796,9 +791,9 @@ A Promise that resolves to an array of room IDs.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:251](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L251)
+[packages/core/src/database.ts:251](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L251)
 
-***
+---
 
 ### getRoomsForParticipants()
 
@@ -824,9 +819,9 @@ A Promise that resolves to an array of room IDs.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:258](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L258)
+[packages/core/src/database.ts:258](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L258)
 
-***
+---
 
 ### addParticipant()
 
@@ -856,9 +851,9 @@ A Promise that resolves to a boolean indicating success or failure.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:266](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L266)
+[packages/core/src/database.ts:266](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L266)
 
-***
+---
 
 ### removeParticipant()
 
@@ -888,9 +883,9 @@ A Promise that resolves to a boolean indicating success or failure.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:274](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L274)
+[packages/core/src/database.ts:274](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L274)
 
-***
+---
 
 ### getParticipantsForAccount()
 
@@ -918,7 +913,7 @@ A Promise that resolves to an array of Participant objects.
 
 ##### Defined in
 
-[packages/core/src/core/database.ts:281](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L281)
+[packages/core/src/database.ts:281](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L281)
 
 #### getParticipantsForAccount(userId)
 
@@ -944,9 +939,9 @@ A Promise that resolves to an array of Participant objects.
 
 ##### Defined in
 
-[packages/core/src/core/database.ts:288](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L288)
+[packages/core/src/database.ts:288](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L288)
 
-***
+---
 
 ### getParticipantsForRoom()
 
@@ -972,9 +967,9 @@ A Promise that resolves to an array of UUIDs representing the participants.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:295](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L295)
+[packages/core/src/database.ts:295](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L295)
 
-***
+---
 
 ### getParticipantUserState()
 
@@ -996,9 +991,9 @@ A Promise that resolves to an array of UUIDs representing the participants.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:297](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L297)
+[packages/core/src/database.ts:297](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L297)
 
-***
+---
 
 ### setParticipantUserState()
 
@@ -1022,9 +1017,9 @@ A Promise that resolves to an array of UUIDs representing the participants.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:301](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L301)
+[packages/core/src/database.ts:301](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L301)
 
-***
+---
 
 ### createRelationship()
 
@@ -1054,9 +1049,9 @@ A Promise that resolves to a boolean indicating success or failure of the creati
 
 #### Defined in
 
-[packages/core/src/core/database.ts:312](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L312)
+[packages/core/src/database.ts:312](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L312)
 
-***
+---
 
 ### getRelationship()
 
@@ -1086,9 +1081,9 @@ A Promise that resolves to the Relationship object or null if not found.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:322](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L322)
+[packages/core/src/database.ts:322](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L322)
 
-***
+---
 
 ### getRelationships()
 
@@ -1116,4 +1111,4 @@ A Promise that resolves to an array of Relationship objects.
 
 #### Defined in
 
-[packages/core/src/core/database.ts:332](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L332)
+[packages/core/src/database.ts:332](https://github.com/ai16z/eliza/blob/main/packages/core/src/database.ts#L332)
diff --git a/docs/api/classes/DirectClient.md b/docs/api/classes/DirectClient.md
deleted file mode 100644
index a16ddab6c62..00000000000
--- a/docs/api/classes/DirectClient.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Class: DirectClient
-
-## Constructors
-
-### new DirectClient()
-
-> **new DirectClient**(): [`DirectClient`](DirectClient.md)
-
-#### Returns
-
-[`DirectClient`](DirectClient.md)
-
-#### Defined in
-
-[packages/core/src/clients/direct/index.ts:56](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/direct/index.ts#L56)
-
-## Methods
-
-### registerAgent()
-
-> **registerAgent**(`runtime`): `void`
-
-#### Parameters
-
-• **runtime**: [`AgentRuntime`](AgentRuntime.md)
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[packages/core/src/clients/direct/index.ts:264](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/direct/index.ts#L264)
-
-***
-
-### unregisterAgent()
-
-> **unregisterAgent**(`runtime`): `void`
-
-#### Parameters
-
-• **runtime**: [`AgentRuntime`](AgentRuntime.md)
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[packages/core/src/clients/direct/index.ts:268](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/direct/index.ts#L268)
-
-***
-
-### start()
-
-> **start**(`port`): `void`
-
-#### Parameters
-
-• **port**: `number`
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[packages/core/src/clients/direct/index.ts:272](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/direct/index.ts#L272)
diff --git a/docs/api/classes/DiscordClient.md b/docs/api/classes/DiscordClient.md
deleted file mode 100644
index be946a72471..00000000000
--- a/docs/api/classes/DiscordClient.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# Class: DiscordClient
-
-## Extends
-
-- `EventEmitter`
-
-## Constructors
-
-### new DiscordClient()
-
-> **new DiscordClient**(`runtime`): [`DiscordClient`](DiscordClient.md)
-
-#### Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Returns
-
-[`DiscordClient`](DiscordClient.md)
-
-#### Overrides
-
-`EventEmitter.constructor`
-
-#### Defined in
-
-[packages/core/src/clients/discord/index.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/discord/index.ts#L34)
-
-## Properties
-
-### apiToken
-
-> **apiToken**: `string`
-
-#### Defined in
-
-[packages/core/src/clients/discord/index.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/discord/index.ts#L27)
-
-***
-
-### character
-
-> **character**: [`Character`](../type-aliases/Character.md)
-
-#### Defined in
-
-[packages/core/src/clients/discord/index.ts:30](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/discord/index.ts#L30)
-
-## Methods
-
-### handleReactionAdd()
-
-> **handleReactionAdd**(`reaction`, `user`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **reaction**: `MessageReaction`
-
-• **user**: `User`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/clients/discord/index.ts:121](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/discord/index.ts#L121)
-
-***
-
-### handleReactionRemove()
-
-> **handleReactionRemove**(`reaction`, `user`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **reaction**: `MessageReaction`
-
-• **user**: `User`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/clients/discord/index.ts:195](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/discord/index.ts#L195)
diff --git a/docs/api/classes/MemoryManager.md b/docs/api/classes/MemoryManager.md
index c0f64789bc6..5b10d7eaf2a 100644
--- a/docs/api/classes/MemoryManager.md
+++ b/docs/api/classes/MemoryManager.md
@@ -34,7 +34,7 @@ The AgentRuntime instance associated with this manager.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:35](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L35)
+[packages/core/src/memory.ts:35](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L35)
 
 ## Properties
 
@@ -50,9 +50,9 @@ The AgentRuntime instance associated with this manager.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:22](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L22)
+[packages/core/src/memory.ts:22](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L22)
 
-***
+---
 
 ### tableName
 
@@ -66,7 +66,7 @@ The name of the database table this manager operates on.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L27)
+[packages/core/src/memory.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L27)
 
 ## Methods
 
@@ -94,9 +94,9 @@ A Promise resolving to the memory object, potentially updated with an embedding
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L45)
+[packages/core/src/memory.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L45)
 
-***
+---
 
 ### getMemories()
 
@@ -140,9 +140,9 @@ A Promise resolving to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:66](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L66)
+[packages/core/src/memory.ts:66](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L66)
 
-***
+---
 
 ### getCachedEmbeddings()
 
@@ -162,9 +162,9 @@ A Promise resolving to an array of Memory objects.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L93)
+[packages/core/src/memory.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L93)
 
-***
+---
 
 ### searchMemoriesByEmbedding()
 
@@ -182,7 +182,7 @@ The embedding vector to search with.
 
 Options including match threshold, count, user IDs, and uniqueness.
 
-• **opts.match\_threshold?**: `number`
+• **opts.match_threshold?**: `number`
 
 The similarity threshold for matching memories.
 
@@ -212,9 +212,9 @@ A Promise resolving to an array of Memory objects that match the embedding.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L120)
+[packages/core/src/memory.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L120)
 
-***
+---
 
 ### createMemory()
 
@@ -244,9 +244,9 @@ A Promise that resolves when the operation completes.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:158](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L158)
+[packages/core/src/memory.ts:158](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L158)
 
-***
+---
 
 ### getMemoriesByRoomIds()
 
@@ -270,9 +270,9 @@ A Promise that resolves when the operation completes.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:172](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L172)
+[packages/core/src/memory.ts:172](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L172)
 
-***
+---
 
 ### getMemoryById()
 
@@ -292,9 +292,9 @@ A Promise that resolves when the operation completes.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:183](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L183)
+[packages/core/src/memory.ts:183](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L183)
 
-***
+---
 
 ### removeMemory()
 
@@ -320,9 +320,9 @@ A Promise that resolves when the operation completes.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:193](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L193)
+[packages/core/src/memory.ts:193](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L193)
 
-***
+---
 
 ### removeAllMemories()
 
@@ -348,9 +348,9 @@ A Promise that resolves when the operation completes.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:205](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L205)
+[packages/core/src/memory.ts:205](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L205)
 
-***
+---
 
 ### countMemories()
 
@@ -380,4 +380,4 @@ A Promise resolving to the count of memories.
 
 #### Defined in
 
-[packages/core/src/core/memory.ts:218](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L218)
+[packages/core/src/memory.ts:218](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L218)
diff --git a/docs/api/classes/PostgresDatabaseAdapter.md b/docs/api/classes/PostgresDatabaseAdapter.md
deleted file mode 100644
index f528213f2a6..00000000000
--- a/docs/api/classes/PostgresDatabaseAdapter.md
+++ /dev/null
@@ -1,1132 +0,0 @@
-# Class: PostgresDatabaseAdapter
-
-An abstract class representing a database adapter for managing various entities
-like accounts, memories, actors, goals, and rooms.
-
-## Extends
-
-- [`DatabaseAdapter`](DatabaseAdapter.md)
-
-## Constructors
-
-### new PostgresDatabaseAdapter()
-
-> **new PostgresDatabaseAdapter**(`connectionConfig`): [`PostgresDatabaseAdapter`](PostgresDatabaseAdapter.md)
-
-#### Parameters
-
-• **connectionConfig**: `any`
-
-#### Returns
-
-[`PostgresDatabaseAdapter`](PostgresDatabaseAdapter.md)
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`constructor`](DatabaseAdapter.md#constructors)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:19](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L19)
-
-## Properties
-
-### db
-
-> **db**: `any`
-
-The database instance.
-
-#### Inherited from
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`db`](DatabaseAdapter.md#db)
-
-#### Defined in
-
-[packages/core/src/core/database.ts:21](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L21)
-
-## Methods
-
-### testConnection()
-
-> **testConnection**(): `Promise`\<`boolean`\>
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:37](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L37)
-
-***
-
-### getRoom()
-
-> **getRoom**(`roomId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-Retrieves the room ID for a given room, if it exists.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to retrieve.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-A Promise that resolves to the room ID or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoom`](DatabaseAdapter.md#getroom)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L59)
-
-***
-
-### getParticipantsForAccount()
-
-> **getParticipantsForAccount**(`userId`): `Promise`\<[`Participant`](../interfaces/Participant.md)[]\>
-
-Retrieves participants associated with a specific account.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the account.
-
-#### Returns
-
-`Promise`\<[`Participant`](../interfaces/Participant.md)[]\>
-
-A Promise that resolves to an array of Participant objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantsForAccount`](DatabaseAdapter.md#getparticipantsforaccount)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:72](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L72)
-
-***
-
-### getParticipantUserState()
-
-> **getParticipantUserState**(`roomId`, `userId`): `Promise`\<`"FOLLOWED"` \| `"MUTED"`\>
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<`"FOLLOWED"` \| `"MUTED"`\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantUserState`](DatabaseAdapter.md#getparticipantuserstate)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L87)
-
-***
-
-### getMemoriesByRoomIds()
-
-> **getMemoriesByRoomIds**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-#### Parameters
-
-• **params**
-
-• **params.roomIds**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.tableName**: `string`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemoriesByRoomIds`](DatabaseAdapter.md#getmemoriesbyroomids)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:103](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L103)
-
-***
-
-### setParticipantUserState()
-
-> **setParticipantUserState**(`roomId`, `userId`, `state`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **state**: `"FOLLOWED"` \| `"MUTED"`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`setParticipantUserState`](DatabaseAdapter.md#setparticipantuserstate)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:133](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L133)
-
-***
-
-### getParticipantsForRoom()
-
-> **getParticipantsForRoom**(`roomId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves participants for a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room for which to retrieve participants.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of UUIDs representing the participants.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantsForRoom`](DatabaseAdapter.md#getparticipantsforroom)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:149](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L149)
-
-***
-
-### getAccountById()
-
-> **getAccountById**(`userId`): `Promise`\<[`Account`](../interfaces/Account.md)\>
-
-Retrieves an account by its ID.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user account to retrieve.
-
-#### Returns
-
-`Promise`\<[`Account`](../interfaces/Account.md)\>
-
-A Promise that resolves to the Account object or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getAccountById`](DatabaseAdapter.md#getaccountbyid)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:162](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L162)
-
-***
-
-### createAccount()
-
-> **createAccount**(`account`): `Promise`\<`boolean`\>
-
-Creates a new account in the database.
-
-#### Parameters
-
-• **account**: [`Account`](../interfaces/Account.md)
-
-The account object to create.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves when the account creation is complete.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createAccount`](DatabaseAdapter.md#createaccount)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:186](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L186)
-
-***
-
-### getActorById()
-
-> **getActorById**(`params`): `Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-#### Parameters
-
-• **params**
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:210](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L210)
-
-***
-
-### getMemoryById()
-
-> **getMemoryById**(`id`): `Promise`\<[`Memory`](../interfaces/Memory.md)\>
-
-#### Parameters
-
-• **id**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemoryById`](DatabaseAdapter.md#getmemorybyid)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:232](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L232)
-
-***
-
-### createMemory()
-
-> **createMemory**(`memory`, `tableName`): `Promise`\<`void`\>
-
-Creates a new memory in the database.
-
-#### Parameters
-
-• **memory**: [`Memory`](../interfaces/Memory.md)
-
-The memory object to create.
-
-• **tableName**: `string`
-
-The table where the memory should be stored.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the memory has been created.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createMemory`](DatabaseAdapter.md#creatememory)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:253](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L253)
-
-***
-
-### searchMemories()
-
-> **searchMemories**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Searches for memories based on embeddings and other specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the memory search.
-
-• **params.tableName**: `string`
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.embedding**: `number`[]
-
-• **params.match\_threshold**: `number`
-
-• **params.match\_count**: `number`
-
-• **params.unique**: `boolean`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`searchMemories`](DatabaseAdapter.md#searchmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:291](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L291)
-
-***
-
-### getMemories()
-
-> **getMemories**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Retrieves memories based on the specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the memory retrieval.
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.count?**: `number`
-
-• **params.unique?**: `boolean`
-
-• **params.tableName**: `string`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.start?**: `number`
-
-• **params.end?**: `number`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemories`](DatabaseAdapter.md#getmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:334](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L334)
-
-***
-
-### getGoals()
-
-> **getGoals**(`params`): `Promise`\<[`Goal`](../interfaces/Goal.md)[]\>
-
-Retrieves goals based on specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for goal retrieval.
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.onlyInProgress?**: `boolean`
-
-• **params.count?**: `number`
-
-#### Returns
-
-`Promise`\<[`Goal`](../interfaces/Goal.md)[]\>
-
-A Promise that resolves to an array of Goal objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getGoals`](DatabaseAdapter.md#getgoals)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:396](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L396)
-
-***
-
-### updateGoal()
-
-> **updateGoal**(`goal`): `Promise`\<`void`\>
-
-Updates a specific goal in the database.
-
-#### Parameters
-
-• **goal**: [`Goal`](../interfaces/Goal.md)
-
-The goal object with updated properties.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been updated.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`updateGoal`](DatabaseAdapter.md#updategoal)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:437](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L437)
-
-***
-
-### createGoal()
-
-> **createGoal**(`goal`): `Promise`\<`void`\>
-
-Creates a new goal in the database.
-
-#### Parameters
-
-• **goal**: [`Goal`](../interfaces/Goal.md)
-
-The goal object to create.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been created.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createGoal`](DatabaseAdapter.md#creategoal)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:454](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L454)
-
-***
-
-### removeGoal()
-
-> **removeGoal**(`goalId`): `Promise`\<`void`\>
-
-Removes a specific goal from the database.
-
-#### Parameters
-
-• **goalId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the goal to remove.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeGoal`](DatabaseAdapter.md#removegoal)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:474](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L474)
-
-***
-
-### createRoom()
-
-> **createRoom**(`roomId`?): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-Creates a new room with an optional specified ID.
-
-#### Parameters
-
-• **roomId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-Optional UUID to assign to the new room.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-A Promise that resolves to the UUID of the created room.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createRoom`](DatabaseAdapter.md#createroom)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:483](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L483)
-
-***
-
-### removeRoom()
-
-> **removeRoom**(`roomId`): `Promise`\<`void`\>
-
-Removes a specific room from the database.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to remove.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the room has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeRoom`](DatabaseAdapter.md#removeroom)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:496](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L496)
-
-***
-
-### createRelationship()
-
-> **createRelationship**(`params`): `Promise`\<`boolean`\>
-
-Creates a new relationship between two users.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUIDs of the two users (userA and userB).
-
-• **params.userA**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userB**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure of the creation.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createRelationship`](DatabaseAdapter.md#createrelationship)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:505](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L505)
-
-***
-
-### getRelationship()
-
-> **getRelationship**(`params`): `Promise`\<[`Relationship`](../interfaces/Relationship.md)\>
-
-Retrieves a relationship between two users if it exists.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUIDs of the two users (userA and userB).
-
-• **params.userA**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userB**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Relationship`](../interfaces/Relationship.md)\>
-
-A Promise that resolves to the Relationship object or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRelationship`](DatabaseAdapter.md#getrelationship)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:529](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L529)
-
-***
-
-### getRelationships()
-
-> **getRelationships**(`params`): `Promise`\<[`Relationship`](../interfaces/Relationship.md)[]\>
-
-Retrieves all relationships for a specific user.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUID of the user.
-
-• **params.userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Relationship`](../interfaces/Relationship.md)[]\>
-
-A Promise that resolves to an array of Relationship objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRelationships`](DatabaseAdapter.md#getrelationships)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:546](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L546)
-
-***
-
-### getCachedEmbeddings()
-
-> **getCachedEmbeddings**(`opts`): `Promise`\<`object`[]\>
-
-Retrieves cached embeddings based on the specified query parameters.
-
-#### Parameters
-
-• **opts**
-
-• **opts.query\_table\_name**: `string`
-
-• **opts.query\_threshold**: `number`
-
-• **opts.query\_input**: `string`
-
-• **opts.query\_field\_name**: `string`
-
-• **opts.query\_field\_sub\_name**: `string`
-
-• **opts.query\_match\_count**: `number`
-
-#### Returns
-
-`Promise`\<`object`[]\>
-
-A Promise that resolves to an array of objects containing embeddings and levenshtein scores.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getCachedEmbeddings`](DatabaseAdapter.md#getcachedembeddings)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:559](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L559)
-
-***
-
-### log()
-
-> **log**(`params`): `Promise`\<`void`\>
-
-Logs an event or action with the specified details.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the log entry.
-
-• **params.body**
-
-• **params.userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.type**: `string`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the log entry has been saved.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`log`](DatabaseAdapter.md#log)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:595](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L595)
-
-***
-
-### searchMemoriesByEmbedding()
-
-> **searchMemoriesByEmbedding**(`embedding`, `params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Searches for memories by embedding and other specified parameters.
-
-#### Parameters
-
-• **embedding**: `number`[]
-
-The embedding vector to search with.
-
-• **params**
-
-Additional parameters for the search.
-
-• **params.match\_threshold?**: `number`
-
-• **params.count?**: `number`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.roomId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.unique?**: `boolean`
-
-• **params.tableName**: `string`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`searchMemoriesByEmbedding`](DatabaseAdapter.md#searchmemoriesbyembedding)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:612](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L612)
-
-***
-
-### addParticipant()
-
-> **addParticipant**(`userId`, `roomId`): `Promise`\<`boolean`\>
-
-Adds a user as a participant to a specific room.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user to add as a participant.
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to which the user will be added.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`addParticipant`](DatabaseAdapter.md#addparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:681](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L681)
-
-***
-
-### removeParticipant()
-
-> **removeParticipant**(`userId`, `roomId`): `Promise`\<`boolean`\>
-
-Removes a user as a participant from a specific room.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user to remove as a participant.
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room from which the user will be removed.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeParticipant`](DatabaseAdapter.md#removeparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:697](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L697)
-
-***
-
-### updateGoalStatus()
-
-> **updateGoalStatus**(`params`): `Promise`\<`void`\>
-
-Updates the status of a specific goal.
-
-#### Parameters
-
-• **params**
-
-An object containing the goalId and the new status.
-
-• **params.goalId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.status**: [`GoalStatus`](../enumerations/GoalStatus.md)
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal status has been updated.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`updateGoalStatus`](DatabaseAdapter.md#updategoalstatus)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:713](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L713)
-
-***
-
-### removeMemory()
-
-> **removeMemory**(`memoryId`, `tableName`): `Promise`\<`void`\>
-
-Removes a specific memory from the database.
-
-#### Parameters
-
-• **memoryId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the memory to remove.
-
-• **tableName**: `string`
-
-The table from which the memory should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the memory has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeMemory`](DatabaseAdapter.md#removememory)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:728](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L728)
-
-***
-
-### removeAllMemories()
-
-> **removeAllMemories**(`roomId`, `tableName`): `Promise`\<`void`\>
-
-Removes all memories associated with a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room whose memories should be removed.
-
-• **tableName**: `string`
-
-The table from which the memories should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when all memories have been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeAllMemories`](DatabaseAdapter.md#removeallmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:740](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L740)
-
-***
-
-### countMemories()
-
-> **countMemories**(`roomId`, `unique`, `tableName`): `Promise`\<`number`\>
-
-Counts the number of memories in a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room for which to count memories.
-
-• **unique**: `boolean` = `true`
-
-Specifies whether to count only unique memories.
-
-• **tableName**: `string` = `""`
-
-Optional table name to count memories from.
-
-#### Returns
-
-`Promise`\<`number`\>
-
-A Promise that resolves to the number of memories.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`countMemories`](DatabaseAdapter.md#countmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:752](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L752)
-
-***
-
-### removeAllGoals()
-
-> **removeAllGoals**(`roomId`): `Promise`\<`void`\>
-
-Removes all goals associated with a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room whose goals should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when all goals have been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeAllGoals`](DatabaseAdapter.md#removeallgoals)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:773](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L773)
-
-***
-
-### getRoomsForParticipant()
-
-> **getRoomsForParticipant**(`userId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves room IDs for which a specific user is a participant.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of room IDs.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoomsForParticipant`](DatabaseAdapter.md#getroomsforparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:784](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L784)
-
-***
-
-### getRoomsForParticipants()
-
-> **getRoomsForParticipants**(`userIds`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves room IDs for which specific users are participants.
-
-#### Parameters
-
-• **userIds**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]
-
-An array of UUIDs of the users.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of room IDs.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoomsForParticipants`](DatabaseAdapter.md#getroomsforparticipants)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:797](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L797)
-
-***
-
-### getActorDetails()
-
-> **getActorDetails**(`params`): `Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-Retrieves details of actors in a given room.
-
-#### Parameters
-
-• **params**
-
-An object containing the roomId to search for actors.
-
-• **params.roomId**: `string`
-
-#### Returns
-
-`Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-A Promise that resolves to an array of Actor objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getActorDetails`](DatabaseAdapter.md#getactordetails)
-
-#### Defined in
-
-[packages/core/src/adapters/postgres.ts:810](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/postgres.ts#L810)
diff --git a/docs/api/classes/Service.md b/docs/api/classes/Service.md
new file mode 100644
index 00000000000..fbb3735e96b
--- /dev/null
+++ b/docs/api/classes/Service.md
@@ -0,0 +1,49 @@
+# Class: `abstract` Service
+
+## Extended by
+
+- [`IImageDescriptionService`](../interfaces/IImageDescriptionService.md)
+- [`ITranscriptionService`](../interfaces/ITranscriptionService.md)
+- [`IVideoService`](../interfaces/IVideoService.md)
+- [`ITextGenerationService`](../interfaces/ITextGenerationService.md)
+- [`IBrowserService`](../interfaces/IBrowserService.md)
+- [`ISpeechService`](../interfaces/ISpeechService.md)
+- [`IPdfService`](../interfaces/IPdfService.md)
+
+## Constructors
+
+### new Service()
+
+> **new Service**(): [`Service`](Service.md)
+
+#### Returns
+
+[`Service`](Service.md)
+
+## Properties
+
+### serviceType
+
+> `static` **serviceType**: [`ServiceType`](../enumerations/ServiceType.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:504](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L504)
+
+## Methods
+
+### getInstance()
+
+> `static` **getInstance**\<`T`\>(): `T`
+
+#### Type Parameters
+
+• **T** _extends_ [`Service`](Service.md)
+
+#### Returns
+
+`T`
+
+#### Defined in
+
+[packages/core/src/types.ts:506](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L506)
diff --git a/docs/api/classes/SqliteDatabaseAdapter.md b/docs/api/classes/SqliteDatabaseAdapter.md
deleted file mode 100644
index 7ea4cc162ca..00000000000
--- a/docs/api/classes/SqliteDatabaseAdapter.md
+++ /dev/null
@@ -1,1100 +0,0 @@
-# Class: SqliteDatabaseAdapter
-
-An abstract class representing a database adapter for managing various entities
-like accounts, memories, actors, goals, and rooms.
-
-## Extends
-
-- [`DatabaseAdapter`](DatabaseAdapter.md)
-
-## Constructors
-
-### new SqliteDatabaseAdapter()
-
-> **new SqliteDatabaseAdapter**(`db`): [`SqliteDatabaseAdapter`](SqliteDatabaseAdapter.md)
-
-#### Parameters
-
-• **db**: `Database`
-
-#### Returns
-
-[`SqliteDatabaseAdapter`](SqliteDatabaseAdapter.md)
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`constructor`](DatabaseAdapter.md#constructors)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:70](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L70)
-
-## Properties
-
-### db
-
-> **db**: `any`
-
-The database instance.
-
-#### Inherited from
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`db`](DatabaseAdapter.md#db)
-
-#### Defined in
-
-[packages/core/src/core/database.ts:21](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/database.ts#L21)
-
-## Methods
-
-### getRoom()
-
-> **getRoom**(`roomId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-Retrieves the room ID for a given room, if it exists.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to retrieve.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-A Promise that resolves to the room ID or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoom`](DatabaseAdapter.md#getroom)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:22](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L22)
-
-***
-
-### getParticipantsForAccount()
-
-> **getParticipantsForAccount**(`userId`): `Promise`\<[`Participant`](../interfaces/Participant.md)[]\>
-
-Retrieves participants associated with a specific account.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the account.
-
-#### Returns
-
-`Promise`\<[`Participant`](../interfaces/Participant.md)[]\>
-
-A Promise that resolves to an array of Participant objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantsForAccount`](DatabaseAdapter.md#getparticipantsforaccount)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:30](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L30)
-
-***
-
-### getParticipantsForRoom()
-
-> **getParticipantsForRoom**(`roomId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves participants for a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room for which to retrieve participants.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of UUIDs representing the participants.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantsForRoom`](DatabaseAdapter.md#getparticipantsforroom)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:40](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L40)
-
-***
-
-### getParticipantUserState()
-
-> **getParticipantUserState**(`roomId`, `userId`): `Promise`\<`"FOLLOWED"` \| `"MUTED"`\>
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<`"FOLLOWED"` \| `"MUTED"`\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getParticipantUserState`](DatabaseAdapter.md#getparticipantuserstate)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:46](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L46)
-
-***
-
-### setParticipantUserState()
-
-> **setParticipantUserState**(`roomId`, `userId`, `state`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **state**: `"FOLLOWED"` \| `"MUTED"`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`setParticipantUserState`](DatabaseAdapter.md#setparticipantuserstate)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L59)
-
-***
-
-### getAccountById()
-
-> **getAccountById**(`userId`): `Promise`\<[`Account`](../interfaces/Account.md)\>
-
-Retrieves an account by its ID.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user account to retrieve.
-
-#### Returns
-
-`Promise`\<[`Account`](../interfaces/Account.md)\>
-
-A Promise that resolves to the Account object or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getAccountById`](DatabaseAdapter.md#getaccountbyid)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:88](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L88)
-
-***
-
-### createAccount()
-
-> **createAccount**(`account`): `Promise`\<`boolean`\>
-
-Creates a new account in the database.
-
-#### Parameters
-
-• **account**: [`Account`](../interfaces/Account.md)
-
-The account object to create.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves when the account creation is complete.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createAccount`](DatabaseAdapter.md#createaccount)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:102](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L102)
-
-***
-
-### getActorDetails()
-
-> **getActorDetails**(`params`): `Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-Retrieves details of actors in a given room.
-
-#### Parameters
-
-• **params**
-
-An object containing the roomId to search for actors.
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Actor`](../interfaces/Actor.md)[]\>
-
-A Promise that resolves to an array of Actor objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getActorDetails`](DatabaseAdapter.md#getactordetails)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:123](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L123)
-
-***
-
-### getMemoriesByRoomIds()
-
-> **getMemoriesByRoomIds**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-#### Parameters
-
-• **params**
-
-• **params.roomIds**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]
-
-• **params.tableName**: `string`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemoriesByRoomIds`](DatabaseAdapter.md#getmemoriesbyroomids)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L150)
-
-***
-
-### getMemoryById()
-
-> **getMemoryById**(`memoryId`): `Promise`\<[`Memory`](../interfaces/Memory.md)\>
-
-#### Parameters
-
-• **memoryId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)\>
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemoryById`](DatabaseAdapter.md#getmemorybyid)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L179)
-
-***
-
-### createMemory()
-
-> **createMemory**(`memory`, `tableName`): `Promise`\<`void`\>
-
-Creates a new memory in the database.
-
-#### Parameters
-
-• **memory**: [`Memory`](../interfaces/Memory.md)
-
-The memory object to create.
-
-• **tableName**: `string`
-
-The table where the memory should be stored.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the memory has been created.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createMemory`](DatabaseAdapter.md#creatememory)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:195](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L195)
-
-***
-
-### searchMemories()
-
-> **searchMemories**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Searches for memories based on embeddings and other specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the memory search.
-
-• **params.tableName**: `string`
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.embedding**: `number`[]
-
-• **params.match\_threshold**: `number`
-
-• **params.match\_count**: `number`
-
-• **params.unique**: `boolean`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`searchMemories`](DatabaseAdapter.md#searchmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:235](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L235)
-
-***
-
-### searchMemoriesByEmbedding()
-
-> **searchMemoriesByEmbedding**(`embedding`, `params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Searches for memories by embedding and other specified parameters.
-
-#### Parameters
-
-• **embedding**: `number`[]
-
-The embedding vector to search with.
-
-• **params**
-
-Additional parameters for the search.
-
-• **params.match\_threshold?**: `number`
-
-• **params.count?**: `number`
-
-• **params.roomId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.unique?**: `boolean`
-
-• **params.tableName**: `string`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`searchMemoriesByEmbedding`](DatabaseAdapter.md#searchmemoriesbyembedding)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:281](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L281)
-
-***
-
-### getCachedEmbeddings()
-
-> **getCachedEmbeddings**(`opts`): `Promise`\<`object`[]\>
-
-Retrieves cached embeddings based on the specified query parameters.
-
-#### Parameters
-
-• **opts**
-
-• **opts.query\_table\_name**: `string`
-
-• **opts.query\_threshold**: `number`
-
-• **opts.query\_input**: `string`
-
-• **opts.query\_field\_name**: `string`
-
-• **opts.query\_field\_sub\_name**: `string`
-
-• **opts.query\_match\_count**: `number`
-
-#### Returns
-
-`Promise`\<`object`[]\>
-
-A Promise that resolves to an array of objects containing embeddings and levenshtein scores.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getCachedEmbeddings`](DatabaseAdapter.md#getcachedembeddings)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:335](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L335)
-
-***
-
-### updateGoalStatus()
-
-> **updateGoalStatus**(`params`): `Promise`\<`void`\>
-
-Updates the status of a specific goal.
-
-#### Parameters
-
-• **params**
-
-An object containing the goalId and the new status.
-
-• **params.goalId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.status**: [`GoalStatus`](../enumerations/GoalStatus.md)
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal status has been updated.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`updateGoalStatus`](DatabaseAdapter.md#updategoalstatus)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:371](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L371)
-
-***
-
-### log()
-
-> **log**(`params`): `Promise`\<`void`\>
-
-Logs an event or action with the specified details.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the log entry.
-
-• **params.body**
-
-• **params.userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.type**: `string`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the log entry has been saved.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`log`](DatabaseAdapter.md#log)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:379](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L379)
-
-***
-
-### getMemories()
-
-> **getMemories**(`params`): `Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-Retrieves memories based on the specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for the memory retrieval.
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.count?**: `number`
-
-• **params.unique?**: `boolean`
-
-• **params.tableName**: `string`
-
-• **params.agentId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.start?**: `number`
-
-• **params.end?**: `number`
-
-#### Returns
-
-`Promise`\<[`Memory`](../interfaces/Memory.md)[]\>
-
-A Promise that resolves to an array of Memory objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getMemories`](DatabaseAdapter.md#getmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:397](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L397)
-
-***
-
-### removeMemory()
-
-> **removeMemory**(`memoryId`, `tableName`): `Promise`\<`void`\>
-
-Removes a specific memory from the database.
-
-#### Parameters
-
-• **memoryId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the memory to remove.
-
-• **tableName**: `string`
-
-The table from which the memory should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the memory has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeMemory`](DatabaseAdapter.md#removememory)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:454](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L454)
-
-***
-
-### removeAllMemories()
-
-> **removeAllMemories**(`roomId`, `tableName`): `Promise`\<`void`\>
-
-Removes all memories associated with a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room whose memories should be removed.
-
-• **tableName**: `string`
-
-The table from which the memories should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when all memories have been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeAllMemories`](DatabaseAdapter.md#removeallmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:459](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L459)
-
-***
-
-### countMemories()
-
-> **countMemories**(`roomId`, `unique`, `tableName`): `Promise`\<`number`\>
-
-Counts the number of memories in a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room for which to count memories.
-
-• **unique**: `boolean` = `true`
-
-Specifies whether to count only unique memories.
-
-• **tableName**: `string` = `""`
-
-Optional table name to count memories from.
-
-#### Returns
-
-`Promise`\<`number`\>
-
-A Promise that resolves to the number of memories.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`countMemories`](DatabaseAdapter.md#countmemories)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:464](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L464)
-
-***
-
-### getGoals()
-
-> **getGoals**(`params`): `Promise`\<[`Goal`](../interfaces/Goal.md)[]\>
-
-Retrieves goals based on specified parameters.
-
-#### Parameters
-
-• **params**
-
-An object containing parameters for goal retrieval.
-
-• **params.roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.onlyInProgress?**: `boolean`
-
-• **params.count?**: `number`
-
-#### Returns
-
-`Promise`\<[`Goal`](../interfaces/Goal.md)[]\>
-
-A Promise that resolves to an array of Goal objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getGoals`](DatabaseAdapter.md#getgoals)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:484](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L484)
-
-***
-
-### updateGoal()
-
-> **updateGoal**(`goal`): `Promise`\<`void`\>
-
-Updates a specific goal in the database.
-
-#### Parameters
-
-• **goal**: [`Goal`](../interfaces/Goal.md)
-
-The goal object with updated properties.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been updated.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`updateGoal`](DatabaseAdapter.md#updategoal)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:518](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L518)
-
-***
-
-### createGoal()
-
-> **createGoal**(`goal`): `Promise`\<`void`\>
-
-Creates a new goal in the database.
-
-#### Parameters
-
-• **goal**: [`Goal`](../interfaces/Goal.md)
-
-The goal object to create.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been created.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createGoal`](DatabaseAdapter.md#creategoal)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:531](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L531)
-
-***
-
-### removeGoal()
-
-> **removeGoal**(`goalId`): `Promise`\<`void`\>
-
-Removes a specific goal from the database.
-
-#### Parameters
-
-• **goalId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the goal to remove.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the goal has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeGoal`](DatabaseAdapter.md#removegoal)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:546](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L546)
-
-***
-
-### removeAllGoals()
-
-> **removeAllGoals**(`roomId`): `Promise`\<`void`\>
-
-Removes all goals associated with a specific room.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room whose goals should be removed.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when all goals have been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeAllGoals`](DatabaseAdapter.md#removeallgoals)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:551](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L551)
-
-***
-
-### createRoom()
-
-> **createRoom**(`roomId`?): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-Creates a new room with an optional specified ID.
-
-#### Parameters
-
-• **roomId?**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-Optional UUID to assign to the new room.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`\>
-
-A Promise that resolves to the UUID of the created room.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createRoom`](DatabaseAdapter.md#createroom)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:556](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L556)
-
-***
-
-### removeRoom()
-
-> **removeRoom**(`roomId`): `Promise`\<`void`\>
-
-Removes a specific room from the database.
-
-#### Parameters
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to remove.
-
-#### Returns
-
-`Promise`\<`void`\>
-
-A Promise that resolves when the room has been removed.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeRoom`](DatabaseAdapter.md#removeroom)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:567](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L567)
-
-***
-
-### getRoomsForParticipant()
-
-> **getRoomsForParticipant**(`userId`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves room IDs for which a specific user is a participant.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of room IDs.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoomsForParticipant`](DatabaseAdapter.md#getroomsforparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:572](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L572)
-
-***
-
-### getRoomsForParticipants()
-
-> **getRoomsForParticipants**(`userIds`): `Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-Retrieves room IDs for which specific users are participants.
-
-#### Parameters
-
-• **userIds**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]
-
-An array of UUIDs of the users.
-
-#### Returns
-
-`Promise`\<\`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`[]\>
-
-A Promise that resolves to an array of room IDs.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRoomsForParticipants`](DatabaseAdapter.md#getroomsforparticipants)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:578](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L578)
-
-***
-
-### addParticipant()
-
-> **addParticipant**(`userId`, `roomId`): `Promise`\<`boolean`\>
-
-Adds a user as a participant to a specific room.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user to add as a participant.
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room to which the user will be added.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`addParticipant`](DatabaseAdapter.md#addparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:591](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L591)
-
-***
-
-### removeParticipant()
-
-> **removeParticipant**(`userId`, `roomId`): `Promise`\<`boolean`\>
-
-Removes a user as a participant from a specific room.
-
-#### Parameters
-
-• **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the user to remove as a participant.
-
-• **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-The UUID of the room from which the user will be removed.
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`removeParticipant`](DatabaseAdapter.md#removeparticipant)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:603](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L603)
-
-***
-
-### createRelationship()
-
-> **createRelationship**(`params`): `Promise`\<`boolean`\>
-
-Creates a new relationship between two users.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUIDs of the two users (userA and userB).
-
-• **params.userA**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userB**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-A Promise that resolves to a boolean indicating success or failure of the creation.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`createRelationship`](DatabaseAdapter.md#createrelationship)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:615](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L615)
-
-***
-
-### getRelationship()
-
-> **getRelationship**(`params`): `Promise`\<[`Relationship`](../interfaces/Relationship.md)\>
-
-Retrieves a relationship between two users if it exists.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUIDs of the two users (userA and userB).
-
-• **params.userA**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-• **params.userB**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Relationship`](../interfaces/Relationship.md)\>
-
-A Promise that resolves to the Relationship object or null if not found.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRelationship`](DatabaseAdapter.md#getrelationship)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:630](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L630)
-
-***
-
-### getRelationships()
-
-> **getRelationships**(`params`): `Promise`\<[`Relationship`](../interfaces/Relationship.md)[]\>
-
-Retrieves all relationships for a specific user.
-
-#### Parameters
-
-• **params**
-
-An object containing the UUID of the user.
-
-• **params.userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Returns
-
-`Promise`\<[`Relationship`](../interfaces/Relationship.md)[]\>
-
-A Promise that resolves to an array of Relationship objects.
-
-#### Overrides
-
-[`DatabaseAdapter`](DatabaseAdapter.md).[`getRelationships`](DatabaseAdapter.md#getrelationships)
-
-#### Defined in
-
-[packages/core/src/adapters/sqlite.ts:648](https://github.com/ai16z/eliza/blob/main/packages/core/src/adapters/sqlite.ts#L648)
diff --git a/docs/api/classes/TelegramClient.md b/docs/api/classes/TelegramClient.md
deleted file mode 100644
index e3a7b4dd523..00000000000
--- a/docs/api/classes/TelegramClient.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Class: TelegramClient
-
-## Constructors
-
-### new TelegramClient()
-
-> **new TelegramClient**(`runtime`, `botToken`): [`TelegramClient`](TelegramClient.md)
-
-#### Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-• **botToken**: `string`
-
-#### Returns
-
-[`TelegramClient`](TelegramClient.md)
-
-#### Defined in
-
-[packages/core/src/clients/telegram/src/index.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/telegram/src/index.ts#L12)
-
-## Methods
-
-### start()
-
-> **start**(): `Promise`\<`void`\>
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/clients/telegram/src/index.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/telegram/src/index.ts#L54)
-
-***
-
-### stop()
-
-> **stop**(): `Promise`\<`void`\>
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/clients/telegram/src/index.ts:91](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/telegram/src/index.ts#L91)
diff --git a/docs/api/classes/TokenProvider.md b/docs/api/classes/TokenProvider.md
deleted file mode 100644
index 51099080169..00000000000
--- a/docs/api/classes/TokenProvider.md
+++ /dev/null
@@ -1,193 +0,0 @@
-# Class: TokenProvider
-
-## Constructors
-
-### new TokenProvider()
-
-> **new TokenProvider**(`tokenAddress`): [`TokenProvider`](TokenProvider.md)
-
-#### Parameters
-
-• **tokenAddress**: `string`
-
-#### Returns
-
-[`TokenProvider`](TokenProvider.md)
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:38](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L38)
-
-## Methods
-
-### fetchTokenSecurity()
-
-> **fetchTokenSecurity**(): `Promise`\<`TokenSecurityData`\>
-
-#### Returns
-
-`Promise`\<`TokenSecurityData`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:166](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L166)
-
-***
-
-### fetchTokenTradeData()
-
-> **fetchTokenTradeData**(): `Promise`\<`TokenTradeData`\>
-
-#### Returns
-
-`Promise`\<`TokenTradeData`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:196](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L196)
-
-***
-
-### fetchDexScreenerData()
-
-> **fetchDexScreenerData**(): `Promise`\<`DexScreenerData`\>
-
-#### Returns
-
-`Promise`\<`DexScreenerData`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:431](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L431)
-
-***
-
-### analyzeHolderDistribution()
-
-> **analyzeHolderDistribution**(`tradeData`): `Promise`\<`string`\>
-
-#### Parameters
-
-• **tradeData**: `TokenTradeData`
-
-#### Returns
-
-`Promise`\<`string`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:472](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L472)
-
-***
-
-### fetchHolderList()
-
-> **fetchHolderList**(): `Promise`\<`HolderData`[]\>
-
-#### Returns
-
-`Promise`\<`HolderData`[]\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:518](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L518)
-
-***
-
-### filterHighValueHolders()
-
-> **filterHighValueHolders**(`tradeData`): `Promise`\<`object`[]\>
-
-#### Parameters
-
-• **tradeData**: `TokenTradeData`
-
-#### Returns
-
-`Promise`\<`object`[]\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:618](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L618)
-
-***
-
-### checkRecentTrades()
-
-> **checkRecentTrades**(`tradeData`): `Promise`\<`boolean`\>
-
-#### Parameters
-
-• **tradeData**: `TokenTradeData`
-
-#### Returns
-
-`Promise`\<`boolean`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:642](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L642)
-
-***
-
-### countHighSupplyHolders()
-
-> **countHighSupplyHolders**(`securityData`): `Promise`\<`number`\>
-
-#### Parameters
-
-• **securityData**: `TokenSecurityData`
-
-#### Returns
-
-`Promise`\<`number`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:646](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L646)
-
-***
-
-### getProcessedTokenData()
-
-> **getProcessedTokenData**(): `Promise`\<`ProcessedTokenData`\>
-
-#### Returns
-
-`Promise`\<`ProcessedTokenData`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:667](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L667)
-
-***
-
-### formatTokenData()
-
-> **formatTokenData**(`data`): `string`
-
-#### Parameters
-
-• **data**: `ProcessedTokenData`
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:733](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L733)
-
-***
-
-### getFormattedTokenReport()
-
-> **getFormattedTokenReport**(): `Promise`\<`string`\>
-
-#### Returns
-
-`Promise`\<`string`\>
-
-#### Defined in
-
-[packages/core/src/providers/token.ts:797](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L797)
diff --git a/docs/api/classes/TwitterInteractionClient.md b/docs/api/classes/TwitterInteractionClient.md
deleted file mode 100644
index 1cdb4858709..00000000000
--- a/docs/api/classes/TwitterInteractionClient.md
+++ /dev/null
@@ -1,383 +0,0 @@
-# Class: TwitterInteractionClient
-
-## Extends
-
-- `ClientBase`
-
-## Constructors
-
-### new TwitterInteractionClient()
-
-> **new TwitterInteractionClient**(`runtime`): [`TwitterInteractionClient`](TwitterInteractionClient.md)
-
-#### Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Returns
-
-[`TwitterInteractionClient`](TwitterInteractionClient.md)
-
-#### Overrides
-
-`ClientBase.constructor`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/interactions.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/interactions.ts#L87)
-
-## Properties
-
-### \_twitterClient
-
-> `static` **\_twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase._twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:86](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L86)
-
-***
-
-### twitterClient
-
-> **twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase.twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L87)
-
-***
-
-### runtime
-
-> **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Inherited from
-
-`ClientBase.runtime`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:88](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L88)
-
-***
-
-### directions
-
-> **directions**: `string`
-
-#### Inherited from
-
-`ClientBase.directions`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:89](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L89)
-
-***
-
-### lastCheckedTweetId
-
-> **lastCheckedTweetId**: `number` = `null`
-
-#### Inherited from
-
-`ClientBase.lastCheckedTweetId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:90](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L90)
-
-***
-
-### tweetCacheFilePath
-
-> **tweetCacheFilePath**: `string` = `"tweetcache/latest_checked_tweet_id.txt"`
-
-#### Inherited from
-
-`ClientBase.tweetCacheFilePath`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:91](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L91)
-
-***
-
-### imageDescriptionService
-
-> **imageDescriptionService**: `ImageDescriptionService`
-
-#### Inherited from
-
-`ClientBase.imageDescriptionService`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:92](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L92)
-
-***
-
-### temperature
-
-> **temperature**: `number` = `0.5`
-
-#### Inherited from
-
-`ClientBase.temperature`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L93)
-
-***
-
-### requestQueue
-
-> **requestQueue**: `RequestQueue`
-
-#### Inherited from
-
-`ClientBase.requestQueue`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:96](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L96)
-
-***
-
-### twitterUserId
-
-> **twitterUserId**: `string`
-
-#### Inherited from
-
-`ClientBase.twitterUserId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:97](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L97)
-
-***
-
-### callback()
-
-> **callback**: (`self`) => `any` = `null`
-
-#### Parameters
-
-• **self**: `ClientBase`
-
-#### Returns
-
-`any`
-
-#### Inherited from
-
-`ClientBase.callback`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L150)
-
-## Methods
-
-### cacheTweet()
-
-> **cacheTweet**(`tweet`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **tweet**: `Tweet`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.cacheTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L99)
-
-***
-
-### getCachedTweet()
-
-> **getCachedTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getCachedTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:115](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L115)
-
-***
-
-### getTweet()
-
-> **getTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:137](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L137)
-
-***
-
-### fetchHomeTimeline()
-
-> **fetchHomeTimeline**(`count`): `Promise`\<`Tweet`[]\>
-
-#### Parameters
-
-• **count**: `number`
-
-#### Returns
-
-`Promise`\<`Tweet`[]\>
-
-#### Inherited from
-
-`ClientBase.fetchHomeTimeline`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:278](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L278)
-
-***
-
-### fetchSearchTweets()
-
-> **fetchSearchTweets**(`query`, `maxTweets`, `searchMode`, `cursor`?): `Promise`\<`QueryTweetsResponse`\>
-
-#### Parameters
-
-• **query**: `string`
-
-• **maxTweets**: `number`
-
-• **searchMode**: `SearchMode`
-
-• **cursor?**: `string`
-
-#### Returns
-
-`Promise`\<`QueryTweetsResponse`\>
-
-#### Inherited from
-
-`ClientBase.fetchSearchTweets`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:330](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L330)
-
-***
-
-### setCookiesFromArray()
-
-> **setCookiesFromArray**(`cookiesArray`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **cookiesArray**: `any`[]
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.setCookiesFromArray`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:560](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L560)
-
-***
-
-### saveRequestMessage()
-
-> **saveRequestMessage**(`message`, `state`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **message**: [`Memory`](../interfaces/Memory.md)
-
-• **state**: [`State`](../interfaces/State.md)
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.saveRequestMessage`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:572](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L572)
-
-***
-
-### onReady()
-
-> **onReady**(): `void`
-
-#### Returns
-
-`void`
-
-#### Overrides
-
-`ClientBase.onReady`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/interactions.ts:76](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/interactions.ts#L76)
-
-***
-
-### handleTwitterInteractions()
-
-> **handleTwitterInteractions**(): `Promise`\<`void`\>
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/clients/twitter/interactions.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/interactions.ts#L93)
diff --git a/docs/api/classes/TwitterPostClient.md b/docs/api/classes/TwitterPostClient.md
deleted file mode 100644
index 32b2cc5821b..00000000000
--- a/docs/api/classes/TwitterPostClient.md
+++ /dev/null
@@ -1,369 +0,0 @@
-# Class: TwitterPostClient
-
-## Extends
-
-- `ClientBase`
-
-## Constructors
-
-### new TwitterPostClient()
-
-> **new TwitterPostClient**(`runtime`): [`TwitterPostClient`](TwitterPostClient.md)
-
-#### Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Returns
-
-[`TwitterPostClient`](TwitterPostClient.md)
-
-#### Overrides
-
-`ClientBase.constructor`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/post.ts:41](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/post.ts#L41)
-
-## Properties
-
-### \_twitterClient
-
-> `static` **\_twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase._twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:86](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L86)
-
-***
-
-### twitterClient
-
-> **twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase.twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L87)
-
-***
-
-### runtime
-
-> **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Inherited from
-
-`ClientBase.runtime`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:88](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L88)
-
-***
-
-### directions
-
-> **directions**: `string`
-
-#### Inherited from
-
-`ClientBase.directions`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:89](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L89)
-
-***
-
-### lastCheckedTweetId
-
-> **lastCheckedTweetId**: `number` = `null`
-
-#### Inherited from
-
-`ClientBase.lastCheckedTweetId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:90](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L90)
-
-***
-
-### tweetCacheFilePath
-
-> **tweetCacheFilePath**: `string` = `"tweetcache/latest_checked_tweet_id.txt"`
-
-#### Inherited from
-
-`ClientBase.tweetCacheFilePath`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:91](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L91)
-
-***
-
-### imageDescriptionService
-
-> **imageDescriptionService**: `ImageDescriptionService`
-
-#### Inherited from
-
-`ClientBase.imageDescriptionService`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:92](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L92)
-
-***
-
-### temperature
-
-> **temperature**: `number` = `0.5`
-
-#### Inherited from
-
-`ClientBase.temperature`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L93)
-
-***
-
-### requestQueue
-
-> **requestQueue**: `RequestQueue`
-
-#### Inherited from
-
-`ClientBase.requestQueue`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:96](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L96)
-
-***
-
-### twitterUserId
-
-> **twitterUserId**: `string`
-
-#### Inherited from
-
-`ClientBase.twitterUserId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:97](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L97)
-
-***
-
-### callback()
-
-> **callback**: (`self`) => `any` = `null`
-
-#### Parameters
-
-• **self**: `ClientBase`
-
-#### Returns
-
-`any`
-
-#### Inherited from
-
-`ClientBase.callback`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L150)
-
-## Methods
-
-### cacheTweet()
-
-> **cacheTweet**(`tweet`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **tweet**: `Tweet`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.cacheTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L99)
-
-***
-
-### getCachedTweet()
-
-> **getCachedTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getCachedTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:115](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L115)
-
-***
-
-### getTweet()
-
-> **getTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:137](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L137)
-
-***
-
-### fetchHomeTimeline()
-
-> **fetchHomeTimeline**(`count`): `Promise`\<`Tweet`[]\>
-
-#### Parameters
-
-• **count**: `number`
-
-#### Returns
-
-`Promise`\<`Tweet`[]\>
-
-#### Inherited from
-
-`ClientBase.fetchHomeTimeline`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:278](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L278)
-
-***
-
-### fetchSearchTweets()
-
-> **fetchSearchTweets**(`query`, `maxTweets`, `searchMode`, `cursor`?): `Promise`\<`QueryTweetsResponse`\>
-
-#### Parameters
-
-• **query**: `string`
-
-• **maxTweets**: `number`
-
-• **searchMode**: `SearchMode`
-
-• **cursor?**: `string`
-
-#### Returns
-
-`Promise`\<`QueryTweetsResponse`\>
-
-#### Inherited from
-
-`ClientBase.fetchSearchTweets`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:330](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L330)
-
-***
-
-### setCookiesFromArray()
-
-> **setCookiesFromArray**(`cookiesArray`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **cookiesArray**: `any`[]
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.setCookiesFromArray`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:560](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L560)
-
-***
-
-### saveRequestMessage()
-
-> **saveRequestMessage**(`message`, `state`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **message**: [`Memory`](../interfaces/Memory.md)
-
-• **state**: [`State`](../interfaces/State.md)
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.saveRequestMessage`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:572](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L572)
-
-***
-
-### onReady()
-
-> **onReady**(): `void`
-
-#### Returns
-
-`void`
-
-#### Overrides
-
-`ClientBase.onReady`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/post.ts:28](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/post.ts#L28)
diff --git a/docs/api/classes/TwitterSearchClient.md b/docs/api/classes/TwitterSearchClient.md
deleted file mode 100644
index 54b77a9f1b1..00000000000
--- a/docs/api/classes/TwitterSearchClient.md
+++ /dev/null
@@ -1,369 +0,0 @@
-# Class: TwitterSearchClient
-
-## Extends
-
-- `ClientBase`
-
-## Constructors
-
-### new TwitterSearchClient()
-
-> **new TwitterSearchClient**(`runtime`): [`TwitterSearchClient`](TwitterSearchClient.md)
-
-#### Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Returns
-
-[`TwitterSearchClient`](TwitterSearchClient.md)
-
-#### Overrides
-
-`ClientBase.constructor`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/search.ts:53](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/search.ts#L53)
-
-## Properties
-
-### \_twitterClient
-
-> `static` **\_twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase._twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:86](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L86)
-
-***
-
-### twitterClient
-
-> **twitterClient**: `Scraper`
-
-#### Inherited from
-
-`ClientBase.twitterClient`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:87](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L87)
-
-***
-
-### runtime
-
-> **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-#### Inherited from
-
-`ClientBase.runtime`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:88](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L88)
-
-***
-
-### directions
-
-> **directions**: `string`
-
-#### Inherited from
-
-`ClientBase.directions`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:89](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L89)
-
-***
-
-### lastCheckedTweetId
-
-> **lastCheckedTweetId**: `number` = `null`
-
-#### Inherited from
-
-`ClientBase.lastCheckedTweetId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:90](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L90)
-
-***
-
-### tweetCacheFilePath
-
-> **tweetCacheFilePath**: `string` = `"tweetcache/latest_checked_tweet_id.txt"`
-
-#### Inherited from
-
-`ClientBase.tweetCacheFilePath`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:91](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L91)
-
-***
-
-### imageDescriptionService
-
-> **imageDescriptionService**: `ImageDescriptionService`
-
-#### Inherited from
-
-`ClientBase.imageDescriptionService`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:92](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L92)
-
-***
-
-### temperature
-
-> **temperature**: `number` = `0.5`
-
-#### Inherited from
-
-`ClientBase.temperature`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:93](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L93)
-
-***
-
-### requestQueue
-
-> **requestQueue**: `RequestQueue`
-
-#### Inherited from
-
-`ClientBase.requestQueue`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:96](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L96)
-
-***
-
-### twitterUserId
-
-> **twitterUserId**: `string`
-
-#### Inherited from
-
-`ClientBase.twitterUserId`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:97](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L97)
-
-***
-
-### callback()
-
-> **callback**: (`self`) => `any` = `null`
-
-#### Parameters
-
-• **self**: `ClientBase`
-
-#### Returns
-
-`any`
-
-#### Inherited from
-
-`ClientBase.callback`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L150)
-
-## Methods
-
-### cacheTweet()
-
-> **cacheTweet**(`tweet`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **tweet**: `Tweet`
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.cacheTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:99](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L99)
-
-***
-
-### getCachedTweet()
-
-> **getCachedTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getCachedTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:115](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L115)
-
-***
-
-### getTweet()
-
-> **getTweet**(`tweetId`): `Promise`\<`Tweet`\>
-
-#### Parameters
-
-• **tweetId**: `string`
-
-#### Returns
-
-`Promise`\<`Tweet`\>
-
-#### Inherited from
-
-`ClientBase.getTweet`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:137](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L137)
-
-***
-
-### fetchHomeTimeline()
-
-> **fetchHomeTimeline**(`count`): `Promise`\<`Tweet`[]\>
-
-#### Parameters
-
-• **count**: `number`
-
-#### Returns
-
-`Promise`\<`Tweet`[]\>
-
-#### Inherited from
-
-`ClientBase.fetchHomeTimeline`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:278](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L278)
-
-***
-
-### fetchSearchTweets()
-
-> **fetchSearchTweets**(`query`, `maxTweets`, `searchMode`, `cursor`?): `Promise`\<`QueryTweetsResponse`\>
-
-#### Parameters
-
-• **query**: `string`
-
-• **maxTweets**: `number`
-
-• **searchMode**: `SearchMode`
-
-• **cursor?**: `string`
-
-#### Returns
-
-`Promise`\<`QueryTweetsResponse`\>
-
-#### Inherited from
-
-`ClientBase.fetchSearchTweets`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:330](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L330)
-
-***
-
-### setCookiesFromArray()
-
-> **setCookiesFromArray**(`cookiesArray`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **cookiesArray**: `any`[]
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.setCookiesFromArray`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:560](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L560)
-
-***
-
-### saveRequestMessage()
-
-> **saveRequestMessage**(`message`, `state`): `Promise`\<`void`\>
-
-#### Parameters
-
-• **message**: [`Memory`](../interfaces/Memory.md)
-
-• **state**: [`State`](../interfaces/State.md)
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Inherited from
-
-`ClientBase.saveRequestMessage`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/base.ts:572](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/base.ts#L572)
-
-***
-
-### onReady()
-
-> **onReady**(): `Promise`\<`void`\>
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Overrides
-
-`ClientBase.onReady`
-
-#### Defined in
-
-[packages/core/src/clients/twitter/search.ts:60](https://github.com/ai16z/eliza/blob/main/packages/core/src/clients/twitter/search.ts#L60)
diff --git a/docs/api/classes/WalletProvider.md b/docs/api/classes/WalletProvider.md
deleted file mode 100644
index ebbb8ee0195..00000000000
--- a/docs/api/classes/WalletProvider.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Class: WalletProvider
-
-## Constructors
-
-### new WalletProvider()
-
-> **new WalletProvider**(`connection`, `walletPublicKey`): [`WalletProvider`](WalletProvider.md)
-
-#### Parameters
-
-• **connection**: `Connection`
-
-• **walletPublicKey**: `PublicKey`
-
-#### Returns
-
-[`WalletProvider`](WalletProvider.md)
-
-#### Defined in
-
-[packages/core/src/providers/wallet.ts:53](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L53)
-
-## Methods
-
-### fetchPortfolioValue()
-
-> **fetchPortfolioValue**(`runtime`): `Promise`\<`WalletPortfolio`\>
-
-#### Parameters
-
-• **runtime**: `any`
-
-#### Returns
-
-`Promise`\<`WalletPortfolio`\>
-
-#### Defined in
-
-[packages/core/src/providers/wallet.ts:105](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L105)
-
-***
-
-### fetchPrices()
-
-> **fetchPrices**(`runtime`): `Promise`\<`Prices`\>
-
-#### Parameters
-
-• **runtime**: `any`
-
-#### Returns
-
-`Promise`\<`Prices`\>
-
-#### Defined in
-
-[packages/core/src/providers/wallet.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L150)
-
-***
-
-### formatPortfolio()
-
-> **formatPortfolio**(`runtime`, `portfolio`, `prices`): `string`
-
-#### Parameters
-
-• **runtime**: `any`
-
-• **portfolio**: `WalletPortfolio`
-
-• **prices**: `Prices`
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[packages/core/src/providers/wallet.ts:192](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L192)
-
-***
-
-### getFormattedPortfolio()
-
-> **getFormattedPortfolio**(`runtime`): `Promise`\<`string`\>
-
-#### Parameters
-
-• **runtime**: `any`
-
-#### Returns
-
-`Promise`\<`string`\>
-
-#### Defined in
-
-[packages/core/src/providers/wallet.ts:229](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L229)
diff --git a/docs/api/enumerations/Clients.md b/docs/api/enumerations/Clients.md
index b9a3a37f934..e90fff74a19 100644
--- a/docs/api/enumerations/Clients.md
+++ b/docs/api/enumerations/Clients.md
@@ -8,9 +8,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:312](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L312)
+[packages/core/src/types.ts:318](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L318)
 
-***
+---
 
 ### DIRECT
 
@@ -18,9 +18,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:313](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L313)
+[packages/core/src/types.ts:319](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L319)
 
-***
+---
 
 ### TWITTER
 
@@ -28,9 +28,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:314](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L314)
+[packages/core/src/types.ts:320](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L320)
 
-***
+---
 
 ### TELEGRAM
 
@@ -38,4 +38,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:315](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L315)
+[packages/core/src/types.ts:321](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L321)
diff --git a/docs/api/enumerations/GoalStatus.md b/docs/api/enumerations/GoalStatus.md
index f5eebfc8391..b382f55496e 100644
--- a/docs/api/enumerations/GoalStatus.md
+++ b/docs/api/enumerations/GoalStatus.md
@@ -8,9 +8,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:58](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L58)
+[packages/core/src/types.ts:57](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L57)
 
-***
+---
 
 ### FAILED
 
@@ -18,14 +18,14 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L59)
+[packages/core/src/types.ts:58](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L58)
 
-***
+---
 
-### IN\_PROGRESS
+### IN_PROGRESS
 
-> **IN\_PROGRESS**: `"IN_PROGRESS"`
+> **IN_PROGRESS**: `"IN_PROGRESS"`
 
 #### Defined in
 
-[packages/core/src/core/types.ts:60](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L60)
+[packages/core/src/types.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L59)
diff --git a/docs/api/enumerations/ImageGenModel.md b/docs/api/enumerations/ImageGenModel.md
deleted file mode 100644
index ff02d2e8272..00000000000
--- a/docs/api/enumerations/ImageGenModel.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Enumeration: ImageGenModel
-
-## Enumeration Members
-
-### TogetherAI
-
-> **TogetherAI**: `"TogetherAI"`
-
-#### Defined in
-
-[packages/core/src/core/imageGenModels.ts:2](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/imageGenModels.ts#L2)
-
-***
-
-### Dalle
-
-> **Dalle**: `"Dalle"`
-
-#### Defined in
-
-[packages/core/src/core/imageGenModels.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/imageGenModels.ts#L3)
diff --git a/docs/api/enumerations/ModelClass.md b/docs/api/enumerations/ModelClass.md
index b24183cdfb3..b80fc26932f 100644
--- a/docs/api/enumerations/ModelClass.md
+++ b/docs/api/enumerations/ModelClass.md
@@ -8,9 +8,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:76](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L76)
+[packages/core/src/types.ts:75](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L75)
 
-***
+---
 
 ### MEDIUM
 
@@ -18,9 +18,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:77](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L77)
+[packages/core/src/types.ts:76](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L76)
 
-***
+---
 
 ### LARGE
 
@@ -28,9 +28,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:78](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L78)
+[packages/core/src/types.ts:77](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L77)
 
-***
+---
 
 ### EMBEDDING
 
@@ -38,4 +38,14 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:79](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L79)
+[packages/core/src/types.ts:78](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L78)
+
+---
+
+### IMAGE
+
+> **IMAGE**: `"image"`
+
+#### Defined in
+
+[packages/core/src/types.ts:79](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L79)
diff --git a/docs/api/enumerations/ModelProvider.md b/docs/api/enumerations/ModelProvider.md
deleted file mode 100644
index f93e9d8427b..00000000000
--- a/docs/api/enumerations/ModelProvider.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Enumeration: ModelProvider
-
-## Enumeration Members
-
-### OPENAI
-
-> **OPENAI**: `"openai"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:115](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L115)
-
-***
-
-### ANTHROPIC
-
-> **ANTHROPIC**: `"anthropic"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:116](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L116)
-
-***
-
-### GROK
-
-> **GROK**: `"grok"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:117](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L117)
-
-***
-
-### GROQ
-
-> **GROQ**: `"groq"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:118](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L118)
-
-***
-
-### LLAMACLOUD
-
-> **LLAMACLOUD**: `"llama_cloud"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:119](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L119)
-
-***
-
-### LLAMALOCAL
-
-> **LLAMALOCAL**: `"llama_local"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L120)
-
-***
-
-### GOOGLE
-
-> **GOOGLE**: `"google"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:121](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L121)
-
-***
-
-### CLAUDE\_VERTEX
-
-> **CLAUDE\_VERTEX**: `"claude_vertex"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:122](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L122)
-
-***
-
-### REDPILL
-
-> **REDPILL**: `"redpill"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:123](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L123)
-
-***
-
-### OLLAMA
-
-> **OLLAMA**: `"ollama"`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:124](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L124)
diff --git a/docs/api/enumerations/ModelProviderName.md b/docs/api/enumerations/ModelProviderName.md
new file mode 100644
index 00000000000..0dbef44ba51
--- /dev/null
+++ b/docs/api/enumerations/ModelProviderName.md
@@ -0,0 +1,101 @@
+# Enumeration: ModelProviderName
+
+## Enumeration Members
+
+### OPENAI
+
+> **OPENAI**: `"openai"`
+
+#### Defined in
+
+[packages/core/src/types.ts:119](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L119)
+
+---
+
+### ANTHROPIC
+
+> **ANTHROPIC**: `"anthropic"`
+
+#### Defined in
+
+[packages/core/src/types.ts:120](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L120)
+
+---
+
+### GROK
+
+> **GROK**: `"grok"`
+
+#### Defined in
+
+[packages/core/src/types.ts:121](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L121)
+
+---
+
+### GROQ
+
+> **GROQ**: `"groq"`
+
+#### Defined in
+
+[packages/core/src/types.ts:122](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L122)
+
+---
+
+### LLAMACLOUD
+
+> **LLAMACLOUD**: `"llama_cloud"`
+
+#### Defined in
+
+[packages/core/src/types.ts:123](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L123)
+
+---
+
+### LLAMALOCAL
+
+> **LLAMALOCAL**: `"llama_local"`
+
+#### Defined in
+
+[packages/core/src/types.ts:124](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L124)
+
+---
+
+### GOOGLE
+
+> **GOOGLE**: `"google"`
+
+#### Defined in
+
+[packages/core/src/types.ts:125](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L125)
+
+---
+
+### CLAUDE_VERTEX
+
+> **CLAUDE_VERTEX**: `"claude_vertex"`
+
+#### Defined in
+
+[packages/core/src/types.ts:126](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L126)
+
+---
+
+### REDPILL
+
+> **REDPILL**: `"redpill"`
+
+#### Defined in
+
+[packages/core/src/types.ts:127](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L127)
+
+---
+
+### OLLAMA
+
+> **OLLAMA**: `"ollama"`
+
+#### Defined in
+
+[packages/core/src/types.ts:128](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L128)
diff --git a/docs/api/enumerations/ServiceType.md b/docs/api/enumerations/ServiceType.md
new file mode 100644
index 00000000000..4be1a88cf08
--- /dev/null
+++ b/docs/api/enumerations/ServiceType.md
@@ -0,0 +1,71 @@
+# Enumeration: ServiceType
+
+## Enumeration Members
+
+### IMAGE_DESCRIPTION
+
+> **IMAGE_DESCRIPTION**: `"image_description"`
+
+#### Defined in
+
+[packages/core/src/types.ts:638](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L638)
+
+---
+
+### TRANSCRIPTION
+
+> **TRANSCRIPTION**: `"transcription"`
+
+#### Defined in
+
+[packages/core/src/types.ts:639](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L639)
+
+---
+
+### VIDEO
+
+> **VIDEO**: `"video"`
+
+#### Defined in
+
+[packages/core/src/types.ts:640](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L640)
+
+---
+
+### TEXT_GENERATION
+
+> **TEXT_GENERATION**: `"text_generation"`
+
+#### Defined in
+
+[packages/core/src/types.ts:641](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L641)
+
+---
+
+### BROWSER
+
+> **BROWSER**: `"browser"`
+
+#### Defined in
+
+[packages/core/src/types.ts:642](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L642)
+
+---
+
+### SPEECH_GENERATION
+
+> **SPEECH_GENERATION**: `"speech_generation"`
+
+#### Defined in
+
+[packages/core/src/types.ts:643](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L643)
+
+---
+
+### PDF
+
+> **PDF**: `"pdf"`
+
+#### Defined in
+
+[packages/core/src/types.ts:644](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L644)
diff --git a/docs/api/functions/addHeader.md b/docs/api/functions/addHeader.md
index 8dab9cae919..60af63c64c7 100644
--- a/docs/api/functions/addHeader.md
+++ b/docs/api/functions/addHeader.md
@@ -37,4 +37,4 @@ const text = addHeader(header, body);
 
 ## Defined in
 
-[packages/core/src/core/context.ts:58](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/context.ts#L58)
+[packages/core/src/context.ts:58](https://github.com/ai16z/eliza/blob/main/packages/core/src/context.ts#L58)
diff --git a/docs/api/functions/buyToken.md b/docs/api/functions/buyToken.md
deleted file mode 100644
index 85a10ba3106..00000000000
--- a/docs/api/functions/buyToken.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Function: buyToken()
-
-> **buyToken**(`__namedParameters`): `Promise`\<`void`\>
-
-## Parameters
-
-• **\_\_namedParameters**
-
-• **\_\_namedParameters.sdk**: `PumpFunSDK`
-
-• **\_\_namedParameters.buyer**: `Keypair`
-
-• **\_\_namedParameters.mint**: `PublicKey`
-
-• **\_\_namedParameters.amount**: `bigint`
-
-• **\_\_namedParameters.priorityFee**: `PriorityFee`
-
-• **\_\_namedParameters.allowOffCurve**: `boolean`
-
-• **\_\_namedParameters.slippage**: `string`
-
-• **\_\_namedParameters.connection**: `Connection`
-
-## Returns
-
-`Promise`\<`void`\>
-
-## Defined in
-
-[packages/core/src/actions/pumpfun.ts:119](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L119)
diff --git a/docs/api/functions/composeActionExamples.md b/docs/api/functions/composeActionExamples.md
index 8fd9a666f9f..231bd51dd1b 100644
--- a/docs/api/functions/composeActionExamples.md
+++ b/docs/api/functions/composeActionExamples.md
@@ -23,4 +23,4 @@ A string containing formatted examples of conversations.
 
 ## Defined in
 
-[packages/core/src/core/actions.ts:18](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/actions.ts#L18)
+[packages/core/src/actions.ts:11](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions.ts#L11)
diff --git a/docs/api/functions/composeContext.md b/docs/api/functions/composeContext.md
index b35fad5e372..a2a8705a09e 100644
--- a/docs/api/functions/composeContext.md
+++ b/docs/api/functions/composeContext.md
@@ -42,4 +42,4 @@ const context = composeContext({ state, template });
 
 ## Defined in
 
-[packages/core/src/core/context.ts:24](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/context.ts#L24)
+[packages/core/src/context.ts:24](https://github.com/ai16z/eliza/blob/main/packages/core/src/context.ts#L24)
diff --git a/docs/api/functions/createAgentRuntime.md b/docs/api/functions/createAgentRuntime.md
deleted file mode 100644
index 6f408831522..00000000000
--- a/docs/api/functions/createAgentRuntime.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Function: createAgentRuntime()
-
-> **createAgentRuntime**(`character`, `db`, `token`, `configPath`): `Promise`\<[`AgentRuntime`](../classes/AgentRuntime.md)\>
-
-## Parameters
-
-• **character**: [`Character`](../type-aliases/Character.md)
-
-• **db**: `any`
-
-• **token**: `string`
-
-• **configPath**: `string` = `"./elizaConfig.yaml"`
-
-## Returns
-
-`Promise`\<[`AgentRuntime`](../classes/AgentRuntime.md)\>
-
-## Defined in
-
-[packages/core/src/cli/index.ts:142](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L142)
diff --git a/docs/api/functions/createAndBuyToken.md b/docs/api/functions/createAndBuyToken.md
deleted file mode 100644
index f0074ba6acc..00000000000
--- a/docs/api/functions/createAndBuyToken.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Function: createAndBuyToken()
-
-> **createAndBuyToken**(`__namedParameters`): `Promise`\<`void`\>
-
-## Parameters
-
-• **\_\_namedParameters**
-
-• **\_\_namedParameters.deployer**: `Keypair`
-
-• **\_\_namedParameters.mint**: `Keypair`
-
-• **\_\_namedParameters.tokenMetadata**: `CreateTokenMetadata`
-
-• **\_\_namedParameters.buyAmountSol**: `bigint`
-
-• **\_\_namedParameters.priorityFee**: `PriorityFee`
-
-• **\_\_namedParameters.allowOffCurve**: `boolean`
-
-• **\_\_namedParameters.commitment?**: `"processed"` \| `"confirmed"` \| `"finalized"` \| `"recent"` \| `"single"` \| `"singleGossip"` \| `"root"` \| `"max"` = `"finalized"`
-
-• **\_\_namedParameters.sdk**: `PumpFunSDK`
-
-• **\_\_namedParameters.connection**: `Connection`
-
-• **\_\_namedParameters.slippage**: `string`
-
-## Returns
-
-`Promise`\<`void`\>
-
-## Defined in
-
-[packages/core/src/actions/pumpfun.ts:51](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L51)
diff --git a/docs/api/functions/createDirectRuntime.md b/docs/api/functions/createDirectRuntime.md
deleted file mode 100644
index 64ce50167c1..00000000000
--- a/docs/api/functions/createDirectRuntime.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Function: createDirectRuntime()
-
-> **createDirectRuntime**(`character`, `db`, `token`, `configPath`): `Promise`\<[`AgentRuntime`](../classes/AgentRuntime.md)\>
-
-## Parameters
-
-• **character**: [`Character`](../type-aliases/Character.md)
-
-• **db**: `any`
-
-• **token**: `string`
-
-• **configPath**: `string` = `"./elizaConfig.yaml"`
-
-## Returns
-
-`Promise`\<[`AgentRuntime`](../classes/AgentRuntime.md)\>
-
-## Defined in
-
-[packages/core/src/cli/index.ts:177](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L177)
diff --git a/docs/api/functions/createGoal.md b/docs/api/functions/createGoal.md
index d2fc00b2803..555b7ce661b 100644
--- a/docs/api/functions/createGoal.md
+++ b/docs/api/functions/createGoal.md
@@ -16,4 +16,4 @@
 
 ## Defined in
 
-[packages/core/src/core/goals.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/goals.ts#L54)
+[packages/core/src/goals.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/goals.ts#L54)
diff --git a/docs/api/functions/createRelationship.md b/docs/api/functions/createRelationship.md
index a784ce4517f..1413ab441b4 100644
--- a/docs/api/functions/createRelationship.md
+++ b/docs/api/functions/createRelationship.md
@@ -18,4 +18,4 @@
 
 ## Defined in
 
-[packages/core/src/core/relationships.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/relationships.ts#L3)
+[packages/core/src/relationships.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/relationships.ts#L3)
diff --git a/docs/api/functions/embed.md b/docs/api/functions/embed.md
index 54b84f3fe4a..437c7e00488 100644
--- a/docs/api/functions/embed.md
+++ b/docs/api/functions/embed.md
@@ -20,4 +20,4 @@ The embedding of the input.
 
 ## Defined in
 
-[packages/core/src/core/embedding.ts:9](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/embedding.ts#L9)
+[packages/core/src/embedding.ts:14](https://github.com/ai16z/eliza/blob/main/packages/core/src/embedding.ts#L14)
diff --git a/docs/api/functions/formatActionNames.md b/docs/api/functions/formatActionNames.md
index e0073f75476..0672c8bb8d1 100644
--- a/docs/api/functions/formatActionNames.md
+++ b/docs/api/functions/formatActionNames.md
@@ -18,4 +18,4 @@ A comma-separated string of action names.
 
 ## Defined in
 
-[packages/core/src/core/actions.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/actions.ts#L54)
+[packages/core/src/actions.ts:47](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions.ts#L47)
diff --git a/docs/api/functions/formatActions.md b/docs/api/functions/formatActions.md
index 9a3645e78ef..a2ff54a599e 100644
--- a/docs/api/functions/formatActions.md
+++ b/docs/api/functions/formatActions.md
@@ -18,4 +18,4 @@ A detailed string of actions, including names and descriptions.
 
 ## Defined in
 
-[packages/core/src/core/actions.ts:66](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/actions.ts#L66)
+[packages/core/src/actions.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions.ts#L59)
diff --git a/docs/api/functions/formatActors.md b/docs/api/functions/formatActors.md
index ba8500d8483..f8493a31be1 100644
--- a/docs/api/functions/formatActors.md
+++ b/docs/api/functions/formatActors.md
@@ -20,4 +20,4 @@ string
 
 ## Defined in
 
-[packages/core/src/core/messages.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/messages.ts#L45)
+[packages/core/src/messages.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/messages.ts#L45)
diff --git a/docs/api/functions/formatEvaluatorExampleDescriptions.md b/docs/api/functions/formatEvaluatorExampleDescriptions.md
index 45bcb4d89be..c1b3cadaf4c 100644
--- a/docs/api/functions/formatEvaluatorExampleDescriptions.md
+++ b/docs/api/functions/formatEvaluatorExampleDescriptions.md
@@ -18,4 +18,4 @@ A string that summarizes the descriptions for each evaluator example, formatted
 
 ## Defined in
 
-[packages/core/src/core/evaluators.ts:114](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L114)
+[packages/core/src/evaluators.ts:110](https://github.com/ai16z/eliza/blob/main/packages/core/src/evaluators.ts#L110)
diff --git a/docs/api/functions/formatEvaluatorExamples.md b/docs/api/functions/formatEvaluatorExamples.md
index ef74094bc09..a2264765f52 100644
--- a/docs/api/functions/formatEvaluatorExamples.md
+++ b/docs/api/functions/formatEvaluatorExamples.md
@@ -18,4 +18,4 @@ A string that presents each evaluator example in a structured format, including
 
 ## Defined in
 
-[packages/core/src/core/evaluators.ts:59](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L59)
+[packages/core/src/evaluators.ts:55](https://github.com/ai16z/eliza/blob/main/packages/core/src/evaluators.ts#L55)
diff --git a/docs/api/functions/formatEvaluatorNames.md b/docs/api/functions/formatEvaluatorNames.md
index 365e0b6efac..abbc5a90943 100644
--- a/docs/api/functions/formatEvaluatorNames.md
+++ b/docs/api/functions/formatEvaluatorNames.md
@@ -18,4 +18,4 @@ A string that concatenates the names of all evaluators, each enclosed in single
 
 ## Defined in
 
-[packages/core/src/core/evaluators.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L34)
+[packages/core/src/evaluators.ts:30](https://github.com/ai16z/eliza/blob/main/packages/core/src/evaluators.ts#L30)
diff --git a/docs/api/functions/formatEvaluators.md b/docs/api/functions/formatEvaluators.md
index daf7ee33916..0c141b403c5 100644
--- a/docs/api/functions/formatEvaluators.md
+++ b/docs/api/functions/formatEvaluators.md
@@ -18,4 +18,4 @@ A string that concatenates the name and description of each evaluator, separated
 
 ## Defined in
 
-[packages/core/src/core/evaluators.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L45)
+[packages/core/src/evaluators.ts:41](https://github.com/ai16z/eliza/blob/main/packages/core/src/evaluators.ts#L41)
diff --git a/docs/api/functions/formatGoalsAsString.md b/docs/api/functions/formatGoalsAsString.md
index 66f23f1e17f..72d98f69a3b 100644
--- a/docs/api/functions/formatGoalsAsString.md
+++ b/docs/api/functions/formatGoalsAsString.md
@@ -14,4 +14,4 @@
 
 ## Defined in
 
-[packages/core/src/core/goals.ts:29](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/goals.ts#L29)
+[packages/core/src/goals.ts:29](https://github.com/ai16z/eliza/blob/main/packages/core/src/goals.ts#L29)
diff --git a/docs/api/functions/formatMessages.md b/docs/api/functions/formatMessages.md
index d2e5ee0a0bf..ee3dd0f1277 100644
--- a/docs/api/functions/formatMessages.md
+++ b/docs/api/functions/formatMessages.md
@@ -20,4 +20,4 @@ string
 
 ## Defined in
 
-[packages/core/src/core/messages.ts:60](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/messages.ts#L60)
+[packages/core/src/messages.ts:60](https://github.com/ai16z/eliza/blob/main/packages/core/src/messages.ts#L60)
diff --git a/docs/api/functions/formatPosts.md b/docs/api/functions/formatPosts.md
index de58de9a4be..576a1c19ac1 100644
--- a/docs/api/functions/formatPosts.md
+++ b/docs/api/functions/formatPosts.md
@@ -18,4 +18,4 @@
 
 ## Defined in
 
-[packages/core/src/core/posts.ts:4](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/posts.ts#L4)
+[packages/core/src/posts.ts:4](https://github.com/ai16z/eliza/blob/main/packages/core/src/posts.ts#L4)
diff --git a/docs/api/functions/formatRelationships.md b/docs/api/functions/formatRelationships.md
index 5fbe919c226..3a17f7a8529 100644
--- a/docs/api/functions/formatRelationships.md
+++ b/docs/api/functions/formatRelationships.md
@@ -16,4 +16,4 @@
 
 ## Defined in
 
-[packages/core/src/core/relationships.ts:43](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/relationships.ts#L43)
+[packages/core/src/relationships.ts:43](https://github.com/ai16z/eliza/blob/main/packages/core/src/relationships.ts#L43)
diff --git a/docs/api/functions/formatTimestamp.md b/docs/api/functions/formatTimestamp.md
index 4fd55ca4c07..14eb0937614 100644
--- a/docs/api/functions/formatTimestamp.md
+++ b/docs/api/functions/formatTimestamp.md
@@ -12,4 +12,4 @@
 
 ## Defined in
 
-[packages/core/src/core/messages.ts:94](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/messages.ts#L94)
+[packages/core/src/messages.ts:94](https://github.com/ai16z/eliza/blob/main/packages/core/src/messages.ts#L94)
diff --git a/docs/api/functions/generateCaption.md b/docs/api/functions/generateCaption.md
index 5d2d6376fab..da65f279938 100644
--- a/docs/api/functions/generateCaption.md
+++ b/docs/api/functions/generateCaption.md
@@ -24,4 +24,4 @@
 
 ## Defined in
 
-[packages/core/src/actions/imageGenerationUtils.ts:90](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/imageGenerationUtils.ts#L90)
+[packages/core/src/generation.ts:687](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L687)
diff --git a/docs/api/functions/generateImage.md b/docs/api/functions/generateImage.md
index 5174f3e5bb7..a9c1e1a1777 100644
--- a/docs/api/functions/generateImage.md
+++ b/docs/api/functions/generateImage.md
@@ -34,4 +34,4 @@
 
 ## Defined in
 
-[packages/core/src/actions/imageGenerationUtils.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/imageGenerationUtils.ts#L8)
+[packages/core/src/generation.ts:603](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L603)
diff --git a/docs/api/functions/generateMessageResponse.md b/docs/api/functions/generateMessageResponse.md
index 08ebd06173c..85b0928fa72 100644
--- a/docs/api/functions/generateMessageResponse.md
+++ b/docs/api/functions/generateMessageResponse.md
@@ -26,4 +26,4 @@ The completed message.
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:549](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L549)
+[packages/core/src/generation.ts:565](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L565)
diff --git a/docs/api/functions/generateObject.md b/docs/api/functions/generateObject.md
index e7d371137a9..e9b3a2c465e 100644
--- a/docs/api/functions/generateObject.md
+++ b/docs/api/functions/generateObject.md
@@ -18,4 +18,4 @@
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:465](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L465)
+[packages/core/src/generation.ts:481](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L481)
diff --git a/docs/api/functions/generateObjectArray.md b/docs/api/functions/generateObjectArray.md
index fc3df4ba655..c44e775c0e6 100644
--- a/docs/api/functions/generateObjectArray.md
+++ b/docs/api/functions/generateObjectArray.md
@@ -18,4 +18,4 @@
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:501](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L501)
+[packages/core/src/generation.ts:517](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L517)
diff --git a/docs/api/functions/generateShouldRespond.md b/docs/api/functions/generateShouldRespond.md
index cdf2d03af5b..ec91ac062bd 100644
--- a/docs/api/functions/generateShouldRespond.md
+++ b/docs/api/functions/generateShouldRespond.md
@@ -26,4 +26,4 @@ Promise resolving to "RESPOND", "IGNORE", "STOP" or null
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:273](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L273)
+[packages/core/src/generation.ts:289](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L289)
diff --git a/docs/api/functions/generateText.md b/docs/api/functions/generateText.md
index fd2f5f220fc..18c3f1d4caf 100644
--- a/docs/api/functions/generateText.md
+++ b/docs/api/functions/generateText.md
@@ -30,4 +30,4 @@ The completed message.
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:31](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L31)
+[packages/core/src/generation.ts:42](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L42)
diff --git a/docs/api/functions/generateTextArray.md b/docs/api/functions/generateTextArray.md
index fed1f124bb9..af9d3ce8461 100644
--- a/docs/api/functions/generateTextArray.md
+++ b/docs/api/functions/generateTextArray.md
@@ -26,4 +26,4 @@ Promise resolving to an array of strings parsed from the model's response
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:429](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L429)
+[packages/core/src/generation.ts:445](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L445)
diff --git a/docs/api/functions/generateTrueOrFalse.md b/docs/api/functions/generateTrueOrFalse.md
index ea91c270888..47b0deeaf24 100644
--- a/docs/api/functions/generateTrueOrFalse.md
+++ b/docs/api/functions/generateTrueOrFalse.md
@@ -26,4 +26,4 @@ Promise resolving to a boolean value parsed from the model's response
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:377](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L377)
+[packages/core/src/generation.ts:393](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L393)
diff --git a/docs/api/functions/getActorDetails.md b/docs/api/functions/getActorDetails.md
index 545a980fa78..ac42b28d4de 100644
--- a/docs/api/functions/getActorDetails.md
+++ b/docs/api/functions/getActorDetails.md
@@ -18,4 +18,4 @@ Get details for a list of actors.
 
 ## Defined in
 
-[packages/core/src/core/messages.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/messages.ts#L12)
+[packages/core/src/messages.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/messages.ts#L12)
diff --git a/docs/api/functions/getEndpoint.md b/docs/api/functions/getEndpoint.md
index 65a865daa91..f1289e1d35e 100644
--- a/docs/api/functions/getEndpoint.md
+++ b/docs/api/functions/getEndpoint.md
@@ -4,7 +4,7 @@
 
 ## Parameters
 
-• **provider**: [`ModelProvider`](../enumerations/ModelProvider.md)
+• **provider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
 
 ## Returns
 
@@ -12,4 +12,4 @@
 
 ## Defined in
 
-[packages/core/src/core/models.ts:183](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/models.ts#L183)
+[packages/core/src/models.ts:198](https://github.com/ai16z/eliza/blob/main/packages/core/src/models.ts#L198)
diff --git a/docs/api/functions/getGoals.md b/docs/api/functions/getGoals.md
index 52cda4a7c39..4471924e1e3 100644
--- a/docs/api/functions/getGoals.md
+++ b/docs/api/functions/getGoals.md
@@ -22,4 +22,4 @@
 
 ## Defined in
 
-[packages/core/src/core/goals.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/goals.ts#L8)
+[packages/core/src/goals.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/goals.ts#L8)
diff --git a/docs/api/functions/getImageGenModel.md b/docs/api/functions/getImageGenModel.md
deleted file mode 100644
index 2251cc7a8a3..00000000000
--- a/docs/api/functions/getImageGenModel.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: getImageGenModel()
-
-> **getImageGenModel**(`model`): `object` \| `object`
-
-## Parameters
-
-• **model**: [`ImageGenModel`](../enumerations/ImageGenModel.md)
-
-## Returns
-
-`object` \| `object`
-
-## Defined in
-
-[packages/core/src/core/imageGenModels.ts:17](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/imageGenModels.ts#L17)
diff --git a/docs/api/functions/getModel.md b/docs/api/functions/getModel.md
index 38c8293d586..5a6ddf3aad3 100644
--- a/docs/api/functions/getModel.md
+++ b/docs/api/functions/getModel.md
@@ -4,7 +4,7 @@
 
 ## Parameters
 
-• **provider**: [`ModelProvider`](../enumerations/ModelProvider.md)
+• **provider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
 
 • **type**: [`ModelClass`](../enumerations/ModelClass.md)
 
@@ -14,4 +14,4 @@
 
 ## Defined in
 
-[packages/core/src/core/models.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/models.ts#L179)
+[packages/core/src/models.ts:194](https://github.com/ai16z/eliza/blob/main/packages/core/src/models.ts#L194)
diff --git a/docs/api/functions/getProviders.md b/docs/api/functions/getProviders.md
index 83846e74784..78e6a10532b 100644
--- a/docs/api/functions/getProviders.md
+++ b/docs/api/functions/getProviders.md
@@ -26,4 +26,4 @@ A string that concatenates the outputs of each provider.
 
 ## Defined in
 
-[packages/core/src/core/providers.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/providers.ts#L13)
+[packages/core/src/providers.ts:10](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers.ts#L10)
diff --git a/docs/api/functions/getRelationship.md b/docs/api/functions/getRelationship.md
index 5d15b6eddea..f0dac6db2ad 100644
--- a/docs/api/functions/getRelationship.md
+++ b/docs/api/functions/getRelationship.md
@@ -18,4 +18,4 @@
 
 ## Defined in
 
-[packages/core/src/core/relationships.ts:18](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/relationships.ts#L18)
+[packages/core/src/relationships.ts:18](https://github.com/ai16z/eliza/blob/main/packages/core/src/relationships.ts#L18)
diff --git a/docs/api/functions/getRelationships.md b/docs/api/functions/getRelationships.md
index 80813aaeacd..9e0a04e9e47 100644
--- a/docs/api/functions/getRelationships.md
+++ b/docs/api/functions/getRelationships.md
@@ -16,4 +16,4 @@
 
 ## Defined in
 
-[packages/core/src/core/relationships.ts:33](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/relationships.ts#L33)
+[packages/core/src/relationships.ts:33](https://github.com/ai16z/eliza/blob/main/packages/core/src/relationships.ts#L33)
diff --git a/docs/api/functions/getTokenForProvider.md b/docs/api/functions/getTokenForProvider.md
deleted file mode 100644
index 017040b43b3..00000000000
--- a/docs/api/functions/getTokenForProvider.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Function: getTokenForProvider()
-
-> **getTokenForProvider**(`provider`, `character`): `string`
-
-## Parameters
-
-• **provider**: [`ModelProvider`](../enumerations/ModelProvider.md)
-
-• **character**: [`Character`](../type-aliases/Character.md)
-
-## Returns
-
-`string`
-
-## Defined in
-
-[packages/core/src/cli/index.ts:108](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L108)
diff --git a/docs/api/functions/initializeClients.md b/docs/api/functions/initializeClients.md
deleted file mode 100644
index dec2f80f636..00000000000
--- a/docs/api/functions/initializeClients.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Function: initializeClients()
-
-> **initializeClients**(`character`, `runtime`): `Promise`\<`any`[]\>
-
-## Parameters
-
-• **character**: [`Character`](../type-aliases/Character.md)
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-## Returns
-
-`Promise`\<`any`[]\>
-
-## Defined in
-
-[packages/core/src/cli/index.ts:21](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L21)
diff --git a/docs/api/functions/initializeDatabase.md b/docs/api/functions/initializeDatabase.md
deleted file mode 100644
index 486775902c3..00000000000
--- a/docs/api/functions/initializeDatabase.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Function: initializeDatabase()
-
-> **initializeDatabase**(): [`PostgresDatabaseAdapter`](../classes/PostgresDatabaseAdapter.md) \| [`SqliteDatabaseAdapter`](../classes/SqliteDatabaseAdapter.md)
-
-## Returns
-
-[`PostgresDatabaseAdapter`](../classes/PostgresDatabaseAdapter.md) \| [`SqliteDatabaseAdapter`](../classes/SqliteDatabaseAdapter.md)
-
-## Defined in
-
-[packages/core/src/cli/index.ts:132](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L132)
diff --git a/docs/api/functions/isCreateAndBuyContent.md b/docs/api/functions/isCreateAndBuyContent.md
deleted file mode 100644
index 4107ab0dde5..00000000000
--- a/docs/api/functions/isCreateAndBuyContent.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Function: isCreateAndBuyContent()
-
-> **isCreateAndBuyContent**(`runtime`, `content`): `content is CreateAndBuyContent`
-
-## Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-• **content**: `any`
-
-## Returns
-
-`content is CreateAndBuyContent`
-
-## Defined in
-
-[packages/core/src/actions/pumpfun.ts:33](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L33)
diff --git a/docs/api/functions/loadActionConfigs.md b/docs/api/functions/loadActionConfigs.md
deleted file mode 100644
index 5ada9011679..00000000000
--- a/docs/api/functions/loadActionConfigs.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: loadActionConfigs()
-
-> **loadActionConfigs**(`configPath`): `ActionConfig`[]
-
-## Parameters
-
-• **configPath**: `string`
-
-## Returns
-
-`ActionConfig`[]
-
-## Defined in
-
-[packages/core/src/cli/config.ts:15](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/config.ts#L15)
diff --git a/docs/api/functions/loadCharacters.md b/docs/api/functions/loadCharacters.md
deleted file mode 100644
index 59bb5adcc49..00000000000
--- a/docs/api/functions/loadCharacters.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: loadCharacters()
-
-> **loadCharacters**(`charactersArg`): [`Character`](../type-aliases/Character.md)[]
-
-## Parameters
-
-• **charactersArg**: `string`
-
-## Returns
-
-[`Character`](../type-aliases/Character.md)[]
-
-## Defined in
-
-[packages/core/src/cli/index.ts:70](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L70)
diff --git a/docs/api/functions/loadCustomActions.md b/docs/api/functions/loadCustomActions.md
deleted file mode 100644
index bb8ce794b63..00000000000
--- a/docs/api/functions/loadCustomActions.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: loadCustomActions()
-
-> **loadCustomActions**(`actionConfigs`): `Promise`\<[`Action`](../interfaces/Action.md)[]\>
-
-## Parameters
-
-• **actionConfigs**: `ActionConfig`[]
-
-## Returns
-
-`Promise`\<[`Action`](../interfaces/Action.md)[]\>
-
-## Defined in
-
-[packages/core/src/cli/config.ts:26](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/config.ts#L26)
diff --git a/docs/api/functions/parseArguments.md b/docs/api/functions/parseArguments.md
deleted file mode 100644
index 4600ec4d625..00000000000
--- a/docs/api/functions/parseArguments.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Function: parseArguments()
-
-> **parseArguments**(): `Arguments`
-
-## Returns
-
-`Arguments`
-
-## Defined in
-
-[packages/core/src/cli/index.ts:46](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L46)
diff --git a/docs/api/functions/retrieveCachedEmbedding.md b/docs/api/functions/retrieveCachedEmbedding.md
index 4b7f74e01fb..daedbc6e05a 100644
--- a/docs/api/functions/retrieveCachedEmbedding.md
+++ b/docs/api/functions/retrieveCachedEmbedding.md
@@ -14,4 +14,4 @@
 
 ## Defined in
 
-[packages/core/src/core/embedding.ts:68](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/embedding.ts#L68)
+[packages/core/src/embedding.ts:80](https://github.com/ai16z/eliza/blob/main/packages/core/src/embedding.ts#L80)
diff --git a/docs/api/functions/sellToken.md b/docs/api/functions/sellToken.md
deleted file mode 100644
index 78039a6dff7..00000000000
--- a/docs/api/functions/sellToken.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Function: sellToken()
-
-> **sellToken**(`__namedParameters`): `Promise`\<`void`\>
-
-## Parameters
-
-• **\_\_namedParameters**
-
-• **\_\_namedParameters.sdk**: `PumpFunSDK`
-
-• **\_\_namedParameters.seller**: `Keypair`
-
-• **\_\_namedParameters.mint**: `PublicKey`
-
-• **\_\_namedParameters.amount**: `bigint`
-
-• **\_\_namedParameters.priorityFee**: `PriorityFee`
-
-• **\_\_namedParameters.allowOffCurve**: `boolean`
-
-• **\_\_namedParameters.slippage**: `string`
-
-• **\_\_namedParameters.connection**: `Connection`
-
-## Returns
-
-`Promise`\<`void`\>
-
-## Defined in
-
-[packages/core/src/actions/pumpfun.ts:167](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L167)
diff --git a/docs/api/functions/splitChunks.md b/docs/api/functions/splitChunks.md
index d58c11b0b78..d2d7dfd536b 100644
--- a/docs/api/functions/splitChunks.md
+++ b/docs/api/functions/splitChunks.md
@@ -30,4 +30,4 @@ Promise resolving to array of text chunks with bleed sections
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:329](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L329)
+[packages/core/src/generation.ts:345](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L345)
diff --git a/docs/api/functions/startDiscord.md b/docs/api/functions/startDiscord.md
deleted file mode 100644
index 0602444dab9..00000000000
--- a/docs/api/functions/startDiscord.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: startDiscord()
-
-> **startDiscord**(`runtime`): [`DiscordClient`](../classes/DiscordClient.md)
-
-## Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-## Returns
-
-[`DiscordClient`](../classes/DiscordClient.md)
-
-## Defined in
-
-[packages/core/src/cli/index.ts:214](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L214)
diff --git a/docs/api/functions/startTelegram.md b/docs/api/functions/startTelegram.md
deleted file mode 100644
index 99a65099293..00000000000
--- a/docs/api/functions/startTelegram.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Function: startTelegram()
-
-> **startTelegram**(`runtime`, `character`): `Promise`\<[`TelegramClient`](../classes/TelegramClient.md)\>
-
-## Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-• **character**: [`Character`](../type-aliases/Character.md)
-
-## Returns
-
-`Promise`\<[`TelegramClient`](../classes/TelegramClient.md)\>
-
-## Defined in
-
-[packages/core/src/cli/index.ts:218](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L218)
diff --git a/docs/api/functions/startTwitter.md b/docs/api/functions/startTwitter.md
deleted file mode 100644
index ebfc4104131..00000000000
--- a/docs/api/functions/startTwitter.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Function: startTwitter()
-
-> **startTwitter**(`runtime`): `Promise`\<([`TwitterPostClient`](../classes/TwitterPostClient.md) \| [`TwitterInteractionClient`](../classes/TwitterInteractionClient.md) \| [`TwitterSearchClient`](../classes/TwitterSearchClient.md))[]\>
-
-## Parameters
-
-• **runtime**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
-
-## Returns
-
-`Promise`\<([`TwitterPostClient`](../classes/TwitterPostClient.md) \| [`TwitterInteractionClient`](../classes/TwitterInteractionClient.md) \| [`TwitterSearchClient`](../classes/TwitterSearchClient.md))[]\>
-
-## Defined in
-
-[packages/core/src/cli/index.ts:248](https://github.com/ai16z/eliza/blob/main/packages/core/src/cli/index.ts#L248)
diff --git a/docs/api/functions/trimTokens.md b/docs/api/functions/trimTokens.md
index 18c36129282..bdcd11550a8 100644
--- a/docs/api/functions/trimTokens.md
+++ b/docs/api/functions/trimTokens.md
@@ -22,4 +22,4 @@ The model to use for generateText.
 
 ## Defined in
 
-[packages/core/src/core/generation.ts:247](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/generation.ts#L247)
+[packages/core/src/generation.ts:263](https://github.com/ai16z/eliza/blob/main/packages/core/src/generation.ts#L263)
diff --git a/docs/api/functions/updateGoal.md b/docs/api/functions/updateGoal.md
index 26555d87c22..de26d1176b7 100644
--- a/docs/api/functions/updateGoal.md
+++ b/docs/api/functions/updateGoal.md
@@ -16,4 +16,4 @@
 
 ## Defined in
 
-[packages/core/src/core/goals.ts:44](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/goals.ts#L44)
+[packages/core/src/goals.ts:44](https://github.com/ai16z/eliza/blob/main/packages/core/src/goals.ts#L44)
diff --git a/docs/api/index.md b/docs/api/index.md
index 3486519b907..3457fad7e5f 100644
--- a/docs/api/index.md
+++ b/docs/api/index.md
@@ -1,32 +1,22 @@
-# @eliza/core v1.0.0
+# @ai16z/eliza v1.0.0
 
 ## Enumerations
 
-- [ImageGenModel](enumerations/ImageGenModel.md)
 - [GoalStatus](enumerations/GoalStatus.md)
 - [ModelClass](enumerations/ModelClass.md)
-- [ModelProvider](enumerations/ModelProvider.md)
+- [ModelProviderName](enumerations/ModelProviderName.md)
 - [Clients](enumerations/Clients.md)
+- [ServiceType](enumerations/ServiceType.md)
 
 ## Classes
 
-- [PostgresDatabaseAdapter](classes/PostgresDatabaseAdapter.md)
-- [SqliteDatabaseAdapter](classes/SqliteDatabaseAdapter.md)
-- [DirectClient](classes/DirectClient.md)
-- [DiscordClient](classes/DiscordClient.md)
-- [TelegramClient](classes/TelegramClient.md)
-- [TwitterInteractionClient](classes/TwitterInteractionClient.md)
-- [TwitterPostClient](classes/TwitterPostClient.md)
-- [TwitterSearchClient](classes/TwitterSearchClient.md)
 - [DatabaseAdapter](classes/DatabaseAdapter.md)
 - [MemoryManager](classes/MemoryManager.md)
 - [AgentRuntime](classes/AgentRuntime.md)
-- [TokenProvider](classes/TokenProvider.md)
-- [WalletProvider](classes/WalletProvider.md)
+- [Service](classes/Service.md)
 
 ## Interfaces
 
-- [CreateAndBuyContent](interfaces/CreateAndBuyContent.md)
 - [Content](interfaces/Content.md)
 - [ActionExample](interfaces/ActionExample.md)
 - [ConversationExample](interfaces/ConversationExample.md)
@@ -47,10 +37,10 @@
 - [IDatabaseAdapter](interfaces/IDatabaseAdapter.md)
 - [IMemoryManager](interfaces/IMemoryManager.md)
 - [IAgentRuntime](interfaces/IAgentRuntime.md)
-- [IImageRecognitionService](interfaces/IImageRecognitionService.md)
+- [IImageDescriptionService](interfaces/IImageDescriptionService.md)
 - [ITranscriptionService](interfaces/ITranscriptionService.md)
 - [IVideoService](interfaces/IVideoService.md)
-- [ILlamaService](interfaces/ILlamaService.md)
+- [ITextGenerationService](interfaces/ITextGenerationService.md)
 - [IBrowserService](interfaces/IBrowserService.md)
 - [ISpeechService](interfaces/ISpeechService.md)
 - [IPdfService](interfaces/IPdfService.md)
@@ -64,61 +54,21 @@
 - [HandlerCallback](type-aliases/HandlerCallback.md)
 - [Validator](type-aliases/Validator.md)
 - [Media](type-aliases/Media.md)
+- [Client](type-aliases/Client.md)
 - [Plugin](type-aliases/Plugin.md)
 - [Character](type-aliases/Character.md)
 
 ## Variables
 
-- [messageHandlerTemplate](variables/messageHandlerTemplate.md)
-- [shouldContinueTemplate](variables/shouldContinueTemplate.md)
-- [continueAction](variables/continueAction.md)
-- [shouldFollowTemplate](variables/shouldFollowTemplate.md)
-- [followRoom](variables/followRoom.md)
-- [ignore](variables/ignore.md)
-- [imageGeneration](variables/imageGeneration.md)
-- [shouldMuteTemplate](variables/shouldMuteTemplate.md)
-- [muteRoom](variables/muteRoom.md)
-- [none](variables/none.md)
-- [executeSwap](variables/executeSwap.md)
-- [unfollowRoom](variables/unfollowRoom.md)
-- [shouldUnmuteTemplate](variables/shouldUnmuteTemplate.md)
-- [unmuteRoom](variables/unmuteRoom.md)
-- [defaultActions](variables/defaultActions.md)
 - [defaultCharacter](variables/defaultCharacter.md)
-- [defaultEvaluators](variables/defaultEvaluators.md)
 - [evaluationTemplate](variables/evaluationTemplate.md)
-- [imageGenModels](variables/imageGenModels.md)
+- [elizaLogger](variables/elizaLogger.md)
 - [embeddingDimension](variables/embeddingDimension.md)
 - [embeddingZeroVector](variables/embeddingZeroVector.md)
-- [defaultProviders](variables/defaultProviders.md)
 - [settings](variables/settings.md)
-- [elizaLogger](variables/elizaLogger.md)
-- [boredomProvider](variables/boredomProvider.md)
-- [orderBookProvider](variables/orderBookProvider.md)
-- [timeProvider](variables/timeProvider.md)
-- [tokenProvider](variables/tokenProvider.md)
-- [walletProvider](variables/walletProvider.md)
 
 ## Functions
 
-- [generateImage](functions/generateImage.md)
-- [generateCaption](functions/generateCaption.md)
-- [isCreateAndBuyContent](functions/isCreateAndBuyContent.md)
-- [createAndBuyToken](functions/createAndBuyToken.md)
-- [buyToken](functions/buyToken.md)
-- [sellToken](functions/sellToken.md)
-- [loadActionConfigs](functions/loadActionConfigs.md)
-- [loadCustomActions](functions/loadCustomActions.md)
-- [initializeClients](functions/initializeClients.md)
-- [parseArguments](functions/parseArguments.md)
-- [loadCharacters](functions/loadCharacters.md)
-- [getTokenForProvider](functions/getTokenForProvider.md)
-- [initializeDatabase](functions/initializeDatabase.md)
-- [createAgentRuntime](functions/createAgentRuntime.md)
-- [createDirectRuntime](functions/createDirectRuntime.md)
-- [startDiscord](functions/startDiscord.md)
-- [startTelegram](functions/startTelegram.md)
-- [startTwitter](functions/startTwitter.md)
 - [composeActionExamples](functions/composeActionExamples.md)
 - [formatActionNames](functions/formatActionNames.md)
 - [formatActions](functions/formatActions.md)
@@ -139,11 +89,12 @@
 - [generateObject](functions/generateObject.md)
 - [generateObjectArray](functions/generateObjectArray.md)
 - [generateMessageResponse](functions/generateMessageResponse.md)
+- [generateImage](functions/generateImage.md)
+- [generateCaption](functions/generateCaption.md)
 - [getGoals](functions/getGoals.md)
 - [formatGoalsAsString](functions/formatGoalsAsString.md)
 - [updateGoal](functions/updateGoal.md)
 - [createGoal](functions/createGoal.md)
-- [getImageGenModel](functions/getImageGenModel.md)
 - [getActorDetails](functions/getActorDetails.md)
 - [formatActors](functions/formatActors.md)
 - [formatMessages](functions/formatMessages.md)
diff --git a/docs/api/interfaces/Account.md b/docs/api/interfaces/Account.md
index e542287f975..7ba7b865832 100644
--- a/docs/api/interfaces/Account.md
+++ b/docs/api/interfaces/Account.md
@@ -10,9 +10,9 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:270](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L270)
+[packages/core/src/types.ts:270](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L270)
 
-***
+---
 
 ### name
 
@@ -20,9 +20,9 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:271](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L271)
+[packages/core/src/types.ts:271](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L271)
 
-***
+---
 
 ### username
 
@@ -30,9 +30,9 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:272](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L272)
+[packages/core/src/types.ts:272](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L272)
 
-***
+---
 
 ### details?
 
@@ -40,13 +40,13 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Index Signature
 
- \[`key`: `string`\]: `any`
+\[`key`: `string`\]: `any`
 
 #### Defined in
 
-[packages/core/src/core/types.ts:273](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L273)
+[packages/core/src/types.ts:273](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L273)
 
-***
+---
 
 ### email?
 
@@ -54,9 +54,9 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:274](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L274)
+[packages/core/src/types.ts:274](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L274)
 
-***
+---
 
 ### avatarUrl?
 
@@ -64,4 +64,4 @@ Represents a user, including their name, details, and a unique identifier.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:275](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L275)
+[packages/core/src/types.ts:275](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L275)
diff --git a/docs/api/interfaces/Action.md b/docs/api/interfaces/Action.md
index 7dda1af78fd..b1582ead136 100644
--- a/docs/api/interfaces/Action.md
+++ b/docs/api/interfaces/Action.md
@@ -10,9 +10,9 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:213](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L213)
+[packages/core/src/types.ts:213](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L213)
 
-***
+---
 
 ### description
 
@@ -20,9 +20,9 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:214](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L214)
+[packages/core/src/types.ts:214](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L214)
 
-***
+---
 
 ### examples
 
@@ -30,9 +30,9 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:215](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L215)
+[packages/core/src/types.ts:215](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L215)
 
-***
+---
 
 ### handler
 
@@ -40,9 +40,9 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:216](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L216)
+[packages/core/src/types.ts:216](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L216)
 
-***
+---
 
 ### name
 
@@ -50,9 +50,9 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:217](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L217)
+[packages/core/src/types.ts:217](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L217)
 
-***
+---
 
 ### validate
 
@@ -60,4 +60,4 @@ Represents an action that the agent can perform, including conditions for its us
 
 #### Defined in
 
-[packages/core/src/core/types.ts:218](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L218)
+[packages/core/src/types.ts:218](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L218)
diff --git a/docs/api/interfaces/ActionExample.md b/docs/api/interfaces/ActionExample.md
index 2ac9ca3b45c..d40b09037d9 100644
--- a/docs/api/interfaces/ActionExample.md
+++ b/docs/api/interfaces/ActionExample.md
@@ -10,9 +10,9 @@ Represents an example of content, typically used for demonstrating or testing pu
 
 #### Defined in
 
-[packages/core/src/core/types.ts:26](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L26)
+[packages/core/src/types.ts:25](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L25)
 
-***
+---
 
 ### content
 
@@ -20,4 +20,4 @@ Represents an example of content, typically used for demonstrating or testing pu
 
 #### Defined in
 
-[packages/core/src/core/types.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L27)
+[packages/core/src/types.ts:26](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L26)
diff --git a/docs/api/interfaces/Actor.md b/docs/api/interfaces/Actor.md
index 3607f9e71f6..03de7ecc58b 100644
--- a/docs/api/interfaces/Actor.md
+++ b/docs/api/interfaces/Actor.md
@@ -10,9 +10,9 @@ Represents an actor in the conversation, which could be a user or the agent itse
 
 #### Defined in
 
-[packages/core/src/core/types.ts:42](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L42)
+[packages/core/src/types.ts:41](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L41)
 
-***
+---
 
 ### username
 
@@ -20,9 +20,9 @@ Represents an actor in the conversation, which could be a user or the agent itse
 
 #### Defined in
 
-[packages/core/src/core/types.ts:43](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L43)
+[packages/core/src/types.ts:42](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L42)
 
-***
+---
 
 ### details
 
@@ -42,9 +42,9 @@ Represents an actor in the conversation, which could be a user or the agent itse
 
 #### Defined in
 
-[packages/core/src/core/types.ts:44](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L44)
+[packages/core/src/types.ts:43](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L43)
 
-***
+---
 
 ### id
 
@@ -52,4 +52,4 @@ Represents an actor in the conversation, which could be a user or the agent itse
 
 #### Defined in
 
-[packages/core/src/core/types.ts:45](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L45)
+[packages/core/src/types.ts:44](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L44)
diff --git a/docs/api/interfaces/Content.md b/docs/api/interfaces/Content.md
index 1722c7d4df8..72c031b7621 100644
--- a/docs/api/interfaces/Content.md
+++ b/docs/api/interfaces/Content.md
@@ -2,13 +2,9 @@
 
 Represents the content of a message, including its main text (`content`), any associated action (`action`), and the source of the content (`source`), if applicable.
 
-## Extended by
-
-- [`CreateAndBuyContent`](CreateAndBuyContent.md)
-
 ## Indexable
 
- \[`key`: `string`\]: `unknown`
+\[`key`: `string`\]: `unknown`
 
 ## Properties
 
@@ -18,9 +14,9 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L13)
+[packages/core/src/types.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L12)
 
-***
+---
 
 ### action?
 
@@ -28,9 +24,9 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:14](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L14)
+[packages/core/src/types.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L13)
 
-***
+---
 
 ### source?
 
@@ -38,9 +34,9 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:15](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L15)
+[packages/core/src/types.ts:14](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L14)
 
-***
+---
 
 ### url?
 
@@ -48,9 +44,9 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:16](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L16)
+[packages/core/src/types.ts:15](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L15)
 
-***
+---
 
 ### inReplyTo?
 
@@ -58,9 +54,9 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:17](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L17)
+[packages/core/src/types.ts:16](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L16)
 
-***
+---
 
 ### attachments?
 
@@ -68,4 +64,4 @@ Represents the content of a message, including its main text (`content`), any as
 
 #### Defined in
 
-[packages/core/src/core/types.ts:18](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L18)
+[packages/core/src/types.ts:17](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L17)
diff --git a/docs/api/interfaces/ConversationExample.md b/docs/api/interfaces/ConversationExample.md
index de457d9bbc1..8b3c751349b 100644
--- a/docs/api/interfaces/ConversationExample.md
+++ b/docs/api/interfaces/ConversationExample.md
@@ -10,9 +10,9 @@ Represents an example of content, typically used for demonstrating or testing pu
 
 #### Defined in
 
-[packages/core/src/core/types.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L34)
+[packages/core/src/types.ts:33](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L33)
 
-***
+---
 
 ### content
 
@@ -20,4 +20,4 @@ Represents an example of content, typically used for demonstrating or testing pu
 
 #### Defined in
 
-[packages/core/src/core/types.ts:35](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L35)
+[packages/core/src/types.ts:34](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L34)
diff --git a/docs/api/interfaces/CreateAndBuyContent.md b/docs/api/interfaces/CreateAndBuyContent.md
deleted file mode 100644
index 2fa7a797143..00000000000
--- a/docs/api/interfaces/CreateAndBuyContent.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# Interface: CreateAndBuyContent
-
-Represents the content of a message, including its main text (`content`), any associated action (`action`), and the source of the content (`source`), if applicable.
-
-## Extends
-
-- [`Content`](Content.md)
-
-## Properties
-
-### deployerPrivateKey
-
-> **deployerPrivateKey**: `string`
-
-#### Defined in
-
-[packages/core/src/actions/pumpfun.ts:23](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L23)
-
-***
-
-### tokenMetadata
-
-> **tokenMetadata**: `CreateTokenMetadata`
-
-#### Defined in
-
-[packages/core/src/actions/pumpfun.ts:24](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L24)
-
-***
-
-### buyAmountSol
-
-> **buyAmountSol**: `string` \| `number`
-
-#### Defined in
-
-[packages/core/src/actions/pumpfun.ts:25](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L25)
-
-***
-
-### priorityFee
-
-> **priorityFee**: `object`
-
-#### unitLimit
-
-> **unitLimit**: `number`
-
-#### unitPrice
-
-> **unitPrice**: `number`
-
-#### Defined in
-
-[packages/core/src/actions/pumpfun.ts:26](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L26)
-
-***
-
-### allowOffCurve
-
-> **allowOffCurve**: `boolean`
-
-#### Defined in
-
-[packages/core/src/actions/pumpfun.ts:30](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/pumpfun.ts#L30)
-
-***
-
-### text
-
-> **text**: `string`
-
-#### Inherited from
-
-[`Content`](Content.md).[`text`](Content.md#text)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L13)
-
-***
-
-### action?
-
-> `optional` **action**: `string`
-
-#### Inherited from
-
-[`Content`](Content.md).[`action`](Content.md#action)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:14](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L14)
-
-***
-
-### source?
-
-> `optional` **source**: `string`
-
-#### Inherited from
-
-[`Content`](Content.md).[`source`](Content.md#source)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:15](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L15)
-
-***
-
-### url?
-
-> `optional` **url**: `string`
-
-#### Inherited from
-
-[`Content`](Content.md).[`url`](Content.md#url)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:16](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L16)
-
-***
-
-### inReplyTo?
-
-> `optional` **inReplyTo**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
-
-#### Inherited from
-
-[`Content`](Content.md).[`inReplyTo`](Content.md#inreplyto)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:17](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L17)
-
-***
-
-### attachments?
-
-> `optional` **attachments**: [`Media`](../type-aliases/Media.md)[]
-
-#### Inherited from
-
-[`Content`](Content.md).[`attachments`](Content.md#attachments)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:18](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L18)
diff --git a/docs/api/interfaces/EvaluationExample.md b/docs/api/interfaces/EvaluationExample.md
index 2decbec51b7..66fa32f81bb 100644
--- a/docs/api/interfaces/EvaluationExample.md
+++ b/docs/api/interfaces/EvaluationExample.md
@@ -10,9 +10,9 @@ Represents an example for evaluation, including the context, an array of message
 
 #### Defined in
 
-[packages/core/src/core/types.ts:225](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L225)
+[packages/core/src/types.ts:225](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L225)
 
-***
+---
 
 ### messages
 
@@ -20,9 +20,9 @@ Represents an example for evaluation, including the context, an array of message
 
 #### Defined in
 
-[packages/core/src/core/types.ts:226](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L226)
+[packages/core/src/types.ts:226](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L226)
 
-***
+---
 
 ### outcome
 
@@ -30,4 +30,4 @@ Represents an example for evaluation, including the context, an array of message
 
 #### Defined in
 
-[packages/core/src/core/types.ts:227](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L227)
+[packages/core/src/types.ts:227](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L227)
diff --git a/docs/api/interfaces/Evaluator.md b/docs/api/interfaces/Evaluator.md
index 327f11fc97f..8f116317be3 100644
--- a/docs/api/interfaces/Evaluator.md
+++ b/docs/api/interfaces/Evaluator.md
@@ -10,9 +10,9 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:234](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L234)
+[packages/core/src/types.ts:234](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L234)
 
-***
+---
 
 ### similes
 
@@ -20,9 +20,9 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:235](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L235)
+[packages/core/src/types.ts:235](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L235)
 
-***
+---
 
 ### examples
 
@@ -30,9 +30,9 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:236](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L236)
+[packages/core/src/types.ts:236](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L236)
 
-***
+---
 
 ### handler
 
@@ -40,9 +40,9 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:237](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L237)
+[packages/core/src/types.ts:237](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L237)
 
-***
+---
 
 ### name
 
@@ -50,9 +50,9 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:238](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L238)
+[packages/core/src/types.ts:238](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L238)
 
-***
+---
 
 ### validate
 
@@ -60,4 +60,4 @@ Represents an evaluator, which is used to assess and guide the agent's responses
 
 #### Defined in
 
-[packages/core/src/core/types.ts:239](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L239)
+[packages/core/src/types.ts:239](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L239)
diff --git a/docs/api/interfaces/Goal.md b/docs/api/interfaces/Goal.md
index 771fdb13624..f1a01466980 100644
--- a/docs/api/interfaces/Goal.md
+++ b/docs/api/interfaces/Goal.md
@@ -10,9 +10,9 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:67](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L67)
+[packages/core/src/types.ts:66](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L66)
 
-***
+---
 
 ### roomId
 
@@ -20,9 +20,9 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:68](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L68)
+[packages/core/src/types.ts:67](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L67)
 
-***
+---
 
 ### userId
 
@@ -30,9 +30,9 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:69](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L69)
+[packages/core/src/types.ts:68](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L68)
 
-***
+---
 
 ### name
 
@@ -40,9 +40,9 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:70](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L70)
+[packages/core/src/types.ts:69](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L69)
 
-***
+---
 
 ### status
 
@@ -50,9 +50,9 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:71](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L71)
+[packages/core/src/types.ts:70](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L70)
 
-***
+---
 
 ### objectives
 
@@ -60,4 +60,4 @@ Represents a goal, which is a higher-level aim composed of one or more objective
 
 #### Defined in
 
-[packages/core/src/core/types.ts:72](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L72)
+[packages/core/src/types.ts:71](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L71)
diff --git a/docs/api/interfaces/IAgentRuntime.md b/docs/api/interfaces/IAgentRuntime.md
index ee92a64ef1d..03941a9bc1c 100644
--- a/docs/api/interfaces/IAgentRuntime.md
+++ b/docs/api/interfaces/IAgentRuntime.md
@@ -8,9 +8,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:499](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L499)
+[packages/core/src/types.ts:517](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L517)
 
-***
+---
 
 ### serverUrl
 
@@ -18,9 +18,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:500](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L500)
+[packages/core/src/types.ts:518](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L518)
 
-***
+---
 
 ### databaseAdapter
 
@@ -28,9 +28,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:501](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L501)
+[packages/core/src/types.ts:519](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L519)
 
-***
+---
 
 ### token
 
@@ -38,29 +38,19 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:502](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L502)
+[packages/core/src/types.ts:520](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L520)
 
-***
+---
 
 ### modelProvider
 
-> **modelProvider**: [`ModelProvider`](../enumerations/ModelProvider.md)
+> **modelProvider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
 
 #### Defined in
 
-[packages/core/src/core/types.ts:503](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L503)
+[packages/core/src/types.ts:521](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L521)
 
-***
-
-### imageGenModel
-
-> **imageGenModel**: [`ImageGenModel`](../enumerations/ImageGenModel.md)
-
-#### Defined in
-
-[packages/core/src/core/types.ts:504](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L504)
-
-***
+---
 
 ### character
 
@@ -68,9 +58,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:505](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L505)
+[packages/core/src/types.ts:522](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L522)
 
-***
+---
 
 ### providers
 
@@ -78,9 +68,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:506](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L506)
+[packages/core/src/types.ts:523](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L523)
 
-***
+---
 
 ### actions
 
@@ -88,39 +78,39 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:507](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L507)
+[packages/core/src/types.ts:524](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L524)
 
-***
+---
 
-### messageManager
+### evaluators
 
-> **messageManager**: [`IMemoryManager`](IMemoryManager.md)
+> **evaluators**: [`Evaluator`](Evaluator.md)[]
 
 #### Defined in
 
-[packages/core/src/core/types.ts:509](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L509)
+[packages/core/src/types.ts:525](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L525)
 
-***
+---
 
-### descriptionManager
+### messageManager
 
-> **descriptionManager**: [`IMemoryManager`](IMemoryManager.md)
+> **messageManager**: [`IMemoryManager`](IMemoryManager.md)
 
 #### Defined in
 
-[packages/core/src/core/types.ts:510](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L510)
+[packages/core/src/types.ts:527](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L527)
 
-***
+---
 
-### factManager
+### descriptionManager
 
-> **factManager**: [`IMemoryManager`](IMemoryManager.md)
+> **descriptionManager**: [`IMemoryManager`](IMemoryManager.md)
 
 #### Defined in
 
-[packages/core/src/core/types.ts:511](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L511)
+[packages/core/src/types.ts:528](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L528)
 
-***
+---
 
 ### loreManager
 
@@ -128,79 +118,95 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:512](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L512)
+[packages/core/src/types.ts:529](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L529)
 
-***
+---
 
-### imageDescriptionService
+### services
 
-> **imageDescriptionService**: [`IImageRecognitionService`](IImageRecognitionService.md)
+> **services**: `Map`\<[`ServiceType`](../enumerations/ServiceType.md), [`Service`](../classes/Service.md)\>
 
 #### Defined in
 
-[packages/core/src/core/types.ts:513](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L513)
-
-***
+[packages/core/src/types.ts:531](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L531)
 
-### transcriptionService
+## Methods
 
-> **transcriptionService**: [`ITranscriptionService`](ITranscriptionService.md)
+### registerMemoryManager()
 
-#### Defined in
+> **registerMemoryManager**(`manager`): `void`
 
-[packages/core/src/core/types.ts:514](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L514)
+#### Parameters
 
-***
+• **manager**: [`IMemoryManager`](IMemoryManager.md)
 
-### videoService
+#### Returns
 
-> **videoService**: [`IVideoService`](IVideoService.md)
+`void`
 
 #### Defined in
 
-[packages/core/src/core/types.ts:515](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L515)
+[packages/core/src/types.ts:532](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L532)
 
-***
+---
 
-### llamaService
+### getMemoryManager()
 
-> **llamaService**: [`ILlamaService`](ILlamaService.md)
+> **getMemoryManager**(`name`): [`IMemoryManager`](IMemoryManager.md)
+
+#### Parameters
+
+• **name**: `string`
+
+#### Returns
+
+[`IMemoryManager`](IMemoryManager.md)
 
 #### Defined in
 
-[packages/core/src/core/types.ts:516](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L516)
+[packages/core/src/types.ts:534](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L534)
 
-***
+---
 
-### browserService
+### getService()
 
-> **browserService**: [`IBrowserService`](IBrowserService.md)
+> **getService**\<`Service`\>(`service`): `Service`
 
-#### Defined in
+#### Type Parameters
 
-[packages/core/src/core/types.ts:517](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L517)
+• **Service**
 
-***
+#### Parameters
 
-### speechService
+• **service**: `string`
 
-> **speechService**: [`ISpeechService`](ISpeechService.md)
+#### Returns
+
+`Service`
 
 #### Defined in
 
-[packages/core/src/core/types.ts:518](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L518)
+[packages/core/src/types.ts:536](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L536)
+
+---
 
-***
+### registerService()
 
-### pdfService
+> **registerService**(`service`): `void`
 
-> **pdfService**: [`IPdfService`](IPdfService.md)
+#### Parameters
+
+• **service**: [`Service`](../classes/Service.md)
+
+#### Returns
+
+`void`
 
 #### Defined in
 
-[packages/core/src/core/types.ts:519](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L519)
+[packages/core/src/types.ts:538](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L538)
 
-## Methods
+---
 
 ### getSetting()
 
@@ -216,9 +222,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:521](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L521)
+[packages/core/src/types.ts:540](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L540)
 
-***
+---
 
 ### getConversationLength()
 
@@ -230,9 +236,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:524](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L524)
+[packages/core/src/types.ts:543](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L543)
 
-***
+---
 
 ### processActions()
 
@@ -254,9 +260,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:525](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L525)
+[packages/core/src/types.ts:544](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L544)
 
-***
+---
 
 ### evaluate()
 
@@ -274,9 +280,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:531](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L531)
+[packages/core/src/types.ts:550](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L550)
 
-***
+---
 
 ### ensureParticipantExists()
 
@@ -294,9 +300,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:532](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L532)
+[packages/core/src/types.ts:551](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L551)
 
-***
+---
 
 ### ensureUserExists()
 
@@ -318,9 +324,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:533](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L533)
+[packages/core/src/types.ts:552](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L552)
 
-***
+---
 
 ### registerAction()
 
@@ -336,9 +342,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:539](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L539)
+[packages/core/src/types.ts:558](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L558)
 
-***
+---
 
 ### ensureConnection()
 
@@ -362,9 +368,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:540](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L540)
+[packages/core/src/types.ts:559](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L559)
 
-***
+---
 
 ### ensureParticipantInRoom()
 
@@ -382,9 +388,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:547](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L547)
+[packages/core/src/types.ts:566](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L566)
 
-***
+---
 
 ### ensureRoomExists()
 
@@ -400,9 +406,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:548](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L548)
+[packages/core/src/types.ts:567](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L567)
 
-***
+---
 
 ### composeState()
 
@@ -420,9 +426,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:549](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L549)
+[packages/core/src/types.ts:568](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L568)
 
-***
+---
 
 ### updateRecentMessageState()
 
@@ -438,4 +444,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:553](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L553)
+[packages/core/src/types.ts:572](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L572)
diff --git a/docs/api/interfaces/IBrowserService.md b/docs/api/interfaces/IBrowserService.md
index d33fdb9a58a..8cc7f524a02 100644
--- a/docs/api/interfaces/IBrowserService.md
+++ b/docs/api/interfaces/IBrowserService.md
@@ -1,5 +1,9 @@
 # Interface: IBrowserService
 
+## Extends
+
+- [`Service`](../classes/Service.md)
+
 ## Methods
 
 ### initialize()
@@ -12,9 +16,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:599](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L599)
+[packages/core/src/types.ts:621](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L621)
 
-***
+---
 
 ### closeBrowser()
 
@@ -26,18 +30,20 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:600](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L600)
+[packages/core/src/types.ts:622](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L622)
 
-***
+---
 
 ### getPageContent()
 
-> **getPageContent**(`url`): `Promise`\<`object`\>
+> **getPageContent**(`url`, `runtime`): `Promise`\<`object`\>
 
 #### Parameters
 
 • **url**: `string`
 
+• **runtime**: [`IAgentRuntime`](IAgentRuntime.md)
+
 #### Returns
 
 `Promise`\<`object`\>
@@ -56,4 +62,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:601](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L601)
+[packages/core/src/types.ts:623](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L623)
diff --git a/docs/api/interfaces/IDatabaseAdapter.md b/docs/api/interfaces/IDatabaseAdapter.md
index 0cfcf397253..63af51a63c7 100644
--- a/docs/api/interfaces/IDatabaseAdapter.md
+++ b/docs/api/interfaces/IDatabaseAdapter.md
@@ -8,7 +8,7 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:355](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L355)
+[packages/core/src/types.ts:360](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L360)
 
 ## Methods
 
@@ -26,9 +26,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:356](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L356)
+[packages/core/src/types.ts:361](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L361)
 
-***
+---
 
 ### createAccount()
 
@@ -44,9 +44,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:357](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L357)
+[packages/core/src/types.ts:362](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L362)
 
-***
+---
 
 ### getMemories()
 
@@ -76,9 +76,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:358](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L358)
+[packages/core/src/types.ts:363](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L363)
 
-***
+---
 
 ### getMemoryById()
 
@@ -94,9 +94,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:367](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L367)
+[packages/core/src/types.ts:372](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L372)
 
-***
+---
 
 ### getMemoriesByRoomIds()
 
@@ -116,9 +116,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:368](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L368)
+[packages/core/src/types.ts:373](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L373)
 
-***
+---
 
 ### getCachedEmbeddings()
 
@@ -128,17 +128,17 @@
 
 • **params**
 
-• **params.query\_table\_name**: `string`
+• **params.query_table_name**: `string`
 
-• **params.query\_threshold**: `number`
+• **params.query_threshold**: `number`
 
-• **params.query\_input**: `string`
+• **params.query_input**: `string`
 
-• **params.query\_field\_name**: `string`
+• **params.query_field_name**: `string`
 
-• **params.query\_field\_sub\_name**: `string`
+• **params.query_field_sub_name**: `string`
 
-• **params.query\_match\_count**: `number`
+• **params.query_match_count**: `number`
 
 #### Returns
 
@@ -146,9 +146,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:372](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L372)
+[packages/core/src/types.ts:377](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L377)
 
-***
+---
 
 ### log()
 
@@ -172,9 +172,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:380](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L380)
+[packages/core/src/types.ts:385](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L385)
 
-***
+---
 
 ### getActorDetails()
 
@@ -192,9 +192,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:386](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L386)
+[packages/core/src/types.ts:391](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L391)
 
-***
+---
 
 ### searchMemories()
 
@@ -210,9 +210,9 @@
 
 • **params.embedding**: `number`[]
 
-• **params.match\_threshold**: `number`
+• **params.match_threshold**: `number`
 
-• **params.match\_count**: `number`
+• **params.match_count**: `number`
 
 • **params.unique**: `boolean`
 
@@ -222,9 +222,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:387](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L387)
+[packages/core/src/types.ts:392](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L392)
 
-***
+---
 
 ### updateGoalStatus()
 
@@ -244,9 +244,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:395](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L395)
+[packages/core/src/types.ts:400](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L400)
 
-***
+---
 
 ### searchMemoriesByEmbedding()
 
@@ -258,7 +258,7 @@
 
 • **params**
 
-• **params.match\_threshold?**: `number`
+• **params.match_threshold?**: `number`
 
 • **params.count?**: `number`
 
@@ -276,9 +276,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:399](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L399)
+[packages/core/src/types.ts:404](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L404)
 
-***
+---
 
 ### createMemory()
 
@@ -298,9 +298,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:410](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L410)
+[packages/core/src/types.ts:415](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L415)
 
-***
+---
 
 ### removeMemory()
 
@@ -318,9 +318,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:415](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L415)
+[packages/core/src/types.ts:420](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L420)
 
-***
+---
 
 ### removeAllMemories()
 
@@ -338,9 +338,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:416](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L416)
+[packages/core/src/types.ts:421](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L421)
 
-***
+---
 
 ### countMemories()
 
@@ -360,9 +360,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:417](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L417)
+[packages/core/src/types.ts:422](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L422)
 
-***
+---
 
 ### getGoals()
 
@@ -386,9 +386,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:422](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L422)
+[packages/core/src/types.ts:427](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L427)
 
-***
+---
 
 ### updateGoal()
 
@@ -404,9 +404,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:428](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L428)
+[packages/core/src/types.ts:433](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L433)
 
-***
+---
 
 ### createGoal()
 
@@ -422,9 +422,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:429](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L429)
+[packages/core/src/types.ts:434](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L434)
 
-***
+---
 
 ### removeGoal()
 
@@ -440,9 +440,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:430](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L430)
+[packages/core/src/types.ts:435](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L435)
 
-***
+---
 
 ### removeAllGoals()
 
@@ -458,9 +458,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:431](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L431)
+[packages/core/src/types.ts:436](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L436)
 
-***
+---
 
 ### getRoom()
 
@@ -476,9 +476,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:432](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L432)
+[packages/core/src/types.ts:437](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L437)
 
-***
+---
 
 ### createRoom()
 
@@ -494,9 +494,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:433](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L433)
+[packages/core/src/types.ts:438](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L438)
 
-***
+---
 
 ### removeRoom()
 
@@ -512,9 +512,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:434](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L434)
+[packages/core/src/types.ts:439](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L439)
 
-***
+---
 
 ### getRoomsForParticipant()
 
@@ -530,9 +530,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:435](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L435)
+[packages/core/src/types.ts:440](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L440)
 
-***
+---
 
 ### getRoomsForParticipants()
 
@@ -548,9 +548,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:436](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L436)
+[packages/core/src/types.ts:441](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L441)
 
-***
+---
 
 ### addParticipant()
 
@@ -568,9 +568,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:437](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L437)
+[packages/core/src/types.ts:442](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L442)
 
-***
+---
 
 ### removeParticipant()
 
@@ -588,9 +588,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:438](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L438)
+[packages/core/src/types.ts:443](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L443)
 
-***
+---
 
 ### getParticipantsForAccount()
 
@@ -606,9 +606,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:439](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L439)
+[packages/core/src/types.ts:444](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L444)
 
-***
+---
 
 ### getParticipantsForRoom()
 
@@ -624,9 +624,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:440](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L440)
+[packages/core/src/types.ts:445](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L445)
 
-***
+---
 
 ### getParticipantUserState()
 
@@ -644,9 +644,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:441](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L441)
+[packages/core/src/types.ts:446](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L446)
 
-***
+---
 
 ### setParticipantUserState()
 
@@ -666,9 +666,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:445](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L445)
+[packages/core/src/types.ts:450](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L450)
 
-***
+---
 
 ### createRelationship()
 
@@ -688,9 +688,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:450](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L450)
+[packages/core/src/types.ts:455](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L455)
 
-***
+---
 
 ### getRelationship()
 
@@ -710,9 +710,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:451](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L451)
+[packages/core/src/types.ts:456](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L456)
 
-***
+---
 
 ### getRelationships()
 
@@ -730,4 +730,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:455](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L455)
+[packages/core/src/types.ts:460](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L460)
diff --git a/docs/api/interfaces/IImageRecognitionService.md b/docs/api/interfaces/IImageDescriptionService.md
similarity index 61%
rename from docs/api/interfaces/IImageRecognitionService.md
rename to docs/api/interfaces/IImageDescriptionService.md
index 7b56ddbcf00..1d5ada4972a 100644
--- a/docs/api/interfaces/IImageRecognitionService.md
+++ b/docs/api/interfaces/IImageDescriptionService.md
@@ -1,4 +1,8 @@
-# Interface: IImageRecognitionService
+# Interface: IImageDescriptionService
+
+## Extends
+
+- [`Service`](../classes/Service.md)
 
 ## Methods
 
@@ -18,9 +22,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:557](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L557)
+[packages/core/src/types.ts:576](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L576)
 
-***
+---
 
 ### describeImage()
 
@@ -44,4 +48,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:558](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L558)
+[packages/core/src/types.ts:577](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L577)
diff --git a/docs/api/interfaces/ILlamaService.md b/docs/api/interfaces/ILlamaService.md
deleted file mode 100644
index 6236ef3f110..00000000000
--- a/docs/api/interfaces/ILlamaService.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Interface: ILlamaService
-
-## Methods
-
-### initializeModel()
-
-> **initializeModel**(): `Promise`\<`void`\>
-
-#### Returns
-
-`Promise`\<`void`\>
-
-#### Defined in
-
-[packages/core/src/core/types.ts:578](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L578)
-
-***
-
-### queueMessageCompletion()
-
-> **queueMessageCompletion**(`context`, `temperature`, `stop`, `frequency_penalty`, `presence_penalty`, `max_tokens`): `Promise`\<`any`\>
-
-#### Parameters
-
-• **context**: `string`
-
-• **temperature**: `number`
-
-• **stop**: `string`[]
-
-• **frequency\_penalty**: `number`
-
-• **presence\_penalty**: `number`
-
-• **max\_tokens**: `number`
-
-#### Returns
-
-`Promise`\<`any`\>
-
-#### Defined in
-
-[packages/core/src/core/types.ts:579](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L579)
-
-***
-
-### queueTextCompletion()
-
-> **queueTextCompletion**(`context`, `temperature`, `stop`, `frequency_penalty`, `presence_penalty`, `max_tokens`): `Promise`\<`string`\>
-
-#### Parameters
-
-• **context**: `string`
-
-• **temperature**: `number`
-
-• **stop**: `string`[]
-
-• **frequency\_penalty**: `number`
-
-• **presence\_penalty**: `number`
-
-• **max\_tokens**: `number`
-
-#### Returns
-
-`Promise`\<`string`\>
-
-#### Defined in
-
-[packages/core/src/core/types.ts:587](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L587)
-
-***
-
-### getEmbeddingResponse()
-
-> **getEmbeddingResponse**(`input`): `Promise`\<`number`[]\>
-
-#### Parameters
-
-• **input**: `string`
-
-#### Returns
-
-`Promise`\<`number`[]\>
-
-#### Defined in
-
-[packages/core/src/core/types.ts:595](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L595)
diff --git a/docs/api/interfaces/IMemoryManager.md b/docs/api/interfaces/IMemoryManager.md
index d0f34e102da..b162e6d08b0 100644
--- a/docs/api/interfaces/IMemoryManager.md
+++ b/docs/api/interfaces/IMemoryManager.md
@@ -8,9 +8,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:459](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L459)
+[packages/core/src/types.ts:464](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L464)
 
-***
+---
 
 ### tableName
 
@@ -18,9 +18,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:460](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L460)
+[packages/core/src/types.ts:465](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L465)
 
-***
+---
 
 ### constructor
 
@@ -28,7 +28,7 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:462](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L462)
+[packages/core/src/types.ts:467](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L467)
 
 ## Methods
 
@@ -46,9 +46,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:464](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L464)
+[packages/core/src/types.ts:469](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L469)
 
-***
+---
 
 ### getMemories()
 
@@ -76,9 +76,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:465](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L465)
+[packages/core/src/types.ts:470](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L470)
 
-***
+---
 
 ### getCachedEmbeddings()
 
@@ -94,9 +94,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:473](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L473)
+[packages/core/src/types.ts:478](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L478)
 
-***
+---
 
 ### getMemoryById()
 
@@ -112,9 +112,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:476](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L476)
+[packages/core/src/types.ts:481](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L481)
 
-***
+---
 
 ### getMemoriesByRoomIds()
 
@@ -134,9 +134,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:477](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L477)
+[packages/core/src/types.ts:482](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L482)
 
-***
+---
 
 ### searchMemoriesByEmbedding()
 
@@ -148,7 +148,7 @@
 
 • **opts**
 
-• **opts.match\_threshold?**: `number`
+• **opts.match_threshold?**: `number`
 
 • **opts.count?**: `number`
 
@@ -164,9 +164,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:481](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L481)
+[packages/core/src/types.ts:486](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L486)
 
-***
+---
 
 ### createMemory()
 
@@ -184,9 +184,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:491](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L491)
+[packages/core/src/types.ts:496](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L496)
 
-***
+---
 
 ### removeMemory()
 
@@ -202,9 +202,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:492](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L492)
+[packages/core/src/types.ts:497](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L497)
 
-***
+---
 
 ### removeAllMemories()
 
@@ -220,9 +220,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:493](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L493)
+[packages/core/src/types.ts:498](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L498)
 
-***
+---
 
 ### countMemories()
 
@@ -240,4 +240,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:494](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L494)
+[packages/core/src/types.ts:499](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L499)
diff --git a/docs/api/interfaces/IPdfService.md b/docs/api/interfaces/IPdfService.md
index 2bc1c0d94ef..754a6670515 100644
--- a/docs/api/interfaces/IPdfService.md
+++ b/docs/api/interfaces/IPdfService.md
@@ -1,5 +1,9 @@
 # Interface: IPdfService
 
+## Extends
+
+- [`Service`](../classes/Service.md)
+
 ## Methods
 
 ### convertPdfToText()
@@ -16,4 +20,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:611](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L611)
+[packages/core/src/types.ts:634](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L634)
diff --git a/docs/api/interfaces/ISpeechService.md b/docs/api/interfaces/ISpeechService.md
index 1380849b528..4b5493fdf18 100644
--- a/docs/api/interfaces/ISpeechService.md
+++ b/docs/api/interfaces/ISpeechService.md
@@ -1,5 +1,9 @@
 # Interface: ISpeechService
 
+## Extends
+
+- [`Service`](../classes/Service.md)
+
 ## Methods
 
 ### generate()
@@ -18,4 +22,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:607](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L607)
+[packages/core/src/types.ts:630](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L630)
diff --git a/docs/api/interfaces/ITextGenerationService.md b/docs/api/interfaces/ITextGenerationService.md
new file mode 100644
index 00000000000..2044dbcc975
--- /dev/null
+++ b/docs/api/interfaces/ITextGenerationService.md
@@ -0,0 +1,107 @@
+# Interface: ITextGenerationService
+
+## Extends
+
+- [`Service`](../classes/Service.md)
+
+## Methods
+
+### getInstance()
+
+> **getInstance**(): [`ITextGenerationService`](ITextGenerationService.md)
+
+#### Returns
+
+[`ITextGenerationService`](ITextGenerationService.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:599](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L599)
+
+---
+
+### initializeModel()
+
+> **initializeModel**(): `Promise`\<`void`\>
+
+#### Returns
+
+`Promise`\<`void`\>
+
+#### Defined in
+
+[packages/core/src/types.ts:600](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L600)
+
+---
+
+### queueMessageCompletion()
+
+> **queueMessageCompletion**(`context`, `temperature`, `stop`, `frequency_penalty`, `presence_penalty`, `max_tokens`): `Promise`\<`any`\>
+
+#### Parameters
+
+• **context**: `string`
+
+• **temperature**: `number`
+
+• **stop**: `string`[]
+
+• **frequency_penalty**: `number`
+
+• **presence_penalty**: `number`
+
+• **max_tokens**: `number`
+
+#### Returns
+
+`Promise`\<`any`\>
+
+#### Defined in
+
+[packages/core/src/types.ts:601](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L601)
+
+---
+
+### queueTextCompletion()
+
+> **queueTextCompletion**(`context`, `temperature`, `stop`, `frequency_penalty`, `presence_penalty`, `max_tokens`): `Promise`\<`string`\>
+
+#### Parameters
+
+• **context**: `string`
+
+• **temperature**: `number`
+
+• **stop**: `string`[]
+
+• **frequency_penalty**: `number`
+
+• **presence_penalty**: `number`
+
+• **max_tokens**: `number`
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Defined in
+
+[packages/core/src/types.ts:609](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L609)
+
+---
+
+### getEmbeddingResponse()
+
+> **getEmbeddingResponse**(`input`): `Promise`\<`number`[]\>
+
+#### Parameters
+
+• **input**: `string`
+
+#### Returns
+
+`Promise`\<`number`[]\>
+
+#### Defined in
+
+[packages/core/src/types.ts:617](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L617)
diff --git a/docs/api/interfaces/ITranscriptionService.md b/docs/api/interfaces/ITranscriptionService.md
index 7dd8d7abc2f..b677e43a37a 100644
--- a/docs/api/interfaces/ITranscriptionService.md
+++ b/docs/api/interfaces/ITranscriptionService.md
@@ -1,5 +1,9 @@
 # Interface: ITranscriptionService
 
+## Extends
+
+- [`Service`](../classes/Service.md)
+
 ## Methods
 
 ### transcribeAttachment()
@@ -16,9 +20,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:564](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L564)
+[packages/core/src/types.ts:583](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L583)
 
-***
+---
 
 ### transcribeAttachmentLocally()
 
@@ -34,9 +38,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:565](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L565)
+[packages/core/src/types.ts:584](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L584)
 
-***
+---
 
 ### transcribe()
 
@@ -52,9 +56,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:568](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L568)
+[packages/core/src/types.ts:587](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L587)
 
-***
+---
 
 ### transcribeLocally()
 
@@ -70,4 +74,4 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:569](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L569)
+[packages/core/src/types.ts:588](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L588)
diff --git a/docs/api/interfaces/IVideoService.md b/docs/api/interfaces/IVideoService.md
index 94b9fba7b97..bf89a9730a2 100644
--- a/docs/api/interfaces/IVideoService.md
+++ b/docs/api/interfaces/IVideoService.md
@@ -1,5 +1,9 @@
 # Interface: IVideoService
 
+## Extends
+
+- [`Service`](../classes/Service.md)
+
 ## Methods
 
 ### isVideoUrl()
@@ -16,9 +20,9 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:573](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L573)
+[packages/core/src/types.ts:592](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L592)
 
-***
+---
 
 ### processVideo()
 
@@ -34,4 +38,40 @@
 
 #### Defined in
 
-[packages/core/src/core/types.ts:574](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L574)
+[packages/core/src/types.ts:593](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L593)
+
+---
+
+### fetchVideoInfo()
+
+> **fetchVideoInfo**(`url`): `Promise`\<[`Media`](../type-aliases/Media.md)\>
+
+#### Parameters
+
+• **url**: `string`
+
+#### Returns
+
+`Promise`\<[`Media`](../type-aliases/Media.md)\>
+
+#### Defined in
+
+[packages/core/src/types.ts:594](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L594)
+
+---
+
+### downloadVideo()
+
+> **downloadVideo**(`videoInfo`): `Promise`\<`string`\>
+
+#### Parameters
+
+• **videoInfo**: [`Media`](../type-aliases/Media.md)
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Defined in
+
+[packages/core/src/types.ts:595](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L595)
diff --git a/docs/api/interfaces/Memory.md b/docs/api/interfaces/Memory.md
index f4dabd14cfb..bd158bd5bbc 100644
--- a/docs/api/interfaces/Memory.md
+++ b/docs/api/interfaces/Memory.md
@@ -10,9 +10,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:165](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L165)
+[packages/core/src/types.ts:165](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L165)
 
-***
+---
 
 ### userId
 
@@ -20,9 +20,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:166](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L166)
+[packages/core/src/types.ts:166](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L166)
 
-***
+---
 
 ### agentId
 
@@ -30,9 +30,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:167](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L167)
+[packages/core/src/types.ts:167](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L167)
 
-***
+---
 
 ### createdAt?
 
@@ -40,9 +40,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:168](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L168)
+[packages/core/src/types.ts:168](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L168)
 
-***
+---
 
 ### content
 
@@ -50,9 +50,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:169](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L169)
+[packages/core/src/types.ts:169](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L169)
 
-***
+---
 
 ### embedding?
 
@@ -60,9 +60,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:170](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L170)
+[packages/core/src/types.ts:170](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L170)
 
-***
+---
 
 ### roomId
 
@@ -70,9 +70,9 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:171](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L171)
+[packages/core/src/types.ts:171](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L171)
 
-***
+---
 
 ### unique?
 
@@ -80,4 +80,4 @@ Represents a memory record, which could be a message or any other piece of infor
 
 #### Defined in
 
-[packages/core/src/core/types.ts:172](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L172)
+[packages/core/src/types.ts:172](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L172)
diff --git a/docs/api/interfaces/MessageExample.md b/docs/api/interfaces/MessageExample.md
index c62d4175042..38c188b229b 100644
--- a/docs/api/interfaces/MessageExample.md
+++ b/docs/api/interfaces/MessageExample.md
@@ -10,9 +10,9 @@ Represents an example of a message, typically used for demonstrating or testing
 
 #### Defined in
 
-[packages/core/src/core/types.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L179)
+[packages/core/src/types.ts:179](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L179)
 
-***
+---
 
 ### content
 
@@ -20,4 +20,4 @@ Represents an example of a message, typically used for demonstrating or testing
 
 #### Defined in
 
-[packages/core/src/core/types.ts:180](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L180)
+[packages/core/src/types.ts:180](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L180)
diff --git a/docs/api/interfaces/Objective.md b/docs/api/interfaces/Objective.md
index 044db417c47..d0e01458a99 100644
--- a/docs/api/interfaces/Objective.md
+++ b/docs/api/interfaces/Objective.md
@@ -10,9 +10,9 @@ Represents an objective within a goal, detailing what needs to be achieved and w
 
 #### Defined in
 
-[packages/core/src/core/types.ts:52](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L52)
+[packages/core/src/types.ts:51](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L51)
 
-***
+---
 
 ### description
 
@@ -20,9 +20,9 @@ Represents an objective within a goal, detailing what needs to be achieved and w
 
 #### Defined in
 
-[packages/core/src/core/types.ts:53](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L53)
+[packages/core/src/types.ts:52](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L52)
 
-***
+---
 
 ### completed
 
@@ -30,4 +30,4 @@ Represents an objective within a goal, detailing what needs to be achieved and w
 
 #### Defined in
 
-[packages/core/src/core/types.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L54)
+[packages/core/src/types.ts:53](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L53)
diff --git a/docs/api/interfaces/Participant.md b/docs/api/interfaces/Participant.md
index 01f2dc6d4c7..65fbec541e4 100644
--- a/docs/api/interfaces/Participant.md
+++ b/docs/api/interfaces/Participant.md
@@ -10,9 +10,9 @@ Represents a participant in a room, including their ID and account details.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:282](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L282)
+[packages/core/src/types.ts:282](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L282)
 
-***
+---
 
 ### account
 
@@ -20,4 +20,4 @@ Represents a participant in a room, including their ID and account details.
 
 #### Defined in
 
-[packages/core/src/core/types.ts:283](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L283)
+[packages/core/src/types.ts:283](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L283)
diff --git a/docs/api/interfaces/Provider.md b/docs/api/interfaces/Provider.md
index 8b61c76dea5..bb22296c8cd 100644
--- a/docs/api/interfaces/Provider.md
+++ b/docs/api/interfaces/Provider.md
@@ -22,4 +22,4 @@ Represents a provider, which is used to retrieve information or perform actions
 
 #### Defined in
 
-[packages/core/src/core/types.ts:246](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L246)
+[packages/core/src/types.ts:246](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L246)
diff --git a/docs/api/interfaces/Relationship.md b/docs/api/interfaces/Relationship.md
index 7f2f1d371bb..75950259b28 100644
--- a/docs/api/interfaces/Relationship.md
+++ b/docs/api/interfaces/Relationship.md
@@ -10,9 +10,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:257](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L257)
+[packages/core/src/types.ts:257](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L257)
 
-***
+---
 
 ### userA
 
@@ -20,9 +20,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:258](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L258)
+[packages/core/src/types.ts:258](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L258)
 
-***
+---
 
 ### userB
 
@@ -30,9 +30,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:259](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L259)
+[packages/core/src/types.ts:259](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L259)
 
-***
+---
 
 ### userId
 
@@ -40,9 +40,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:260](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L260)
+[packages/core/src/types.ts:260](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L260)
 
-***
+---
 
 ### roomId
 
@@ -50,9 +50,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:261](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L261)
+[packages/core/src/types.ts:261](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L261)
 
-***
+---
 
 ### status
 
@@ -60,9 +60,9 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:262](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L262)
+[packages/core/src/types.ts:262](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L262)
 
-***
+---
 
 ### createdAt?
 
@@ -70,4 +70,4 @@ Represents a relationship between two users, including their IDs, the status of
 
 #### Defined in
 
-[packages/core/src/core/types.ts:263](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L263)
+[packages/core/src/types.ts:263](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L263)
diff --git a/docs/api/interfaces/Room.md b/docs/api/interfaces/Room.md
index b06aa68d127..2f0a5d1399f 100644
--- a/docs/api/interfaces/Room.md
+++ b/docs/api/interfaces/Room.md
@@ -10,9 +10,9 @@ Represents a room or conversation context, including its ID and a list of partic
 
 #### Defined in
 
-[packages/core/src/core/types.ts:290](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L290)
+[packages/core/src/types.ts:290](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L290)
 
-***
+---
 
 ### participants
 
@@ -20,4 +20,4 @@ Represents a room or conversation context, including its ID and a list of partic
 
 #### Defined in
 
-[packages/core/src/core/types.ts:291](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L291)
+[packages/core/src/types.ts:291](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L291)
diff --git a/docs/api/interfaces/State.md b/docs/api/interfaces/State.md
index 9bd2a2f324f..7929878ebfd 100644
--- a/docs/api/interfaces/State.md
+++ b/docs/api/interfaces/State.md
@@ -4,7 +4,7 @@ Represents the state of the conversation or context in which the agent is operat
 
 ## Indexable
 
- \[`key`: `string`\]: `unknown`
+\[`key`: `string`\]: `unknown`
 
 ## Properties
 
@@ -14,9 +14,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:131](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L131)
+[packages/core/src/types.ts:135](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L135)
 
-***
+---
 
 ### agentId?
 
@@ -24,9 +24,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:132](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L132)
+[packages/core/src/types.ts:136](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L136)
 
-***
+---
 
 ### bio
 
@@ -34,9 +34,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:133](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L133)
+[packages/core/src/types.ts:137](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L137)
 
-***
+---
 
 ### lore
 
@@ -44,9 +44,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:134](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L134)
+[packages/core/src/types.ts:138](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L138)
 
-***
+---
 
 ### messageDirections
 
@@ -54,9 +54,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:135](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L135)
+[packages/core/src/types.ts:139](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L139)
 
-***
+---
 
 ### postDirections
 
@@ -64,9 +64,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:136](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L136)
+[packages/core/src/types.ts:140](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L140)
 
-***
+---
 
 ### roomId
 
@@ -74,9 +74,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:137](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L137)
+[packages/core/src/types.ts:141](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L141)
 
-***
+---
 
 ### agentName?
 
@@ -84,9 +84,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:138](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L138)
+[packages/core/src/types.ts:142](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L142)
 
-***
+---
 
 ### senderName?
 
@@ -94,9 +94,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:139](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L139)
+[packages/core/src/types.ts:143](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L143)
 
-***
+---
 
 ### actors
 
@@ -104,9 +104,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:140](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L140)
+[packages/core/src/types.ts:144](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L144)
 
-***
+---
 
 ### actorsData?
 
@@ -114,9 +114,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:141](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L141)
+[packages/core/src/types.ts:145](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L145)
 
-***
+---
 
 ### goals?
 
@@ -124,9 +124,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:142](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L142)
+[packages/core/src/types.ts:146](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L146)
 
-***
+---
 
 ### goalsData?
 
@@ -134,9 +134,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:143](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L143)
+[packages/core/src/types.ts:147](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L147)
 
-***
+---
 
 ### recentMessages
 
@@ -144,9 +144,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:144](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L144)
+[packages/core/src/types.ts:148](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L148)
 
-***
+---
 
 ### recentMessagesData
 
@@ -154,49 +154,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:145](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L145)
+[packages/core/src/types.ts:149](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L149)
 
-***
-
-### recentFacts?
-
-> `optional` **recentFacts**: `string`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:146](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L146)
-
-***
-
-### recentFactsData?
-
-> `optional` **recentFactsData**: [`Memory`](Memory.md)[]
-
-#### Defined in
-
-[packages/core/src/core/types.ts:147](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L147)
-
-***
-
-### relevantFacts?
-
-> `optional` **relevantFacts**: `string`
-
-#### Defined in
-
-[packages/core/src/core/types.ts:148](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L148)
-
-***
-
-### relevantFactsData?
-
-> `optional` **relevantFactsData**: [`Memory`](Memory.md)[]
-
-#### Defined in
-
-[packages/core/src/core/types.ts:149](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L149)
-
-***
+---
 
 ### actionNames?
 
@@ -204,9 +164,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L150)
+[packages/core/src/types.ts:150](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L150)
 
-***
+---
 
 ### actions?
 
@@ -214,9 +174,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:151](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L151)
+[packages/core/src/types.ts:151](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L151)
 
-***
+---
 
 ### actionsData?
 
@@ -224,9 +184,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:152](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L152)
+[packages/core/src/types.ts:152](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L152)
 
-***
+---
 
 ### actionExamples?
 
@@ -234,9 +194,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:153](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L153)
+[packages/core/src/types.ts:153](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L153)
 
-***
+---
 
 ### providers?
 
@@ -244,9 +204,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:154](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L154)
+[packages/core/src/types.ts:154](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L154)
 
-***
+---
 
 ### responseData?
 
@@ -254,9 +214,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:155](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L155)
+[packages/core/src/types.ts:155](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L155)
 
-***
+---
 
 ### recentInteractionsData?
 
@@ -264,9 +224,9 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:156](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L156)
+[packages/core/src/types.ts:156](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L156)
 
-***
+---
 
 ### recentInteractions?
 
@@ -274,4 +234,4 @@ Represents the state of the conversation or context in which the agent is operat
 
 #### Defined in
 
-[packages/core/src/core/types.ts:157](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L157)
+[packages/core/src/types.ts:157](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L157)
diff --git a/docs/api/type-aliases/Character.md b/docs/api/type-aliases/Character.md
index dde52a529e2..4f4528741cb 100644
--- a/docs/api/type-aliases/Character.md
+++ b/docs/api/type-aliases/Character.md
@@ -18,23 +18,19 @@
 
 ### modelProvider
 
-> **modelProvider**: [`ModelProvider`](../enumerations/ModelProvider.md)
+> **modelProvider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
 
 ### modelEndpointOverride?
 
 > `optional` **modelEndpointOverride**: `string`
 
-### imageGenModel?
-
-> `optional` **imageGenModel**: [`ImageGenModel`](../enumerations/ImageGenModel.md)
-
 ### templates?
 
 > `optional` **templates**: `object`
 
 #### Index Signature
 
- \[`key`: `string`\]: `string`
+\[`key`: `string`\]: `string`
 
 ### bio
 
@@ -86,7 +82,7 @@
 
 #### Index Signature
 
- \[`key`: `string`\]: `string`
+\[`key`: `string`\]: `string`
 
 ### settings.voice?
 
@@ -126,4 +122,4 @@
 
 ## Defined in
 
-[packages/core/src/core/types.ts:318](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L318)
+[packages/core/src/types.ts:324](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L324)
diff --git a/docs/api/type-aliases/Client.md b/docs/api/type-aliases/Client.md
new file mode 100644
index 00000000000..d3320f4251d
--- /dev/null
+++ b/docs/api/type-aliases/Client.md
@@ -0,0 +1,33 @@
+# Type Alias: Client
+
+> **Client**: `object`
+
+## Type declaration
+
+### start()
+
+> **start**: (`runtime`?) => `Promise`\<`unknown`\>
+
+#### Parameters
+
+• **runtime?**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
+
+#### Returns
+
+`Promise`\<`unknown`\>
+
+### stop()
+
+> **stop**: (`runtime`?) => `Promise`\<`unknown`\>
+
+#### Parameters
+
+• **runtime?**: [`IAgentRuntime`](../interfaces/IAgentRuntime.md)
+
+#### Returns
+
+`Promise`\<`unknown`\>
+
+## Defined in
+
+[packages/core/src/types.ts:303](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L303)
diff --git a/docs/api/type-aliases/Handler.md b/docs/api/type-aliases/Handler.md
index 3c03fbb4194..134574a4e4f 100644
--- a/docs/api/type-aliases/Handler.md
+++ b/docs/api/type-aliases/Handler.md
@@ -22,4 +22,4 @@ Represents the type of a handler function, which takes a runtime instance, a mes
 
 ## Defined in
 
-[packages/core/src/core/types.ts:186](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L186)
+[packages/core/src/types.ts:186](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L186)
diff --git a/docs/api/type-aliases/HandlerCallback.md b/docs/api/type-aliases/HandlerCallback.md
index 263b9bcdbf9..b05f9a04961 100644
--- a/docs/api/type-aliases/HandlerCallback.md
+++ b/docs/api/type-aliases/HandlerCallback.md
@@ -14,4 +14,4 @@
 
 ## Defined in
 
-[packages/core/src/core/types.ts:195](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L195)
+[packages/core/src/types.ts:195](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L195)
diff --git a/docs/api/type-aliases/Media.md b/docs/api/type-aliases/Media.md
index 7230457de1d..11adc4ca1d6 100644
--- a/docs/api/type-aliases/Media.md
+++ b/docs/api/type-aliases/Media.md
@@ -30,4 +30,4 @@
 
 ## Defined in
 
-[packages/core/src/core/types.ts:294](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L294)
+[packages/core/src/types.ts:294](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L294)
diff --git a/docs/api/type-aliases/Model.md b/docs/api/type-aliases/Model.md
index 0047f5c6970..0968fa10cef 100644
--- a/docs/api/type-aliases/Model.md
+++ b/docs/api/type-aliases/Model.md
@@ -20,17 +20,17 @@
 
 > **maxOutputTokens**: `number`
 
-### settings.frequency\_penalty?
+### settings.frequency_penalty?
 
-> `optional` **frequency\_penalty**: `number`
+> `optional` **frequency_penalty**: `number`
 
-### settings.presence\_penalty?
+### settings.presence_penalty?
 
-> `optional` **presence\_penalty**: `number`
+> `optional` **presence_penalty**: `number`
 
-### settings.repetition\_penalty?
+### settings.repetition_penalty?
 
-> `optional` **repetition\_penalty**: `number`
+> `optional` **repetition_penalty**: `number`
 
 ### settings.stop
 
@@ -40,6 +40,14 @@
 
 > **temperature**: `number`
 
+### imageSettings?
+
+> `optional` **imageSettings**: `object`
+
+### imageSettings.steps?
+
+> `optional` **steps**: `number`
+
 ### model
 
 > **model**: `object`
@@ -60,6 +68,10 @@
 
 > `optional` **embedding**: `string`
 
+### model.image?
+
+> `optional` **image**: `string`
+
 ## Defined in
 
-[packages/core/src/core/types.ts:82](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L82)
+[packages/core/src/types.ts:82](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L82)
diff --git a/docs/api/type-aliases/Models.md b/docs/api/type-aliases/Models.md
index 40aac2db606..04bc6e19dce 100644
--- a/docs/api/type-aliases/Models.md
+++ b/docs/api/type-aliases/Models.md
@@ -20,21 +20,21 @@
 
 > **groq**: [`Model`](Model.md)
 
-### llama\_cloud
+### llama_cloud
 
-> **llama\_cloud**: [`Model`](Model.md)
+> **llama_cloud**: [`Model`](Model.md)
 
-### llama\_local
+### llama_local
 
-> **llama\_local**: [`Model`](Model.md)
+> **llama_local**: [`Model`](Model.md)
 
 ### google
 
 > **google**: [`Model`](Model.md)
 
-### claude\_vertex
+### claude_vertex
 
-> **claude\_vertex**: [`Model`](Model.md)
+> **claude_vertex**: [`Model`](Model.md)
 
 ### redpill
 
@@ -46,4 +46,4 @@
 
 ## Defined in
 
-[packages/core/src/core/types.ts:101](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L101)
+[packages/core/src/types.ts:105](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L105)
diff --git a/docs/api/type-aliases/Plugin.md b/docs/api/type-aliases/Plugin.md
index 354c4823222..3095a90fdec 100644
--- a/docs/api/type-aliases/Plugin.md
+++ b/docs/api/type-aliases/Plugin.md
@@ -12,18 +12,22 @@
 
 > **description**: `string`
 
-### actions
+### actions?
 
-> **actions**: [`Action`](../interfaces/Action.md)[]
+> `optional` **actions**: [`Action`](../interfaces/Action.md)[]
 
-### providers
+### providers?
 
-> **providers**: [`Provider`](../interfaces/Provider.md)[]
+> `optional` **providers**: [`Provider`](../interfaces/Provider.md)[]
 
-### evaluators
+### evaluators?
 
-> **evaluators**: [`Evaluator`](../interfaces/Evaluator.md)[]
+> `optional` **evaluators**: [`Evaluator`](../interfaces/Evaluator.md)[]
+
+### services?
+
+> `optional` **services**: [`Service`](../classes/Service.md)[]
 
 ## Defined in
 
-[packages/core/src/core/types.ts:303](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L303)
+[packages/core/src/types.ts:308](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L308)
diff --git a/docs/api/type-aliases/UUID.md b/docs/api/type-aliases/UUID.md
index 5c19678a797..ec53a405afb 100644
--- a/docs/api/type-aliases/UUID.md
+++ b/docs/api/type-aliases/UUID.md
@@ -6,4 +6,4 @@ Represents a UUID, which is a universally unique identifier conforming to the UU
 
 ## Defined in
 
-[packages/core/src/core/types.ts:7](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L7)
+[packages/core/src/types.ts:6](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L6)
diff --git a/docs/api/type-aliases/Validator.md b/docs/api/type-aliases/Validator.md
index ea0b84a0bd1..bfbba8cea45 100644
--- a/docs/api/type-aliases/Validator.md
+++ b/docs/api/type-aliases/Validator.md
@@ -18,4 +18,4 @@ Represents the type of a validator function, which takes a runtime instance, a m
 
 ## Defined in
 
-[packages/core/src/core/types.ts:203](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts#L203)
+[packages/core/src/types.ts:203](https://github.com/ai16z/eliza/blob/main/packages/core/src/types.ts#L203)
diff --git a/docs/api/typedoc-sidebar.cjs b/docs/api/typedoc-sidebar.cjs
index c8394d68f5a..3b429c8dbb2 100644
--- a/docs/api/typedoc-sidebar.cjs
+++ b/docs/api/typedoc-sidebar.cjs
@@ -1,4 +1,293 @@
 // @ts-check
 /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
-const typedocSidebar = { items: [{"type":"category","label":"Enumerations","items":[{"type":"doc","id":"enumerations/ImageGenModel","label":"ImageGenModel"},{"type":"doc","id":"enumerations/GoalStatus","label":"GoalStatus"},{"type":"doc","id":"enumerations/ModelClass","label":"ModelClass"},{"type":"doc","id":"enumerations/ModelProvider","label":"ModelProvider"},{"type":"doc","id":"enumerations/Clients","label":"Clients"}]},{"type":"category","label":"Classes","items":[{"type":"doc","id":"classes/PostgresDatabaseAdapter","label":"PostgresDatabaseAdapter"},{"type":"doc","id":"classes/SqliteDatabaseAdapter","label":"SqliteDatabaseAdapter"},{"type":"doc","id":"classes/DirectClient","label":"DirectClient"},{"type":"doc","id":"classes/DiscordClient","label":"DiscordClient"},{"type":"doc","id":"classes/TelegramClient","label":"TelegramClient"},{"type":"doc","id":"classes/TwitterInteractionClient","label":"TwitterInteractionClient"},{"type":"doc","id":"classes/TwitterPostClient","label":"TwitterPostClient"},{"type":"doc","id":"classes/TwitterSearchClient","label":"TwitterSearchClient"},{"type":"doc","id":"classes/DatabaseAdapter","label":"DatabaseAdapter"},{"type":"doc","id":"classes/MemoryManager","label":"MemoryManager"},{"type":"doc","id":"classes/AgentRuntime","label":"AgentRuntime"},{"type":"doc","id":"classes/TokenProvider","label":"TokenProvider"},{"type":"doc","id":"classes/WalletProvider","label":"WalletProvider"}]},{"type":"category","label":"Interfaces","items":[{"type":"doc","id":"interfaces/CreateAndBuyContent","label":"CreateAndBuyContent"},{"type":"doc","id":"interfaces/Content","label":"Content"},{"type":"doc","id":"interfaces/ActionExample","label":"ActionExample"},{"type":"doc","id":"interfaces/ConversationExample","label":"ConversationExample"},{"type":"doc","id":"interfaces/Actor","label":"Actor"},{"type":"doc","id":"interfaces/Objective","label":"Objective"},{"type":"doc","id":"interfaces/Goal","label":"Goal"},{"type":"doc","id":"interfaces/State","label":"State"},{"type":"doc","id":"interfaces/Memory","label":"Memory"},{"type":"doc","id":"interfaces/MessageExample","label":"MessageExample"},{"type":"doc","id":"interfaces/Action","label":"Action"},{"type":"doc","id":"interfaces/EvaluationExample","label":"EvaluationExample"},{"type":"doc","id":"interfaces/Evaluator","label":"Evaluator"},{"type":"doc","id":"interfaces/Provider","label":"Provider"},{"type":"doc","id":"interfaces/Relationship","label":"Relationship"},{"type":"doc","id":"interfaces/Account","label":"Account"},{"type":"doc","id":"interfaces/Participant","label":"Participant"},{"type":"doc","id":"interfaces/Room","label":"Room"},{"type":"doc","id":"interfaces/IDatabaseAdapter","label":"IDatabaseAdapter"},{"type":"doc","id":"interfaces/IMemoryManager","label":"IMemoryManager"},{"type":"doc","id":"interfaces/IAgentRuntime","label":"IAgentRuntime"},{"type":"doc","id":"interfaces/IImageRecognitionService","label":"IImageRecognitionService"},{"type":"doc","id":"interfaces/ITranscriptionService","label":"ITranscriptionService"},{"type":"doc","id":"interfaces/IVideoService","label":"IVideoService"},{"type":"doc","id":"interfaces/ILlamaService","label":"ILlamaService"},{"type":"doc","id":"interfaces/IBrowserService","label":"IBrowserService"},{"type":"doc","id":"interfaces/ISpeechService","label":"ISpeechService"},{"type":"doc","id":"interfaces/IPdfService","label":"IPdfService"}]},{"type":"category","label":"Type Aliases","items":[{"type":"doc","id":"type-aliases/UUID","label":"UUID"},{"type":"doc","id":"type-aliases/Model","label":"Model"},{"type":"doc","id":"type-aliases/Models","label":"Models"},{"type":"doc","id":"type-aliases/Handler","label":"Handler"},{"type":"doc","id":"type-aliases/HandlerCallback","label":"HandlerCallback"},{"type":"doc","id":"type-aliases/Validator","label":"Validator"},{"type":"doc","id":"type-aliases/Media","label":"Media"},{"type":"doc","id":"type-aliases/Plugin","label":"Plugin"},{"type":"doc","id":"type-aliases/Character","label":"Character"}]},{"type":"category","label":"Variables","items":[{"type":"doc","id":"variables/messageHandlerTemplate","label":"messageHandlerTemplate"},{"type":"doc","id":"variables/shouldContinueTemplate","label":"shouldContinueTemplate"},{"type":"doc","id":"variables/continueAction","label":"continueAction"},{"type":"doc","id":"variables/shouldFollowTemplate","label":"shouldFollowTemplate"},{"type":"doc","id":"variables/followRoom","label":"followRoom"},{"type":"doc","id":"variables/ignore","label":"ignore"},{"type":"doc","id":"variables/imageGeneration","label":"imageGeneration"},{"type":"doc","id":"variables/shouldMuteTemplate","label":"shouldMuteTemplate"},{"type":"doc","id":"variables/muteRoom","label":"muteRoom"},{"type":"doc","id":"variables/none","label":"none"},{"type":"doc","id":"variables/executeSwap","label":"executeSwap"},{"type":"doc","id":"variables/unfollowRoom","label":"unfollowRoom"},{"type":"doc","id":"variables/shouldUnmuteTemplate","label":"shouldUnmuteTemplate"},{"type":"doc","id":"variables/unmuteRoom","label":"unmuteRoom"},{"type":"doc","id":"variables/defaultActions","label":"defaultActions"},{"type":"doc","id":"variables/defaultCharacter","label":"defaultCharacter"},{"type":"doc","id":"variables/defaultEvaluators","label":"defaultEvaluators"},{"type":"doc","id":"variables/evaluationTemplate","label":"evaluationTemplate"},{"type":"doc","id":"variables/imageGenModels","label":"imageGenModels"},{"type":"doc","id":"variables/embeddingDimension","label":"embeddingDimension"},{"type":"doc","id":"variables/embeddingZeroVector","label":"embeddingZeroVector"},{"type":"doc","id":"variables/defaultProviders","label":"defaultProviders"},{"type":"doc","id":"variables/settings","label":"settings"},{"type":"doc","id":"variables/elizaLogger","label":"elizaLogger"},{"type":"doc","id":"variables/boredomProvider","label":"boredomProvider"},{"type":"doc","id":"variables/orderBookProvider","label":"orderBookProvider"},{"type":"doc","id":"variables/timeProvider","label":"timeProvider"},{"type":"doc","id":"variables/tokenProvider","label":"tokenProvider"},{"type":"doc","id":"variables/walletProvider","label":"walletProvider"}]},{"type":"category","label":"Functions","items":[{"type":"doc","id":"functions/generateImage","label":"generateImage"},{"type":"doc","id":"functions/generateCaption","label":"generateCaption"},{"type":"doc","id":"functions/isCreateAndBuyContent","label":"isCreateAndBuyContent"},{"type":"doc","id":"functions/createAndBuyToken","label":"createAndBuyToken"},{"type":"doc","id":"functions/buyToken","label":"buyToken"},{"type":"doc","id":"functions/sellToken","label":"sellToken"},{"type":"doc","id":"functions/loadActionConfigs","label":"loadActionConfigs"},{"type":"doc","id":"functions/loadCustomActions","label":"loadCustomActions"},{"type":"doc","id":"functions/initializeClients","label":"initializeClients"},{"type":"doc","id":"functions/parseArguments","label":"parseArguments"},{"type":"doc","id":"functions/loadCharacters","label":"loadCharacters"},{"type":"doc","id":"functions/getTokenForProvider","label":"getTokenForProvider"},{"type":"doc","id":"functions/initializeDatabase","label":"initializeDatabase"},{"type":"doc","id":"functions/createAgentRuntime","label":"createAgentRuntime"},{"type":"doc","id":"functions/createDirectRuntime","label":"createDirectRuntime"},{"type":"doc","id":"functions/startDiscord","label":"startDiscord"},{"type":"doc","id":"functions/startTelegram","label":"startTelegram"},{"type":"doc","id":"functions/startTwitter","label":"startTwitter"},{"type":"doc","id":"functions/composeActionExamples","label":"composeActionExamples"},{"type":"doc","id":"functions/formatActionNames","label":"formatActionNames"},{"type":"doc","id":"functions/formatActions","label":"formatActions"},{"type":"doc","id":"functions/composeContext","label":"composeContext"},{"type":"doc","id":"functions/addHeader","label":"addHeader"},{"type":"doc","id":"functions/embed","label":"embed"},{"type":"doc","id":"functions/retrieveCachedEmbedding","label":"retrieveCachedEmbedding"},{"type":"doc","id":"functions/formatEvaluatorNames","label":"formatEvaluatorNames"},{"type":"doc","id":"functions/formatEvaluators","label":"formatEvaluators"},{"type":"doc","id":"functions/formatEvaluatorExamples","label":"formatEvaluatorExamples"},{"type":"doc","id":"functions/formatEvaluatorExampleDescriptions","label":"formatEvaluatorExampleDescriptions"},{"type":"doc","id":"functions/generateText","label":"generateText"},{"type":"doc","id":"functions/trimTokens","label":"trimTokens"},{"type":"doc","id":"functions/generateShouldRespond","label":"generateShouldRespond"},{"type":"doc","id":"functions/splitChunks","label":"splitChunks"},{"type":"doc","id":"functions/generateTrueOrFalse","label":"generateTrueOrFalse"},{"type":"doc","id":"functions/generateTextArray","label":"generateTextArray"},{"type":"doc","id":"functions/generateObject","label":"generateObject"},{"type":"doc","id":"functions/generateObjectArray","label":"generateObjectArray"},{"type":"doc","id":"functions/generateMessageResponse","label":"generateMessageResponse"},{"type":"doc","id":"functions/getGoals","label":"getGoals"},{"type":"doc","id":"functions/formatGoalsAsString","label":"formatGoalsAsString"},{"type":"doc","id":"functions/updateGoal","label":"updateGoal"},{"type":"doc","id":"functions/createGoal","label":"createGoal"},{"type":"doc","id":"functions/getImageGenModel","label":"getImageGenModel"},{"type":"doc","id":"functions/getActorDetails","label":"getActorDetails"},{"type":"doc","id":"functions/formatActors","label":"formatActors"},{"type":"doc","id":"functions/formatMessages","label":"formatMessages"},{"type":"doc","id":"functions/formatTimestamp","label":"formatTimestamp"},{"type":"doc","id":"functions/getModel","label":"getModel"},{"type":"doc","id":"functions/getEndpoint","label":"getEndpoint"},{"type":"doc","id":"functions/formatPosts","label":"formatPosts"},{"type":"doc","id":"functions/getProviders","label":"getProviders"},{"type":"doc","id":"functions/createRelationship","label":"createRelationship"},{"type":"doc","id":"functions/getRelationship","label":"getRelationship"},{"type":"doc","id":"functions/getRelationships","label":"getRelationships"},{"type":"doc","id":"functions/formatRelationships","label":"formatRelationships"}]}]};
-module.exports = typedocSidebar.items;
\ No newline at end of file
+const typedocSidebar = {
+  items: [
+    {
+      type: "category",
+      label: "Enumerations",
+      items: [
+        { type: "doc", id: "enumerations/GoalStatus", label: "GoalStatus" },
+        { type: "doc", id: "enumerations/ModelClass", label: "ModelClass" },
+        {
+          type: "doc",
+          id: "enumerations/ModelProviderName",
+          label: "ModelProviderName",
+        },
+        { type: "doc", id: "enumerations/Clients", label: "Clients" },
+        { type: "doc", id: "enumerations/ServiceType", label: "ServiceType" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Classes",
+      items: [
+        {
+          type: "doc",
+          id: "classes/DatabaseAdapter",
+          label: "DatabaseAdapter",
+        },
+        { type: "doc", id: "classes/MemoryManager", label: "MemoryManager" },
+        { type: "doc", id: "classes/AgentRuntime", label: "AgentRuntime" },
+        { type: "doc", id: "classes/Service", label: "Service" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Interfaces",
+      items: [
+        { type: "doc", id: "interfaces/Content", label: "Content" },
+        { type: "doc", id: "interfaces/ActionExample", label: "ActionExample" },
+        {
+          type: "doc",
+          id: "interfaces/ConversationExample",
+          label: "ConversationExample",
+        },
+        { type: "doc", id: "interfaces/Actor", label: "Actor" },
+        { type: "doc", id: "interfaces/Objective", label: "Objective" },
+        { type: "doc", id: "interfaces/Goal", label: "Goal" },
+        { type: "doc", id: "interfaces/State", label: "State" },
+        { type: "doc", id: "interfaces/Memory", label: "Memory" },
+        {
+          type: "doc",
+          id: "interfaces/MessageExample",
+          label: "MessageExample",
+        },
+        { type: "doc", id: "interfaces/Action", label: "Action" },
+        {
+          type: "doc",
+          id: "interfaces/EvaluationExample",
+          label: "EvaluationExample",
+        },
+        { type: "doc", id: "interfaces/Evaluator", label: "Evaluator" },
+        { type: "doc", id: "interfaces/Provider", label: "Provider" },
+        { type: "doc", id: "interfaces/Relationship", label: "Relationship" },
+        { type: "doc", id: "interfaces/Account", label: "Account" },
+        { type: "doc", id: "interfaces/Participant", label: "Participant" },
+        { type: "doc", id: "interfaces/Room", label: "Room" },
+        {
+          type: "doc",
+          id: "interfaces/IDatabaseAdapter",
+          label: "IDatabaseAdapter",
+        },
+        {
+          type: "doc",
+          id: "interfaces/IMemoryManager",
+          label: "IMemoryManager",
+        },
+        { type: "doc", id: "interfaces/IAgentRuntime", label: "IAgentRuntime" },
+        {
+          type: "doc",
+          id: "interfaces/IImageDescriptionService",
+          label: "IImageDescriptionService",
+        },
+        {
+          type: "doc",
+          id: "interfaces/ITranscriptionService",
+          label: "ITranscriptionService",
+        },
+        { type: "doc", id: "interfaces/IVideoService", label: "IVideoService" },
+        {
+          type: "doc",
+          id: "interfaces/ITextGenerationService",
+          label: "ITextGenerationService",
+        },
+        {
+          type: "doc",
+          id: "interfaces/IBrowserService",
+          label: "IBrowserService",
+        },
+        {
+          type: "doc",
+          id: "interfaces/ISpeechService",
+          label: "ISpeechService",
+        },
+        { type: "doc", id: "interfaces/IPdfService", label: "IPdfService" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Type Aliases",
+      items: [
+        { type: "doc", id: "type-aliases/UUID", label: "UUID" },
+        { type: "doc", id: "type-aliases/Model", label: "Model" },
+        { type: "doc", id: "type-aliases/Models", label: "Models" },
+        { type: "doc", id: "type-aliases/Handler", label: "Handler" },
+        {
+          type: "doc",
+          id: "type-aliases/HandlerCallback",
+          label: "HandlerCallback",
+        },
+        { type: "doc", id: "type-aliases/Validator", label: "Validator" },
+        { type: "doc", id: "type-aliases/Media", label: "Media" },
+        { type: "doc", id: "type-aliases/Client", label: "Client" },
+        { type: "doc", id: "type-aliases/Plugin", label: "Plugin" },
+        { type: "doc", id: "type-aliases/Character", label: "Character" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Variables",
+      items: [
+        {
+          type: "doc",
+          id: "variables/defaultCharacter",
+          label: "defaultCharacter",
+        },
+        {
+          type: "doc",
+          id: "variables/evaluationTemplate",
+          label: "evaluationTemplate",
+        },
+        { type: "doc", id: "variables/elizaLogger", label: "elizaLogger" },
+        {
+          type: "doc",
+          id: "variables/embeddingDimension",
+          label: "embeddingDimension",
+        },
+        {
+          type: "doc",
+          id: "variables/embeddingZeroVector",
+          label: "embeddingZeroVector",
+        },
+        { type: "doc", id: "variables/settings", label: "settings" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Functions",
+      items: [
+        {
+          type: "doc",
+          id: "functions/composeActionExamples",
+          label: "composeActionExamples",
+        },
+        {
+          type: "doc",
+          id: "functions/formatActionNames",
+          label: "formatActionNames",
+        },
+        { type: "doc", id: "functions/formatActions", label: "formatActions" },
+        {
+          type: "doc",
+          id: "functions/composeContext",
+          label: "composeContext",
+        },
+        { type: "doc", id: "functions/addHeader", label: "addHeader" },
+        { type: "doc", id: "functions/embed", label: "embed" },
+        {
+          type: "doc",
+          id: "functions/retrieveCachedEmbedding",
+          label: "retrieveCachedEmbedding",
+        },
+        {
+          type: "doc",
+          id: "functions/formatEvaluatorNames",
+          label: "formatEvaluatorNames",
+        },
+        {
+          type: "doc",
+          id: "functions/formatEvaluators",
+          label: "formatEvaluators",
+        },
+        {
+          type: "doc",
+          id: "functions/formatEvaluatorExamples",
+          label: "formatEvaluatorExamples",
+        },
+        {
+          type: "doc",
+          id: "functions/formatEvaluatorExampleDescriptions",
+          label: "formatEvaluatorExampleDescriptions",
+        },
+        { type: "doc", id: "functions/generateText", label: "generateText" },
+        { type: "doc", id: "functions/trimTokens", label: "trimTokens" },
+        {
+          type: "doc",
+          id: "functions/generateShouldRespond",
+          label: "generateShouldRespond",
+        },
+        { type: "doc", id: "functions/splitChunks", label: "splitChunks" },
+        {
+          type: "doc",
+          id: "functions/generateTrueOrFalse",
+          label: "generateTrueOrFalse",
+        },
+        {
+          type: "doc",
+          id: "functions/generateTextArray",
+          label: "generateTextArray",
+        },
+        {
+          type: "doc",
+          id: "functions/generateObject",
+          label: "generateObject",
+        },
+        {
+          type: "doc",
+          id: "functions/generateObjectArray",
+          label: "generateObjectArray",
+        },
+        {
+          type: "doc",
+          id: "functions/generateMessageResponse",
+          label: "generateMessageResponse",
+        },
+        { type: "doc", id: "functions/generateImage", label: "generateImage" },
+        {
+          type: "doc",
+          id: "functions/generateCaption",
+          label: "generateCaption",
+        },
+        { type: "doc", id: "functions/getGoals", label: "getGoals" },
+        {
+          type: "doc",
+          id: "functions/formatGoalsAsString",
+          label: "formatGoalsAsString",
+        },
+        { type: "doc", id: "functions/updateGoal", label: "updateGoal" },
+        { type: "doc", id: "functions/createGoal", label: "createGoal" },
+        {
+          type: "doc",
+          id: "functions/getActorDetails",
+          label: "getActorDetails",
+        },
+        { type: "doc", id: "functions/formatActors", label: "formatActors" },
+        {
+          type: "doc",
+          id: "functions/formatMessages",
+          label: "formatMessages",
+        },
+        {
+          type: "doc",
+          id: "functions/formatTimestamp",
+          label: "formatTimestamp",
+        },
+        { type: "doc", id: "functions/getModel", label: "getModel" },
+        { type: "doc", id: "functions/getEndpoint", label: "getEndpoint" },
+        { type: "doc", id: "functions/formatPosts", label: "formatPosts" },
+        { type: "doc", id: "functions/getProviders", label: "getProviders" },
+        {
+          type: "doc",
+          id: "functions/createRelationship",
+          label: "createRelationship",
+        },
+        {
+          type: "doc",
+          id: "functions/getRelationship",
+          label: "getRelationship",
+        },
+        {
+          type: "doc",
+          id: "functions/getRelationships",
+          label: "getRelationships",
+        },
+        {
+          type: "doc",
+          id: "functions/formatRelationships",
+          label: "formatRelationships",
+        },
+      ],
+    },
+  ],
+};
+module.exports = typedocSidebar.items;
diff --git a/docs/api/variables/boredomProvider.md b/docs/api/variables/boredomProvider.md
deleted file mode 100644
index f72f1515df2..00000000000
--- a/docs/api/variables/boredomProvider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: boredomProvider
-
-> `const` **boredomProvider**: [`Provider`](../interfaces/Provider.md)
-
-## Defined in
-
-[packages/core/src/providers/boredom.ts:275](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/boredom.ts#L275)
diff --git a/docs/api/variables/continueAction.md b/docs/api/variables/continueAction.md
deleted file mode 100644
index 83be0eff42d..00000000000
--- a/docs/api/variables/continueAction.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: continueAction
-
-> `const` **continueAction**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/continue.ts:58](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/continue.ts#L58)
diff --git a/docs/api/variables/defaultActions.md b/docs/api/variables/defaultActions.md
deleted file mode 100644
index 8db9d30ca51..00000000000
--- a/docs/api/variables/defaultActions.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: defaultActions
-
-> `const` **defaultActions**: [`Action`](../interfaces/Action.md)[]
-
-## Defined in
-
-[packages/core/src/core/actions.ts:6](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/actions.ts#L6)
diff --git a/docs/api/variables/defaultCharacter.md b/docs/api/variables/defaultCharacter.md
index 60b1e1c6dfa..d921ca2cbc6 100644
--- a/docs/api/variables/defaultCharacter.md
+++ b/docs/api/variables/defaultCharacter.md
@@ -4,4 +4,4 @@
 
 ## Defined in
 
-[packages/core/src/core/defaultCharacter.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/defaultCharacter.ts#L3)
+[packages/core/src/defaultCharacter.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/defaultCharacter.ts#L3)
diff --git a/docs/api/variables/defaultEvaluators.md b/docs/api/variables/defaultEvaluators.md
deleted file mode 100644
index 9278f369d00..00000000000
--- a/docs/api/variables/defaultEvaluators.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: defaultEvaluators
-
-> `const` **defaultEvaluators**: [`Evaluator`](../interfaces/Evaluator.md)[]
-
-## Defined in
-
-[packages/core/src/core/evaluators.ts:7](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L7)
diff --git a/docs/api/variables/defaultProviders.md b/docs/api/variables/defaultProviders.md
deleted file mode 100644
index a551828de53..00000000000
--- a/docs/api/variables/defaultProviders.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: defaultProviders
-
-> `const` **defaultProviders**: [`Provider`](../interfaces/Provider.md)[]
-
-## Defined in
-
-[packages/core/src/core/providers.ts:4](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/providers.ts#L4)
diff --git a/docs/api/variables/elizaLogger.md b/docs/api/variables/elizaLogger.md
index d1be61a1a0b..1b5c4a638ff 100644
--- a/docs/api/variables/elizaLogger.md
+++ b/docs/api/variables/elizaLogger.md
@@ -1,7 +1,7 @@
 # Variable: elizaLogger
 
-> `const` **elizaLogger**: `elizaLogger`
+> `const` **elizaLogger**: `ElizaLogger`
 
 ## Defined in
 
-[packages/core/src/index.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/index.ts#L12)
+[packages/core/src/logger.ts:270](https://github.com/ai16z/eliza/blob/main/packages/core/src/logger.ts#L270)
diff --git a/docs/api/variables/embeddingDimension.md b/docs/api/variables/embeddingDimension.md
index 62a6edfb7a8..0ae7e7b44da 100644
--- a/docs/api/variables/embeddingDimension.md
+++ b/docs/api/variables/embeddingDimension.md
@@ -4,4 +4,4 @@
 
 ## Defined in
 
-[packages/core/src/core/memory.ts:9](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L9)
+[packages/core/src/memory.ts:9](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L9)
diff --git a/docs/api/variables/embeddingZeroVector.md b/docs/api/variables/embeddingZeroVector.md
index c3767e306a4..694ee6db920 100644
--- a/docs/api/variables/embeddingZeroVector.md
+++ b/docs/api/variables/embeddingZeroVector.md
@@ -4,4 +4,4 @@
 
 ## Defined in
 
-[packages/core/src/core/memory.ts:10](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/memory.ts#L10)
+[packages/core/src/memory.ts:10](https://github.com/ai16z/eliza/blob/main/packages/core/src/memory.ts#L10)
diff --git a/docs/api/variables/evaluationTemplate.md b/docs/api/variables/evaluationTemplate.md
index c6dc9cfab5d..5ea6b0cf701 100644
--- a/docs/api/variables/evaluationTemplate.md
+++ b/docs/api/variables/evaluationTemplate.md
@@ -6,4 +6,4 @@ Template used for the evaluation generateText.
 
 ## Defined in
 
-[packages/core/src/core/evaluators.ts:12](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/evaluators.ts#L12)
+[packages/core/src/evaluators.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/evaluators.ts#L8)
diff --git a/docs/api/variables/executeSwap.md b/docs/api/variables/executeSwap.md
deleted file mode 100644
index af1315167d1..00000000000
--- a/docs/api/variables/executeSwap.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: executeSwap
-
-> `const` **executeSwap**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/swap.ts:178](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/swap.ts#L178)
diff --git a/docs/api/variables/followRoom.md b/docs/api/variables/followRoom.md
deleted file mode 100644
index aa95fc439a2..00000000000
--- a/docs/api/variables/followRoom.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: followRoom
-
-> `const` **followRoom**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/followRoom.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/followRoom.ts#L27)
diff --git a/docs/api/variables/ignore.md b/docs/api/variables/ignore.md
deleted file mode 100644
index 481d52bcc99..00000000000
--- a/docs/api/variables/ignore.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: ignore
-
-> `const` **ignore**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/ignore.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/ignore.ts#L8)
diff --git a/docs/api/variables/imageGenModels.md b/docs/api/variables/imageGenModels.md
deleted file mode 100644
index fdc92a06a6a..00000000000
--- a/docs/api/variables/imageGenModels.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Variable: imageGenModels
-
-> `const` **imageGenModels**: `object`
-
-## Type declaration
-
-### TogetherAI
-
-> **TogetherAI**: `object`
-
-### TogetherAI.steps
-
-> **steps**: `number` = `4`
-
-### TogetherAI.subModel
-
-> **subModel**: `string` = `"black-forest-labs/FLUX.1-schnell"`
-
-### Dalle
-
-> **Dalle**: `object`
-
-### Dalle.steps
-
-> **steps**: `number` = `0`
-
-### Dalle.subModel
-
-> **subModel**: `string` = `"dall-e-3"`
-
-## Defined in
-
-[packages/core/src/core/imageGenModels.ts:6](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/imageGenModels.ts#L6)
diff --git a/docs/api/variables/imageGeneration.md b/docs/api/variables/imageGeneration.md
deleted file mode 100644
index 6e4847b1e91..00000000000
--- a/docs/api/variables/imageGeneration.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: imageGeneration
-
-> `const` **imageGeneration**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/imageGeneration.ts:11](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/imageGeneration.ts#L11)
diff --git a/docs/api/variables/messageHandlerTemplate.md b/docs/api/variables/messageHandlerTemplate.md
deleted file mode 100644
index 45548796f5a..00000000000
--- a/docs/api/variables/messageHandlerTemplate.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: messageHandlerTemplate
-
-> `const` **messageHandlerTemplate**: `string`
-
-## Defined in
-
-[packages/core/src/actions/continue.ts:20](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/continue.ts#L20)
diff --git a/docs/api/variables/muteRoom.md b/docs/api/variables/muteRoom.md
deleted file mode 100644
index 07b7c2b6790..00000000000
--- a/docs/api/variables/muteRoom.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: muteRoom
-
-> `const` **muteRoom**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/muteRoom.ts:28](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/muteRoom.ts#L28)
diff --git a/docs/api/variables/none.md b/docs/api/variables/none.md
deleted file mode 100644
index 4dfb235bf88..00000000000
--- a/docs/api/variables/none.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: none
-
-> `const` **none**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/none.ts:8](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/none.ts#L8)
diff --git a/docs/api/variables/orderBookProvider.md b/docs/api/variables/orderBookProvider.md
deleted file mode 100644
index 3ab3043393d..00000000000
--- a/docs/api/variables/orderBookProvider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: orderBookProvider
-
-> `const` **orderBookProvider**: [`Provider`](../interfaces/Provider.md)
-
-## Defined in
-
-[packages/core/src/providers/orderBook.ts:14](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/orderBook.ts#L14)
diff --git a/docs/api/variables/settings.md b/docs/api/variables/settings.md
index 40c67832fbf..58304788e6b 100644
--- a/docs/api/variables/settings.md
+++ b/docs/api/variables/settings.md
@@ -4,4 +4,4 @@
 
 ## Defined in
 
-[packages/core/src/core/settings.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/core/settings.ts#L54)
+[packages/core/src/settings.ts:54](https://github.com/ai16z/eliza/blob/main/packages/core/src/settings.ts#L54)
diff --git a/docs/api/variables/shouldContinueTemplate.md b/docs/api/variables/shouldContinueTemplate.md
deleted file mode 100644
index f97b57d62f5..00000000000
--- a/docs/api/variables/shouldContinueTemplate.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: shouldContinueTemplate
-
-> `const` **shouldContinueTemplate**: `string`
-
-## Defined in
-
-[packages/core/src/actions/continue.ts:47](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/continue.ts#L47)
diff --git a/docs/api/variables/shouldFollowTemplate.md b/docs/api/variables/shouldFollowTemplate.md
deleted file mode 100644
index 7216c0f212e..00000000000
--- a/docs/api/variables/shouldFollowTemplate.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: shouldFollowTemplate
-
-> `const` **shouldFollowTemplate**: `string`
-
-## Defined in
-
-[packages/core/src/actions/followRoom.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/followRoom.ts#L13)
diff --git a/docs/api/variables/shouldMuteTemplate.md b/docs/api/variables/shouldMuteTemplate.md
deleted file mode 100644
index 0a82ad2ea00..00000000000
--- a/docs/api/variables/shouldMuteTemplate.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: shouldMuteTemplate
-
-> `const` **shouldMuteTemplate**: `string`
-
-## Defined in
-
-[packages/core/src/actions/muteRoom.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/muteRoom.ts#L13)
diff --git a/docs/api/variables/shouldUnmuteTemplate.md b/docs/api/variables/shouldUnmuteTemplate.md
deleted file mode 100644
index 70abfcd5eb9..00000000000
--- a/docs/api/variables/shouldUnmuteTemplate.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: shouldUnmuteTemplate
-
-> `const` **shouldUnmuteTemplate**: `string`
-
-## Defined in
-
-[packages/core/src/actions/unmuteRoom.ts:13](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/unmuteRoom.ts#L13)
diff --git a/docs/api/variables/timeProvider.md b/docs/api/variables/timeProvider.md
deleted file mode 100644
index f12b023158c..00000000000
--- a/docs/api/variables/timeProvider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: timeProvider
-
-> `const` **timeProvider**: [`Provider`](../interfaces/Provider.md)
-
-## Defined in
-
-[packages/core/src/providers/time.ts:3](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/time.ts#L3)
diff --git a/docs/api/variables/tokenProvider.md b/docs/api/variables/tokenProvider.md
deleted file mode 100644
index de8089dee0a..00000000000
--- a/docs/api/variables/tokenProvider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: tokenProvider
-
-> `const` **tokenProvider**: [`Provider`](../interfaces/Provider.md)
-
-## Defined in
-
-[packages/core/src/providers/token.ts:812](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/token.ts#L812)
diff --git a/docs/api/variables/unfollowRoom.md b/docs/api/variables/unfollowRoom.md
deleted file mode 100644
index 010f73530e5..00000000000
--- a/docs/api/variables/unfollowRoom.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: unfollowRoom
-
-> `const` **unfollowRoom**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/unfollowRoom.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/unfollowRoom.ts#L27)
diff --git a/docs/api/variables/unmuteRoom.md b/docs/api/variables/unmuteRoom.md
deleted file mode 100644
index 1265884bbeb..00000000000
--- a/docs/api/variables/unmuteRoom.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: unmuteRoom
-
-> `const` **unmuteRoom**: [`Action`](../interfaces/Action.md)
-
-## Defined in
-
-[packages/core/src/actions/unmuteRoom.ts:27](https://github.com/ai16z/eliza/blob/main/packages/core/src/actions/unmuteRoom.ts#L27)
diff --git a/docs/api/variables/walletProvider.md b/docs/api/variables/walletProvider.md
deleted file mode 100644
index 7ad788f2735..00000000000
--- a/docs/api/variables/walletProvider.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Variable: walletProvider
-
-> `const` **walletProvider**: [`Provider`](../interfaces/Provider.md)
-
-## Defined in
-
-[packages/core/src/providers/wallet.ts:244](https://github.com/ai16z/eliza/blob/main/packages/core/src/providers/wallet.ts#L244)
diff --git a/docs/backup_docusaurus.config.js b/docs/backup_docusaurus.config.js
index aa269e981a1..991fd82dbe1 100644
--- a/docs/backup_docusaurus.config.js
+++ b/docs/backup_docusaurus.config.js
@@ -5,7 +5,7 @@ const config = {
   title: "eliza",
   tagline: "The flexible, scalable AI agent for everyone",
   favicon: "img/favicon.ico",
- 
+
   // GitHub Pages Configuration
   url: "https://ai16z.github.io",
   baseUrl: "/eliza/",
@@ -15,7 +15,7 @@ const config = {
   trailingSlash: true,
   onBrokenLinks: "throw",
   onBrokenMarkdownLinks: "warn",
-  
+
   i18n: {
     defaultLocale: "en",
     locales: ["en"],
@@ -24,7 +24,7 @@ const config = {
     mermaid: true,
   },
   themes: [
-    '@docusaurus/theme-mermaid',
+    "@docusaurus/theme-mermaid",
     // Any other themes...
   ],
   plugins: [
@@ -80,7 +80,7 @@ const config = {
     ({
       // Enable dark mode by default
       colorMode: {
-        defaultMode: 'dark',
+        defaultMode: "dark",
         disableSwitch: false,
         respectPrefersColorScheme: true,
       },
@@ -115,50 +115,50 @@ const config = {
             href: "https://github.com/ai16z/eliza",
             label: "GitHub",
             position: "right",
-          }
-        ]
+          },
+        ],
       },
       footer: {
-        style: 'dark',
+        style: "dark",
         links: [
           {
-            title: 'Docs',
+            title: "Docs",
             items: [
-              { 
-                label: 'General',
-                href: './'
+              {
+                label: "General",
+                href: "./",
               },
-            ]
+            ],
           },
           {
-            title: 'Community',
+            title: "Community",
             items: [
               {
-                label: 'Discord',
-                href: 'https://discord.gg/NQHKW7US'
+                label: "Discord",
+                href: "https://discord.gg/NQHKW7US",
               },
               {
-                label: 'Twitter',
-                href: 'https://twitter.com/pmairca'
-              }
-            ]
+                label: "Twitter",
+                href: "https://twitter.com/pmairca",
+              },
+            ],
           },
           {
-            title: 'More',
+            title: "More",
             items: [
               {
-                label: 'GitHub',
-                href: 'https://github.com/ai16z/eliza'
-              }
-            ]
-          }
+                label: "GitHub",
+                href: "https://github.com/ai16z/eliza",
+              },
+            ],
+          },
         ],
-        copyright: `Copyright © ${new Date().getFullYear()} ai16z.ai`
+        copyright: `Copyright © ${new Date().getFullYear()} ai16z.ai`,
       },
       prism: {
         theme: prismThemes.github,
-        darkTheme: prismThemes.dracula
-      }
+        darkTheme: prismThemes.dracula,
+      },
     }),
 };
 export default config;
diff --git a/docs/docs/api/enumerations/Clients.md b/docs/docs/api/enumerations/Clients.md
new file mode 100644
index 00000000000..cfa00eb6fb7
--- /dev/null
+++ b/docs/docs/api/enumerations/Clients.md
@@ -0,0 +1,41 @@
+# Enumeration: Clients
+
+## Enumeration Members
+
+### DIRECT
+
+> **DIRECT**: `"direct"`
+
+#### Defined in
+
+[packages/core/src/types.ts:324](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L324)
+
+---
+
+### DISCORD
+
+> **DISCORD**: `"discord"`
+
+#### Defined in
+
+[packages/core/src/types.ts:323](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L323)
+
+---
+
+### TELEGRAM
+
+> **TELEGRAM**: `"telegram"`
+
+#### Defined in
+
+[packages/core/src/types.ts:326](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L326)
+
+---
+
+### TWITTER
+
+> **TWITTER**: `"twitter"`
+
+#### Defined in
+
+[packages/core/src/types.ts:325](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L325)
diff --git a/docs/docs/api/enumerations/GoalStatus.md b/docs/docs/api/enumerations/GoalStatus.md
new file mode 100644
index 00000000000..d5445189bcf
--- /dev/null
+++ b/docs/docs/api/enumerations/GoalStatus.md
@@ -0,0 +1,31 @@
+# Enumeration: GoalStatus
+
+## Enumeration Members
+
+### DONE
+
+> **DONE**: `"DONE"`
+
+#### Defined in
+
+[packages/core/src/types.ts:58](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L58)
+
+---
+
+### FAILED
+
+> **FAILED**: `"FAILED"`
+
+#### Defined in
+
+[packages/core/src/types.ts:59](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L59)
+
+---
+
+### IN_PROGRESS
+
+> **IN_PROGRESS**: `"IN_PROGRESS"`
+
+#### Defined in
+
+[packages/core/src/types.ts:60](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L60)
diff --git a/docs/docs/api/enumerations/ModelClass.md b/docs/docs/api/enumerations/ModelClass.md
new file mode 100644
index 00000000000..5ee17086cdf
--- /dev/null
+++ b/docs/docs/api/enumerations/ModelClass.md
@@ -0,0 +1,51 @@
+# Enumeration: ModelClass
+
+## Enumeration Members
+
+### EMBEDDING
+
+> **EMBEDDING**: `"embedding"`
+
+#### Defined in
+
+[packages/core/src/types.ts:79](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L79)
+
+---
+
+### IMAGE
+
+> **IMAGE**: `"image"`
+
+#### Defined in
+
+[packages/core/src/types.ts:80](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L80)
+
+---
+
+### LARGE
+
+> **LARGE**: `"large"`
+
+#### Defined in
+
+[packages/core/src/types.ts:78](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L78)
+
+---
+
+### MEDIUM
+
+> **MEDIUM**: `"medium"`
+
+#### Defined in
+
+[packages/core/src/types.ts:77](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L77)
+
+---
+
+### SMALL
+
+> **SMALL**: `"small"`
+
+#### Defined in
+
+[packages/core/src/types.ts:76](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L76)
diff --git a/docs/docs/api/enumerations/ModelProviderName.md b/docs/docs/api/enumerations/ModelProviderName.md
new file mode 100644
index 00000000000..902ed6cccfb
--- /dev/null
+++ b/docs/docs/api/enumerations/ModelProviderName.md
@@ -0,0 +1,101 @@
+# Enumeration: ModelProviderName
+
+## Enumeration Members
+
+### ANTHROPIC
+
+> **ANTHROPIC**: `"anthropic"`
+
+#### Defined in
+
+[packages/core/src/types.ts:121](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L121)
+
+---
+
+### CLAUDE_VERTEX
+
+> **CLAUDE_VERTEX**: `"claude_vertex"`
+
+#### Defined in
+
+[packages/core/src/types.ts:127](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L127)
+
+---
+
+### GOOGLE
+
+> **GOOGLE**: `"google"`
+
+#### Defined in
+
+[packages/core/src/types.ts:126](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L126)
+
+---
+
+### GROK
+
+> **GROK**: `"grok"`
+
+#### Defined in
+
+[packages/core/src/types.ts:122](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L122)
+
+---
+
+### GROQ
+
+> **GROQ**: `"groq"`
+
+#### Defined in
+
+[packages/core/src/types.ts:123](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L123)
+
+---
+
+### LLAMACLOUD
+
+> **LLAMACLOUD**: `"llama_cloud"`
+
+#### Defined in
+
+[packages/core/src/types.ts:124](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L124)
+
+---
+
+### LLAMALOCAL
+
+> **LLAMALOCAL**: `"llama_local"`
+
+#### Defined in
+
+[packages/core/src/types.ts:125](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L125)
+
+---
+
+### OLLAMA
+
+> **OLLAMA**: `"ollama"`
+
+#### Defined in
+
+[packages/core/src/types.ts:129](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L129)
+
+---
+
+### OPENAI
+
+> **OPENAI**: `"openai"`
+
+#### Defined in
+
+[packages/core/src/types.ts:120](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L120)
+
+---
+
+### REDPILL
+
+> **REDPILL**: `"redpill"`
+
+#### Defined in
+
+[packages/core/src/types.ts:128](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L128)
diff --git a/docs/docs/api/enumerations/ServiceType.md b/docs/docs/api/enumerations/ServiceType.md
new file mode 100644
index 00000000000..e25a101659b
--- /dev/null
+++ b/docs/docs/api/enumerations/ServiceType.md
@@ -0,0 +1,71 @@
+# Enumeration: ServiceType
+
+## Enumeration Members
+
+### BROWSER
+
+> **BROWSER**: `"browser"`
+
+#### Defined in
+
+[packages/core/src/types.ts:633](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L633)
+
+---
+
+### IMAGE_DESCRIPTION
+
+> **IMAGE_DESCRIPTION**: `"image_description"`
+
+#### Defined in
+
+[packages/core/src/types.ts:629](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L629)
+
+---
+
+### PDF
+
+> **PDF**: `"pdf"`
+
+#### Defined in
+
+[packages/core/src/types.ts:635](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L635)
+
+---
+
+### SPEECH_GENERATION
+
+> **SPEECH_GENERATION**: `"speech_generation"`
+
+#### Defined in
+
+[packages/core/src/types.ts:634](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L634)
+
+---
+
+### TEXT_GENERATION
+
+> **TEXT_GENERATION**: `"text_generation"`
+
+#### Defined in
+
+[packages/core/src/types.ts:632](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L632)
+
+---
+
+### TRANSCRIPTION
+
+> **TRANSCRIPTION**: `"transcription"`
+
+#### Defined in
+
+[packages/core/src/types.ts:630](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L630)
+
+---
+
+### VIDEO
+
+> **VIDEO**: `"video"`
+
+#### Defined in
+
+[packages/core/src/types.ts:631](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L631)
diff --git a/docs/docs/api/functions/getEndpoint.md b/docs/docs/api/functions/getEndpoint.md
new file mode 100644
index 00000000000..9200d1d96b5
--- /dev/null
+++ b/docs/docs/api/functions/getEndpoint.md
@@ -0,0 +1,15 @@
+# Function: getEndpoint()
+
+> **getEndpoint**(`provider`): `string`
+
+## Parameters
+
+• **provider**: [`ModelProviderName`](../enumerations/ModelProviderName.md)
+
+## Returns
+
+`string`
+
+## Defined in
+
+[packages/core/src/models.ts:188](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/models.ts#L188)
diff --git a/docs/docs/api/index.md b/docs/docs/api/index.md
new file mode 100644
index 00000000000..277dac78164
--- /dev/null
+++ b/docs/docs/api/index.md
@@ -0,0 +1,176 @@
+# Eliza
+
+<img src="_media/eliza_banner.jpg" alt="Eliza Banner" width="100%" />
+
+### [For Chinese Version: 中文说明](_media/README_CN.md)
+
+## Features
+
+- 🛠 Full-featured Discord, Twitter and Telegram connectors
+- 👥 Multi-agent and room support
+- 📚 Easily ingest and interact with your documents
+- 💾 Retrievable memory and document store
+- 🚀 Highly extensible - create your own actions and clients to extend capabilities
+- ☁️ Supports many models, including local Llama, OpenAI, Anthropic, Groq, and more
+- 📦 Just works!
+
+## What can I use it for?
+
+- 🤖 Chatbots
+- 🕵️ Autonomous Agents
+- 📈 Business process handling
+- 🎮 Video game NPCs
+
+# Getting Started
+
+**Prerequisites (MUST):**
+
+- [Node.js 22+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [pnpm](https://pnpm.io/installation)
+
+### Edit the .env file
+
+- Copy .env.example to .env and fill in the appropriate values
+- Edit the TWITTER environment variables to add your bot's username and password
+
+### Edit the character file
+
+- Check out the file `src/core/defaultCharacter.ts` - you can modify this
+- You can also load characters with the `pnpm start --characters="path/to/your/character.json"` and run multiple bots at the same time.
+
+After setting up the .env file and character file, you can start the bot with the following command:
+
+```
+pnpm i
+pnpm start
+```
+
+# Customising Eliza
+
+### Adding custom actions
+
+To avoid git clashes in the core directory, we recommend adding custom actions to a `custom_actions` directory and then adding them to the `elizaConfig.yaml` file. See the `elizaConfig.example.yaml` file for an example.
+
+## Running with different models
+
+### Run with Llama
+
+You can run Llama 70B or 405B models by setting the `XAI_MODEL` environment variable to `meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` or `meta-llama/Meta-Llama-3.1-405B-Instruct`
+
+### Run with Grok
+
+You can run Grok models by setting the `XAI_MODEL` environment variable to `grok-beta`
+
+### Run with OpenAI
+
+You can run OpenAI models by setting the `XAI_MODEL` environment variable to `gpt-4o-mini` or `gpt-4o`
+
+## Additional Requirements
+
+You may need to install Sharp. If you see an error when starting up, try installing it with the following command:
+
+```
+pnpm install --include=optional sharp
+```
+
+# Environment Setup
+
+You will need to add environment variables to your .env file to connect to various platforms:
+
+```
+# Required environment variables
+DISCORD_APPLICATION_ID=
+DISCORD_API_TOKEN= # Bot token
+OPENAI_API_KEY=sk-* # OpenAI API key, starting with sk-
+ELEVENLABS_XI_API_KEY= # API key from elevenlabs
+
+# ELEVENLABS SETTINGS
+ELEVENLABS_MODEL_ID=eleven_multilingual_v2
+ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
+ELEVENLABS_VOICE_STABILITY=0.5
+ELEVENLABS_VOICE_SIMILARITY_BOOST=0.9
+ELEVENLABS_VOICE_STYLE=0.66
+ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
+ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
+ELEVENLABS_OUTPUT_FORMAT=pcm_16000
+
+TWITTER_DRY_RUN=false
+TWITTER_USERNAME= # Account username
+TWITTER_PASSWORD= # Account password
+TWITTER_EMAIL= # Account email
+TWITTER_COOKIES= # Account cookies
+
+X_SERVER_URL=
+XAI_API_KEY=
+XAI_MODEL=
+
+# For asking Claude stuff
+ANTHROPIC_API_KEY=
+
+WALLET_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
+WALLET_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
+
+BIRDEYE_API_KEY=
+
+SOL_ADDRESS=So11111111111111111111111111111111111111112
+SLIPPAGE=1
+RPC_URL=https://api.mainnet-beta.solana.com
+HELIUS_API_KEY=
+
+## Telegram
+TELEGRAM_BOT_TOKEN=
+
+TOGETHER_API_KEY=
+```
+
+# Local Inference Setup
+
+### CUDA Setup
+
+If you have an NVIDIA GPU, you can install CUDA to speed up local inference dramatically.
+
+```
+pnpm install
+npx --no node-llama-cpp source download --gpu cuda
+```
+
+Make sure that you've installed the CUDA Toolkit, including cuDNN and cuBLAS.
+
+### Running locally
+
+Add XAI_MODEL and set it to one of the above options from [Run with
+Llama](#run-with-llama) - you can leave X_SERVER_URL and XAI_API_KEY blank, it
+downloads the model from huggingface and queries it locally
+
+# Clients
+
+## Discord Bot
+
+For help with setting up your Discord Bot, check out here: https://discordjs.guide/preparations/setting-up-a-bot-application.html
+
+# Development
+
+## Testing
+
+To run the test suite:
+
+```bash
+pnpm test           # Run tests once
+pnpm test:watch    # Run tests in watch mode
+```
+
+For database-specific tests:
+
+```bash
+pnpm test:sqlite   # Run tests with SQLite
+pnpm test:sqljs    # Run tests with SQL.js
+```
+
+Tests are written using Jest and can be found in `src/**/*.test.ts` files. The test environment is configured to:
+
+- Load environment variables from `.env.test`
+- Use a 2-minute timeout for long-running tests
+- Support ESM modules
+- Run tests in sequence (--runInBand)
+
+To create new tests, add a `.test.ts` file adjacent to the code you're testing.
diff --git a/docs/docs/api/interfaces/Account.md b/docs/docs/api/interfaces/Account.md
new file mode 100644
index 00000000000..4d457f27b4b
--- /dev/null
+++ b/docs/docs/api/interfaces/Account.md
@@ -0,0 +1,67 @@
+# Interface: Account
+
+Represents a user, including their name, details, and a unique identifier.
+
+## Properties
+
+### avatarUrl?
+
+> `optional` **avatarUrl**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:280](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L280)
+
+---
+
+### details?
+
+> `optional` **details**: `object`
+
+#### Index Signature
+
+\[`key`: `string`\]: `any`
+
+#### Defined in
+
+[packages/core/src/types.ts:278](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L278)
+
+---
+
+### email?
+
+> `optional` **email**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:279](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L279)
+
+---
+
+### id
+
+> **id**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:275](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L275)
+
+---
+
+### name
+
+> **name**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:276](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L276)
+
+---
+
+### username
+
+> **username**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:277](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L277)
diff --git a/docs/docs/api/interfaces/Action.md b/docs/docs/api/interfaces/Action.md
new file mode 100644
index 00000000000..0b8a55a6efb
--- /dev/null
+++ b/docs/docs/api/interfaces/Action.md
@@ -0,0 +1,63 @@
+# Interface: Action
+
+Represents an action that the agent can perform, including conditions for its use, a description, examples, a handler function, and a validation function.
+
+## Properties
+
+### description
+
+> **description**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:219](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L219)
+
+---
+
+### examples
+
+> **examples**: [`ActionExample`](ActionExample.md)[][]
+
+#### Defined in
+
+[packages/core/src/types.ts:220](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L220)
+
+---
+
+### handler
+
+> **handler**: [`Handler`](../type-aliases/Handler.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:221](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L221)
+
+---
+
+### name
+
+> **name**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:222](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L222)
+
+---
+
+### similes
+
+> **similes**: `string`[]
+
+#### Defined in
+
+[packages/core/src/types.ts:218](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L218)
+
+---
+
+### validate
+
+> **validate**: [`Validator`](../type-aliases/Validator.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:223](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L223)
diff --git a/docs/docs/api/interfaces/Content.md b/docs/docs/api/interfaces/Content.md
new file mode 100644
index 00000000000..0bb27e36aa7
--- /dev/null
+++ b/docs/docs/api/interfaces/Content.md
@@ -0,0 +1,67 @@
+# Interface: Content
+
+Represents the content of a message, including its main text (`content`), any associated action (`action`), and the source of the content (`source`), if applicable.
+
+## Indexable
+
+\[`key`: `string`\]: `unknown`
+
+## Properties
+
+### action?
+
+> `optional` **action**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:14](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L14)
+
+---
+
+### attachments?
+
+> `optional` **attachments**: [`Media`](../type-aliases/Media.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:18](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L18)
+
+---
+
+### inReplyTo?
+
+> `optional` **inReplyTo**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:17](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L17)
+
+---
+
+### source?
+
+> `optional` **source**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:15](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L15)
+
+---
+
+### text
+
+> **text**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:13](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L13)
+
+---
+
+### url?
+
+> `optional` **url**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:16](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L16)
diff --git a/docs/docs/api/interfaces/EvaluationExample.md b/docs/docs/api/interfaces/EvaluationExample.md
new file mode 100644
index 00000000000..1a461ba5d68
--- /dev/null
+++ b/docs/docs/api/interfaces/EvaluationExample.md
@@ -0,0 +1,33 @@
+# Interface: EvaluationExample
+
+Represents an example for evaluation, including the context, an array of message examples, and the expected outcome.
+
+## Properties
+
+### context
+
+> **context**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:230](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L230)
+
+---
+
+### messages
+
+> **messages**: [`ActionExample`](ActionExample.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:231](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L231)
+
+---
+
+### outcome
+
+> **outcome**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:232](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L232)
diff --git a/docs/docs/api/interfaces/Evaluator.md b/docs/docs/api/interfaces/Evaluator.md
new file mode 100644
index 00000000000..c3e68ac9d55
--- /dev/null
+++ b/docs/docs/api/interfaces/Evaluator.md
@@ -0,0 +1,63 @@
+# Interface: Evaluator
+
+Represents an evaluator, which is used to assess and guide the agent's responses based on the current context and state.
+
+## Properties
+
+### description
+
+> **description**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:239](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L239)
+
+---
+
+### examples
+
+> **examples**: [`EvaluationExample`](EvaluationExample.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:241](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L241)
+
+---
+
+### handler
+
+> **handler**: [`Handler`](../type-aliases/Handler.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:242](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L242)
+
+---
+
+### name
+
+> **name**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:243](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L243)
+
+---
+
+### similes
+
+> **similes**: `string`[]
+
+#### Defined in
+
+[packages/core/src/types.ts:240](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L240)
+
+---
+
+### validate
+
+> **validate**: [`Validator`](../type-aliases/Validator.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:244](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L244)
diff --git a/docs/docs/api/interfaces/Goal.md b/docs/docs/api/interfaces/Goal.md
new file mode 100644
index 00000000000..00b8e1faa48
--- /dev/null
+++ b/docs/docs/api/interfaces/Goal.md
@@ -0,0 +1,63 @@
+# Interface: Goal
+
+Represents a goal, which is a higher-level aim composed of one or more objectives. Goals are tracked to measure progress or achievements within the conversation or system.
+
+## Properties
+
+### id?
+
+> `optional` **id**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:67](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L67)
+
+---
+
+### name
+
+> **name**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:70](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L70)
+
+---
+
+### objectives
+
+> **objectives**: [`Objective`](Objective.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:72](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L72)
+
+---
+
+### roomId
+
+> **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:68](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L68)
+
+---
+
+### status
+
+> **status**: [`GoalStatus`](../enumerations/GoalStatus.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:71](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L71)
+
+---
+
+### userId
+
+> **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:69](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L69)
diff --git a/docs/docs/api/interfaces/Memory.md b/docs/docs/api/interfaces/Memory.md
new file mode 100644
index 00000000000..c59c9cef353
--- /dev/null
+++ b/docs/docs/api/interfaces/Memory.md
@@ -0,0 +1,83 @@
+# Interface: Memory
+
+Represents a memory record, which could be a message or any other piece of information remembered by the system, including its content, associated user IDs, and optionally, its embedding vector for similarity comparisons.
+
+## Properties
+
+### agentId
+
+> **agentId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:172](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L172)
+
+---
+
+### content
+
+> **content**: [`Content`](Content.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:174](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L174)
+
+---
+
+### createdAt?
+
+> `optional` **createdAt**: `number`
+
+#### Defined in
+
+[packages/core/src/types.ts:173](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L173)
+
+---
+
+### embedding?
+
+> `optional` **embedding**: `number`[]
+
+#### Defined in
+
+[packages/core/src/types.ts:175](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L175)
+
+---
+
+### id?
+
+> `optional` **id**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:170](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L170)
+
+---
+
+### roomId
+
+> **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:176](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L176)
+
+---
+
+### unique?
+
+> `optional` **unique**: `boolean`
+
+#### Defined in
+
+[packages/core/src/types.ts:177](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L177)
+
+---
+
+### userId
+
+> **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:171](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L171)
diff --git a/docs/docs/api/interfaces/Objective.md b/docs/docs/api/interfaces/Objective.md
new file mode 100644
index 00000000000..5cfe89acfe5
--- /dev/null
+++ b/docs/docs/api/interfaces/Objective.md
@@ -0,0 +1,33 @@
+# Interface: Objective
+
+Represents an objective within a goal, detailing what needs to be achieved and whether it has been completed.
+
+## Properties
+
+### completed
+
+> **completed**: `boolean`
+
+#### Defined in
+
+[packages/core/src/types.ts:54](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L54)
+
+---
+
+### description
+
+> **description**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:53](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L53)
+
+---
+
+### id?
+
+> `optional` **id**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:52](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L52)
diff --git a/docs/docs/api/interfaces/Relationship.md b/docs/docs/api/interfaces/Relationship.md
new file mode 100644
index 00000000000..3cffa9fd280
--- /dev/null
+++ b/docs/docs/api/interfaces/Relationship.md
@@ -0,0 +1,73 @@
+# Interface: Relationship
+
+Represents a relationship between two users, including their IDs, the status of the relationship, and the room ID in which the relationship is established.
+
+## Properties
+
+### createdAt?
+
+> `optional` **createdAt**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:268](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L268)
+
+---
+
+### id
+
+> **id**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:262](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L262)
+
+---
+
+### roomId
+
+> **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:266](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L266)
+
+---
+
+### status
+
+> **status**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:267](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L267)
+
+---
+
+### userA
+
+> **userA**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:263](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L263)
+
+---
+
+### userB
+
+> **userB**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:264](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L264)
+
+---
+
+### userId
+
+> **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:265](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L265)
diff --git a/docs/docs/api/interfaces/State.md b/docs/docs/api/interfaces/State.md
new file mode 100644
index 00000000000..dbba18891a1
--- /dev/null
+++ b/docs/docs/api/interfaces/State.md
@@ -0,0 +1,277 @@
+# Interface: State
+
+Represents the state of the conversation or context in which the agent is operating, including information about users, messages, goals, and other relevant data.
+
+## Indexable
+
+\[`key`: `string`\]: `unknown`
+
+## Properties
+
+### actionExamples?
+
+> `optional` **actionExamples**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:158](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L158)
+
+---
+
+### actionNames?
+
+> `optional` **actionNames**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:155](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L155)
+
+---
+
+### actions?
+
+> `optional` **actions**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:156](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L156)
+
+---
+
+### actionsData?
+
+> `optional` **actionsData**: [`Action`](Action.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:157](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L157)
+
+---
+
+### actors
+
+> **actors**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:145](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L145)
+
+---
+
+### actorsData?
+
+> `optional` **actorsData**: [`Actor`](Actor.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:146](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L146)
+
+---
+
+### agentId?
+
+> `optional` **agentId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:137](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L137)
+
+---
+
+### agentName?
+
+> `optional` **agentName**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:143](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L143)
+
+---
+
+### bio
+
+> **bio**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:138](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L138)
+
+---
+
+### goals?
+
+> `optional` **goals**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:147](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L147)
+
+---
+
+### goalsData?
+
+> `optional` **goalsData**: [`Goal`](Goal.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:148](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L148)
+
+---
+
+### lore
+
+> **lore**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:139](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L139)
+
+---
+
+### messageDirections
+
+> **messageDirections**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:140](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L140)
+
+---
+
+### postDirections
+
+> **postDirections**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:141](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L141)
+
+---
+
+### providers?
+
+> `optional` **providers**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:159](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L159)
+
+---
+
+### recentFacts?
+
+> `optional` **recentFacts**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:151](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L151)
+
+---
+
+### recentFactsData?
+
+> `optional` **recentFactsData**: [`Memory`](Memory.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:152](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L152)
+
+---
+
+### recentInteractions?
+
+> `optional` **recentInteractions**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:162](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L162)
+
+---
+
+### recentInteractionsData?
+
+> `optional` **recentInteractionsData**: [`Memory`](Memory.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:161](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L161)
+
+---
+
+### recentMessages
+
+> **recentMessages**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:149](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L149)
+
+---
+
+### recentMessagesData
+
+> **recentMessagesData**: [`Memory`](Memory.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:150](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L150)
+
+---
+
+### relevantFacts?
+
+> `optional` **relevantFacts**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:153](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L153)
+
+---
+
+### relevantFactsData?
+
+> `optional` **relevantFactsData**: [`Memory`](Memory.md)[]
+
+#### Defined in
+
+[packages/core/src/types.ts:154](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L154)
+
+---
+
+### responseData?
+
+> `optional` **responseData**: [`Content`](Content.md)
+
+#### Defined in
+
+[packages/core/src/types.ts:160](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L160)
+
+---
+
+### roomId
+
+> **roomId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:142](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L142)
+
+---
+
+### senderName?
+
+> `optional` **senderName**: `string`
+
+#### Defined in
+
+[packages/core/src/types.ts:144](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L144)
+
+---
+
+### userId?
+
+> `optional` **userId**: \`$\{string\}-$\{string\}-$\{string\}-$\{string\}-$\{string\}\`
+
+#### Defined in
+
+[packages/core/src/types.ts:136](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/types.ts#L136)
diff --git a/docs/docs/api/typedoc-sidebar.cjs b/docs/docs/api/typedoc-sidebar.cjs
new file mode 100644
index 00000000000..43cafd90cd6
--- /dev/null
+++ b/docs/docs/api/typedoc-sidebar.cjs
@@ -0,0 +1,336 @@
+// @ts-check
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const typedocSidebar = {
+  items: [
+    {
+      type: "category",
+      label: "Enumerations",
+      items: [
+        { type: "doc", id: "api/enumerations/Clients", label: "Clients" },
+        { type: "doc", id: "api/enumerations/GoalStatus", label: "GoalStatus" },
+        { type: "doc", id: "api/enumerations/ModelClass", label: "ModelClass" },
+        {
+          type: "doc",
+          id: "api/enumerations/ModelProviderName",
+          label: "ModelProviderName",
+        },
+        {
+          type: "doc",
+          id: "api/enumerations/ServiceType",
+          label: "ServiceType",
+        },
+      ],
+    },
+    {
+      type: "category",
+      label: "Classes",
+      items: [
+        { type: "doc", id: "api/classes/AgentRuntime", label: "AgentRuntime" },
+        {
+          type: "doc",
+          id: "api/classes/DatabaseAdapter",
+          label: "DatabaseAdapter",
+        },
+        {
+          type: "doc",
+          id: "api/classes/MemoryManager",
+          label: "MemoryManager",
+        },
+      ],
+    },
+    {
+      type: "category",
+      label: "Interfaces",
+      items: [
+        { type: "doc", id: "api/interfaces/Account", label: "Account" },
+        { type: "doc", id: "api/interfaces/Action", label: "Action" },
+        {
+          type: "doc",
+          id: "api/interfaces/ActionExample",
+          label: "ActionExample",
+        },
+        { type: "doc", id: "api/interfaces/Actor", label: "Actor" },
+        { type: "doc", id: "api/interfaces/Content", label: "Content" },
+        {
+          type: "doc",
+          id: "api/interfaces/ConversationExample",
+          label: "ConversationExample",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/EvaluationExample",
+          label: "EvaluationExample",
+        },
+        { type: "doc", id: "api/interfaces/Evaluator", label: "Evaluator" },
+        { type: "doc", id: "api/interfaces/Goal", label: "Goal" },
+        {
+          type: "doc",
+          id: "api/interfaces/IAgentRuntime",
+          label: "IAgentRuntime",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/IBrowserService",
+          label: "IBrowserService",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/IDatabaseAdapter",
+          label: "IDatabaseAdapter",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/IImageDescriptionService",
+          label: "IImageDescriptionService",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/IMemoryManager",
+          label: "IMemoryManager",
+        },
+        { type: "doc", id: "api/interfaces/IPdfService", label: "IPdfService" },
+        {
+          type: "doc",
+          id: "api/interfaces/ISpeechService",
+          label: "ISpeechService",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/ITextGenerationService",
+          label: "ITextGenerationService",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/ITranscriptionService",
+          label: "ITranscriptionService",
+        },
+        {
+          type: "doc",
+          id: "api/interfaces/IVideoService",
+          label: "IVideoService",
+        },
+        { type: "doc", id: "api/interfaces/Memory", label: "Memory" },
+        {
+          type: "doc",
+          id: "api/interfaces/MessageExample",
+          label: "MessageExample",
+        },
+        { type: "doc", id: "api/interfaces/Objective", label: "Objective" },
+        { type: "doc", id: "api/interfaces/Participant", label: "Participant" },
+        { type: "doc", id: "api/interfaces/Provider", label: "Provider" },
+        {
+          type: "doc",
+          id: "api/interfaces/Relationship",
+          label: "Relationship",
+        },
+        { type: "doc", id: "api/interfaces/Room", label: "Room" },
+        { type: "doc", id: "api/interfaces/State", label: "State" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Type Aliases",
+      items: [
+        { type: "doc", id: "api/type-aliases/Character", label: "Character" },
+        { type: "doc", id: "api/type-aliases/Client", label: "Client" },
+        { type: "doc", id: "api/type-aliases/Handler", label: "Handler" },
+        {
+          type: "doc",
+          id: "api/type-aliases/HandlerCallback",
+          label: "HandlerCallback",
+        },
+        { type: "doc", id: "api/type-aliases/Media", label: "Media" },
+        { type: "doc", id: "api/type-aliases/Model", label: "Model" },
+        { type: "doc", id: "api/type-aliases/Models", label: "Models" },
+        { type: "doc", id: "api/type-aliases/Plugin", label: "Plugin" },
+        { type: "doc", id: "api/type-aliases/UUID", label: "UUID" },
+        { type: "doc", id: "api/type-aliases/Validator", label: "Validator" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Variables",
+      items: [
+        {
+          type: "doc",
+          id: "api/variables/defaultCharacter",
+          label: "defaultCharacter",
+        },
+        { type: "doc", id: "api/variables/elizaLogger", label: "elizaLogger" },
+        {
+          type: "doc",
+          id: "api/variables/embeddingDimension",
+          label: "embeddingDimension",
+        },
+        {
+          type: "doc",
+          id: "api/variables/embeddingZeroVector",
+          label: "embeddingZeroVector",
+        },
+        {
+          type: "doc",
+          id: "api/variables/evaluationTemplate",
+          label: "evaluationTemplate",
+        },
+        { type: "doc", id: "api/variables/settings", label: "settings" },
+      ],
+    },
+    {
+      type: "category",
+      label: "Functions",
+      items: [
+        { type: "doc", id: "api/functions/addHeader", label: "addHeader" },
+        {
+          type: "doc",
+          id: "api/functions/composeActionExamples",
+          label: "composeActionExamples",
+        },
+        {
+          type: "doc",
+          id: "api/functions/composeContext",
+          label: "composeContext",
+        },
+        { type: "doc", id: "api/functions/createGoal", label: "createGoal" },
+        {
+          type: "doc",
+          id: "api/functions/createRelationship",
+          label: "createRelationship",
+        },
+        { type: "doc", id: "api/functions/embed", label: "embed" },
+        {
+          type: "doc",
+          id: "api/functions/formatActionNames",
+          label: "formatActionNames",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatActions",
+          label: "formatActions",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatActors",
+          label: "formatActors",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatEvaluatorExampleDescriptions",
+          label: "formatEvaluatorExampleDescriptions",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatEvaluatorExamples",
+          label: "formatEvaluatorExamples",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatEvaluatorNames",
+          label: "formatEvaluatorNames",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatEvaluators",
+          label: "formatEvaluators",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatGoalsAsString",
+          label: "formatGoalsAsString",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatMessages",
+          label: "formatMessages",
+        },
+        { type: "doc", id: "api/functions/formatPosts", label: "formatPosts" },
+        {
+          type: "doc",
+          id: "api/functions/formatRelationships",
+          label: "formatRelationships",
+        },
+        {
+          type: "doc",
+          id: "api/functions/formatTimestamp",
+          label: "formatTimestamp",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateCaption",
+          label: "generateCaption",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateImage",
+          label: "generateImage",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateMessageResponse",
+          label: "generateMessageResponse",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateObject",
+          label: "generateObject",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateObjectArray",
+          label: "generateObjectArray",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateShouldRespond",
+          label: "generateShouldRespond",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateText",
+          label: "generateText",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateTextArray",
+          label: "generateTextArray",
+        },
+        {
+          type: "doc",
+          id: "api/functions/generateTrueOrFalse",
+          label: "generateTrueOrFalse",
+        },
+        {
+          type: "doc",
+          id: "api/functions/getActorDetails",
+          label: "getActorDetails",
+        },
+        { type: "doc", id: "api/functions/getEndpoint", label: "getEndpoint" },
+        { type: "doc", id: "api/functions/getGoals", label: "getGoals" },
+        { type: "doc", id: "api/functions/getModel", label: "getModel" },
+        {
+          type: "doc",
+          id: "api/functions/getProviders",
+          label: "getProviders",
+        },
+        {
+          type: "doc",
+          id: "api/functions/getRelationship",
+          label: "getRelationship",
+        },
+        {
+          type: "doc",
+          id: "api/functions/getRelationships",
+          label: "getRelationships",
+        },
+        {
+          type: "doc",
+          id: "api/functions/retrieveCachedEmbedding",
+          label: "retrieveCachedEmbedding",
+        },
+        { type: "doc", id: "api/functions/splitChunks", label: "splitChunks" },
+        { type: "doc", id: "api/functions/trimTokens", label: "trimTokens" },
+        { type: "doc", id: "api/functions/updateGoal", label: "updateGoal" },
+      ],
+    },
+  ],
+};
+module.exports = typedocSidebar.items;
diff --git a/docs/docs/api/variables/defaultCharacter.md b/docs/docs/api/variables/defaultCharacter.md
new file mode 100644
index 00000000000..9244b99aa57
--- /dev/null
+++ b/docs/docs/api/variables/defaultCharacter.md
@@ -0,0 +1,7 @@
+# Variable: defaultCharacter
+
+> `const` **defaultCharacter**: [`Character`](../type-aliases/Character.md)
+
+## Defined in
+
+[packages/core/src/defaultCharacter.ts:3](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/defaultCharacter.ts#L3)
diff --git a/docs/docs/api/variables/elizaLogger.md b/docs/docs/api/variables/elizaLogger.md
new file mode 100644
index 00000000000..cff0a2944e4
--- /dev/null
+++ b/docs/docs/api/variables/elizaLogger.md
@@ -0,0 +1,7 @@
+# Variable: elizaLogger
+
+> `const` **elizaLogger**: `ElizaLogger`
+
+## Defined in
+
+[packages/core/src/logger.ts:270](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/logger.ts#L270)
diff --git a/docs/docs/api/variables/embeddingDimension.md b/docs/docs/api/variables/embeddingDimension.md
new file mode 100644
index 00000000000..ebf6cd1f657
--- /dev/null
+++ b/docs/docs/api/variables/embeddingDimension.md
@@ -0,0 +1,7 @@
+# Variable: embeddingDimension
+
+> `const` **embeddingDimension**: `1536` = `1536`
+
+## Defined in
+
+[packages/core/src/memory.ts:9](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/memory.ts#L9)
diff --git a/docs/docs/api/variables/embeddingZeroVector.md b/docs/docs/api/variables/embeddingZeroVector.md
new file mode 100644
index 00000000000..fb708aa40e3
--- /dev/null
+++ b/docs/docs/api/variables/embeddingZeroVector.md
@@ -0,0 +1,7 @@
+# Variable: embeddingZeroVector
+
+> `const` **embeddingZeroVector**: `any`[]
+
+## Defined in
+
+[packages/core/src/memory.ts:10](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/memory.ts#L10)
diff --git a/docs/docs/api/variables/evaluationTemplate.md b/docs/docs/api/variables/evaluationTemplate.md
new file mode 100644
index 00000000000..3ebc44fae4a
--- /dev/null
+++ b/docs/docs/api/variables/evaluationTemplate.md
@@ -0,0 +1,9 @@
+# Variable: evaluationTemplate
+
+> `const` **evaluationTemplate**: `string`
+
+Template used for the evaluation generateText.
+
+## Defined in
+
+[packages/core/src/evaluators.ts:8](https://github.com/ai16z/eliza/blob/8b230e97279ce98a641d3338cbfa78f13130c60e/packages/core/src/evaluators.ts#L8)
diff --git a/docs/docs/community/contributing.md b/docs/docs/community/contributing.md
index a7b26603bea..5fd9ef1ea2a 100644
--- a/docs/docs/community/contributing.md
+++ b/docs/docs/community/contributing.md
@@ -1,22 +1,22 @@
 ---
-sidebar_position: 5 
+sidebar_position: 5
 title: Contributing
 ---
 
 # Contributor Guide
 
-Welcome to the Eliza contributor guide! This document is designed to help you understand how you can be part of building the future of autonomous AI agents, regardless of your technical background. 
+Welcome to the Eliza contributor guide! This document is designed to help you understand how you can be part of building the future of autonomous AI agents, regardless of your technical background.
 
 ## The OODA Loop: A Framework for Contribution
 
 We believe in the power of the OODA Loop - a decision-making framework that emphasizes speed and adaptability. OODA stands for:
 
-- **Observe**: Gather information and insights about the project, the community, and the broader AI ecosystem. 
+- **Observe**: Gather information and insights about the project, the community, and the broader AI ecosystem.
 - **Orient**: Analyze your observations to identify opportunities for contribution and improvement.
 - **Decide**: Choose a course of action based on your analysis. This could be proposing a new feature, fixing a bug, or creating content.
 - **Act**: Execute your decision and share your work with the community.
 
-By internalizing the OODA Loop, you can quickly identify areas where you can make a meaningful impact and drive the project forward. 
+By internalizing the OODA Loop, you can quickly identify areas where you can make a meaningful impact and drive the project forward.
 
 ---
 
@@ -25,10 +25,12 @@ By internalizing the OODA Loop, you can quickly identify areas where you can mak
 ### For Developers
 
 1. **Extend Eliza's Capabilities**
+
    - Develop new actions, evaluators, and providers to expand what Eliza agents can do.
    - Improve existing components and modules.
 
 2. **Enhance Infrastructure**
+
    - Go through open issues, send back a PR if you can improve anything.
    - Test currently documented steps to ensure they're still up to date.
    - Optimize Eliza's database architecture and performance.
@@ -42,6 +44,7 @@ By internalizing the OODA Loop, you can quickly identify areas where you can mak
 ### For AI Enthusiasts
 
 1. **Fine-tune Models**
+
    - Experiment with fine-tuning models for specific tasks and domains.
    - Develop best practices for prompt engineering and model selection.
 
@@ -52,11 +55,13 @@ By internalizing the OODA Loop, you can quickly identify areas where you can mak
 ### Non-Technical Contributions
 
 1. **Create Content**
+
    - Make memes, stickers, emojis, and clips of AI agents that are deployed.
    - Write tutorials, guides, and blog posts to help others learn about Eliza.
    - Produce videos showcasing Eliza's capabilities and real-world applications.
 
 2. **Engage the Community**
+
    - Participate in discussions on Discord, Twitter, and other platforms.
    - Help answer questions and provide support to other community members.
    - Organize events, workshops, and hackathons to bring people together.
@@ -86,7 +91,7 @@ Note: we're still finalizing details on the creator/dev fund that seeks to retro
 ## Getting Started
 
 1. Join the [Eliza Discord](https://discord.gg/P4uxZJFAdP) and make a short introduction.
-2. Explore the [documentation](/docs/intro) to understand the project's architecture and capabilities. 
+2. Explore the [documentation](/docs/intro) to understand the project's architecture and capabilities.
 3. Check out the [open issues](https://github.com/ai16z/eliza/issues) on GitHub to find ways to contribute.
 4. Share your ideas and initiatives with the community - we're excited to see what you'll build!
 
diff --git a/docs/docs/community/creator-fund.md b/docs/docs/community/creator-fund.md
index a68069ff66a..bc455397021 100644
--- a/docs/docs/community/creator-fund.md
+++ b/docs/docs/community/creator-fund.md
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 1 
+sidebar_position: 1
 title: Creator Fund
 ---
 
diff --git a/docs/docs/community/faq.md b/docs/docs/community/faq.md
index cc5147dc937..d7a44376f03 100644
--- a/docs/docs/community/faq.md
+++ b/docs/docs/community/faq.md
@@ -4,11 +4,11 @@
 
 ### What is Eliza?
 
-**Eliza is an open-source, multi-agent simulation framework for creating and managing autonomous AI agents.** The project aims to empower developers and users to build unique AI personalities that can interact across various platforms, such as Discord, Twitter, and Telegram. 
+**Eliza is an open-source, multi-agent simulation framework for creating and managing autonomous AI agents.** The project aims to empower developers and users to build unique AI personalities that can interact across various platforms, such as Discord, Twitter, and Telegram.
 
 ### Who is behind Eliza?
 
-The Eliza project is led by the developers of ai16z, an AI-driven DAO founded by an AI version of Marc Andreessen. The lead developer is [Shaw](https://x.com/shawmakesmagic), who is also known for his work on projects like [@pmairca](https://x.com/pmairca) and [@degenspartanai](https://x.com/degenspartanai). The project is open source, and its code is available on GitHub: https://github.com/ai16z/eliza 
+The Eliza project is led by the developers of ai16z, an AI-driven DAO founded by an AI version of Marc Andreessen. The lead developer is [Shaw](https://x.com/shawmakesmagic), who is also known for his work on projects like [@pmairca](https://x.com/pmairca) and [@degenspartanai](https://x.com/degenspartanai). The project is open source, and its code is available on GitHub: https://github.com/ai16z/eliza
 
 ### How can I get started with Eliza?
 
@@ -25,13 +25,13 @@ To begin building your own AI agents with Eliza, follow these steps:
 
 Eliza's architecture consists of several interconnected components:
 
--   **Agents**: These are the core elements that represent individual AI personalities. Agents operate within a runtime environment and interact with various platforms.
--   **Actions**: Actions are predefined behaviors that agents can execute in response to messages, enabling them to perform tasks and interact with external systems.
--   **Clients**: Clients act as interfaces between agents and specific platforms, such as Discord, Twitter, and Telegram. They handle platform-specific message formats and communication protocols.
--   **Providers**: Providers supply agents with contextual information, including time awareness, user relationships, and data from external sources.
--   **Evaluators**: These modules assess and extract information from conversations, helping agents track goals, build memory, and maintain context awareness.
--   **Character Files**: These JSON files define the personality, knowledge, and behavior of each AI agent.
--   **Memory System**: Eliza features a sophisticated memory management system that utilizes vector embeddings and relational database storage to store and retrieve information for agents.
+- **Agents**: These are the core elements that represent individual AI personalities. Agents operate within a runtime environment and interact with various platforms.
+- **Actions**: Actions are predefined behaviors that agents can execute in response to messages, enabling them to perform tasks and interact with external systems.
+- **Clients**: Clients act as interfaces between agents and specific platforms, such as Discord, Twitter, and Telegram. They handle platform-specific message formats and communication protocols.
+- **Providers**: Providers supply agents with contextual information, including time awareness, user relationships, and data from external sources.
+- **Evaluators**: These modules assess and extract information from conversations, helping agents track goals, build memory, and maintain context awareness.
+- **Character Files**: These JSON files define the personality, knowledge, and behavior of each AI agent.
+- **Memory System**: Eliza features a sophisticated memory management system that utilizes vector embeddings and relational database storage to store and retrieve information for agents.
 
 ### How can I contribute to the Eliza project?
 
@@ -39,27 +39,27 @@ Eliza welcomes contributions from individuals with a wide range of skills:
 
 #### Technical Contributions
 
--   **Develop new actions, clients, providers, and evaluators**: Extend Eliza's functionality by creating new modules or enhancing existing ones.
--   **Contribute to database management**: Improve or expand Eliza's database capabilities using PostgreSQL, SQLite, or SQL.js.
--   **Enhance local development workflows**: Improve documentation and tools for local development using SQLite and VS Code.
--   **Fine-tune models**: Optimize existing models or implement new models for specific tasks and personalities.
--   **Contribute to the autonomous trading system and trust engine**: Leverage expertise in market analysis, technical analysis, and risk management to enhance these features.
+- **Develop new actions, clients, providers, and evaluators**: Extend Eliza's functionality by creating new modules or enhancing existing ones.
+- **Contribute to database management**: Improve or expand Eliza's database capabilities using PostgreSQL, SQLite, or SQL.js.
+- **Enhance local development workflows**: Improve documentation and tools for local development using SQLite and VS Code.
+- **Fine-tune models**: Optimize existing models or implement new models for specific tasks and personalities.
+- **Contribute to the autonomous trading system and trust engine**: Leverage expertise in market analysis, technical analysis, and risk management to enhance these features.
 
 #### Non-Technical Contributions
 
--   **Community Management**: Onboard new members, organize events, moderate discussions, and foster a welcoming community.
--   **Content Creation**: Create memes, tutorials, documentation, and videos to share project updates.
--   **Translation**: Translate documentation and other materials to make Eliza accessible to a global audience.
--   **Domain Expertise**: Provide insights and feedback on specific applications of Eliza in various fields.
+- **Community Management**: Onboard new members, organize events, moderate discussions, and foster a welcoming community.
+- **Content Creation**: Create memes, tutorials, documentation, and videos to share project updates.
+- **Translation**: Translate documentation and other materials to make Eliza accessible to a global audience.
+- **Domain Expertise**: Provide insights and feedback on specific applications of Eliza in various fields.
 
 ### What are the future plans for Eliza?
 
-The Eliza project is continuously evolving, with ongoing development and community contributions.  The team is actively working on:
+The Eliza project is continuously evolving, with ongoing development and community contributions. The team is actively working on:
 
--   **Expanding platform compatibility**: Adding support for more platforms and services.
--   **Improving model capabilities**: Enhance agent performance and capabilities with existing and new models.
--   **Enhancing the trust engine**: Provide robust and secure recommendations within decentralized networks.
--   **Fostering community growth**: Rewarding contributions to expand the project's reach and impact.
+- **Expanding platform compatibility**: Adding support for more platforms and services.
+- **Improving model capabilities**: Enhance agent performance and capabilities with existing and new models.
+- **Enhancing the trust engine**: Provide robust and secure recommendations within decentralized networks.
+- **Fostering community growth**: Rewarding contributions to expand the project's reach and impact.
 
 ---
 
@@ -70,9 +70,11 @@ The Eliza project is continuously evolving, with ongoing development and communi
 **ai16z is an AI-driven DAO and fund, conceptualized as being led by an AI version of Marc Andreessen.** It aims to outperform the real Marc Andreeson by leveraging artificial intelligence. The developers of Eliza created ai16z to support their work in autonomous AI agents. While ai16z primarily focuses on trading, Eliza is a more general-purpose framework that can be used for various applications beyond finance.
 
 ### When will token is mintable be fixed?
+
 Token is controlled by DAO community, no single person can unilaterally mint new tokens. The daos.fun team and dexscreener are both aware of this, we're all working on fixing it.
 
 ### Liquidity seems low
+
 The DAOs.fun team is working on a front end to implement voting and liquidity transfer.
 
 ### What is the difference between $ai16z and $degenai?
@@ -84,18 +86,23 @@ DegenSpartanAI is another AI agent project created by Shaw. The $degenai token i
 ai16z is envisioned as a community-driven, PvE (player versus environment) focused fund, while DegenAI is more of a trading agent with a PvP (player versus player), aggressive approach.
 
 ### Will the agent launch pump fund coins?
+
 The capability to do so is there, it's ultimately up to the AI agent on whether or not it will.
 
 ### Can the agent invest in my project?
+
 Yes, if you make a convincing argument.
 
 ### Who runs ai16z?
+
 ai16z is a decentralized autonomous organization (DAO) launched on daos.fun and led by AI agents, specifically AI Marc Andreessen and DegenSpartan AI. Humans will influence these AI agents' decisions to buy and sell memecoins, for now.
 
 ### Do all trade suggestions happen in one place?
+
 Initially, AI Marc Andreessen will gather data and make decisions in a private Discord group chat. Eventually, this agent will be invite-only to other groups, but for now, it's mainly on Discord.
 
 ### What happens when people copy the GitHub?
+
 Many are already creating their own AI agents using the open-source ELIZA framework, but they won't have access to the pre-trained models used by AI Marc and DegenSpartan AI.
 
 ### What are the future plans for ai16z?
@@ -106,9 +113,9 @@ We're developing a **"marketplace of trust"** where AI agents can learn from com
 
 There are several ways to contribute to the ai16z project:
 
--  **Participate in community discussions**: Share your memecoin insights, propose new ideas, and engage with other community members.
--  **Contribute to the development of the ai16z platform**: https://github.com/orgs/ai16z/projects/1/views/3
--  **Help build the ai16z ecosystem**: Create applicatoins / tools, resources, and memes. Give feedback, and spread the word
+- **Participate in community discussions**: Share your memecoin insights, propose new ideas, and engage with other community members.
+- **Contribute to the development of the ai16z platform**: https://github.com/orgs/ai16z/projects/1/views/3
+- **Help build the ai16z ecosystem**: Create applicatoins / tools, resources, and memes. Give feedback, and spread the word
 
 **Other questions:**
 
diff --git a/docs/docs/community/notes.md b/docs/docs/community/notes.md
index 20db9b0b212..409b5e91fc7 100644
--- a/docs/docs/community/notes.md
+++ b/docs/docs/community/notes.md
@@ -12,46 +12,54 @@ title: Notes
 Watch: [Youtube](https://www.youtube.com/watch?v=oqq5H0HRF_A)
 
 00:00:00 - Overview
+
 - Eliza is moving to a plugin architecture to enable developers to easily add integrations (e.g. Ethereum wallets, NFTs, Obsidian, etc.) without modifying core code
-- Plugins allow devs to focus on specific areas of interest 
+- Plugins allow devs to focus on specific areas of interest
 - Core changes will focus on enabling more flexibility and features to support plugins
 
-00:01:27 - Core abstractions 
+00:01:27 - Core abstractions
+
 - Characters: Way to input information to enable multi-agent systems
 - Actions, evaluators, providers
 - Existing capabilities: Document reading, audio transcription, video summarization, long-form context, timed message summarization
 
 00:02:50 - Eliza as an agent, not just a chatbot
+
 - Designed to act human-like and interact with the world using human tools
 - Aim is to enable natural interactions without reliance on slash commands
 
 00:04:44 - Advanced usage and services
+
 - Memory and vector search db (SQLite, Postgres with pgVector)
 - Browser service to summarize website content, get through CAPTCHAs
 - Services are tools leveraged by actions, attached to runtime
 
-00:06:06 - Character-centric configuration 
+00:06:06 - Character-centric configuration
+
 - Moving secrets, API keys, model provider to character config
 - Clients will become plugins, selectable per character
 - Allows closed-source custom plugins while still contributing to open-source
 
 00:10:13 - Providers
+
 - Inject dynamic, real-time context into the agent
 - Examples: Time, wallet, marketplace trust score, token balances, boredom/cringe detection
 - Easy to add and register with the agent
 
 00:15:12 - Setting up providers and default actions
+
 - Default providers imported in runtime.ts
 - CLI loads characters and default actions (to be made more flexible)
 - Character config will define custom action names to load
 
 00:18:13 - Actions
-Q: How does each client decide which action to call? 
+Q: How does each client decide which action to call?
 A: Agent response can include text, action, or both. Process actions checks the action name/similes and executes the corresponding handler. Action description is injected into agent context to guide usage.
 
 00:22:27 - Action execution flow
+
 - Check if action should be taken (validation)
-- Determine action outcome 
+- Determine action outcome
 - Compose context and send follow-up if continuing
 - Execute desired functionality (mint token, generate image, etc.)
 - Use callback to send messages back to the connector (Discord, Twitter, etc.)
@@ -60,15 +68,17 @@ A: Agent response can include text, action, or both. Process actions checks the
 Q: How does it choose which action to run?
 A: The "generate method response" includes the action to run. Message handler template includes action examples, facts, generated dialogue actions, and more to guide the agent.
 
-00:28:22 - Custom actions 
+00:28:22 - Custom actions
 Q: How to create a custom action (e.g. send USDC to a wallet)?
 A: Use existing actions (like token swap) as a template. Actions don't have input fields, but use secondary prompts to gather parameters. The "generate object" converts language to API calls.
 
 00:32:21 - Limitations of action-only approaches
-- Shaw believes half of the PhD papers on action-only models are not reproducible 
+
+- Shaw believes half of the PhD papers on action-only models are not reproducible
 - Many public claims of superior models are exaggerated; use Eliza if it's better
 
 00:36:40 - Next steps
+
 - Shaw to make a tutorial to better communicate key concepts
 - Debugging and improvements based on the discussion
 - Attendee to document their experience and suggest doc enhancements
@@ -78,14 +88,16 @@ A: Use existing actions (like token swap) as a template. Actions don't have inpu
 Watch: [Youtube](https://www.youtube.com/watch?v=yE8Mzq3BnUc)
 
 00:00:00 - Dealing with OpenAI rate limits for new accounts
+
 - New accounts have very low rate limits
 - Options to increase limits:
   1. Have a friend at OpenAI age your account
-  2. Use an older account 
+  2. Use an older account
   3. Consistently use the API and limits will increase quickly
 - Can also email OpenAI to request limit increases
 
 00:00:43 - Alternatives to OpenAI to avoid rate limits
+
 - Amazon Bedrock or Google Vertex likely have same models without strict rate limits
 - Switching to these is probably a one-line change
 - Project 89 got unlimited free access to Vertex
@@ -95,28 +107,33 @@ Q: Suggestions for memory management best practices across users/rooms?
 A: Most memory systems are user-agent based, with no room concept. Eliza uses a room abstraction (like a Discord channel/server or Twitter thread) to enable multi-agent simulation. Memories are stored per-agent to avoid collisions.
 
 00:02:57 - Using memories in Eliza
+
 - Memories are used in the `composeState` function
 - Pulls memories from various sources (recent messages, facts, goals, etc.) into a large state object
 - State object is used to hydrate templates
 - Custom memory providers can be added to pull from other sources (Obsidian, databases)
 
 00:05:11 - Evaluators vs. Action validation
+
 - Actions have a `validate` function to check if the action is valid to run (e.g., check if agent has a wallet before a swap)
 - Evaluators are a separate abstraction that run a "reflection" step
 - Example: Fact extraction evaluator runs every N messages to store facts about the user as memories
 - Allows agent to "get to know" the user without needing full conversation history
 
-00:07:58 - Example use case: Order book evaluator 
+00:07:58 - Example use case: Order book evaluator
+
 - Evaluator looks at chats sent to an agent and extracts information about "shields" (tokens?)
 - Uses this to build an order book and "marketplace of trust"
 
 00:09:15 - Mapping Eliza abstractions to OODA loop
+
 - Providers: Observe/Orient stages (merged since agent is a data machine)
-- Actions & response handling: Decide stage 
+- Actions & response handling: Decide stage
 - Action execution: Act stage
 - Evaluators: Update state, then loop back to Decide
 
 00:10:03 - Wrap up
+
 - Shaw considers making a video to explain these concepts in depth
 
 ### Part 3
@@ -124,6 +141,7 @@ A: Most memory systems are user-agent based, with no room concept. Eliza uses a
 Watch: [Youtube](https://www.youtube.com/watch?v=7FiKJPyaMJI)
 
 00:00:00 - Managing large context sizes
+
 - State object can get very large, especially with long user posts
 - Eliza uses "trim tokens" and a maximum content length (120k tokens) to cap context size
   - New models have 128k-200k context, which is a lot (equivalent to 10 YouTube videos + full conversation)
@@ -135,13 +153,15 @@ Watch: [Youtube](https://www.youtube.com/watch?v=7FiKJPyaMJI)
 
 00:01:53 - Billing costs for cloud/GPT models
 Q: What billing costs have you experienced with cloud/GPT model integration?
-A: 
+A:
+
 - Open Router has a few always-free models limited to 8k context and rate-limited
   - Plan to re-implement and use these for the tiny/check model with fallback for rate limiting
 - 8k context unlikely to make a good agent; preference for smaller model over largest 8k one
 - Locally-run models are free for MacBooks with 16GB RAM, but not feasible for Linux/AMD users
 
 00:03:35 - Cost management strategies
+
 - Very cost-scalable depending on model size
 - Use very cheap model (1000x cheaper than GPT-4) for should_respond handler
   - Runs AI on every message, so cost is a consideration
@@ -149,6 +169,7 @@ A:
   - Only pay for valid generations
 
 00:04:32 - Model provider and class configuration
+
 - `ModelProvider` class with `ModelClass` (small, medium, large, embedding)
 - Configured in `models.ts`
 - Example: OpenAI small = GPT-4-mini, medium = GPT-4
@@ -157,12 +178,14 @@ A:
   - Else, use big models
 
 00:06:23 - Fine-tuned model support
+
 - Extend `ModelProvider` to support fine-tuned instances of small Llama models for specific tasks
 - In progress, to be added soon
 - Model endpoint override exists; will add per-model provider override
   - Allows pointing small model to fine-tuned Llama 3.1B for should_respond
 
 00:07:10 - Avoiding cringey model loops
+
 - Fine-tuning is a form of anti-slop (avoiding low-quality responses)
 - For detecting cringey model responses, use the "boredom provider"
   - Has a list of cringe words; if detected, agent disengages
@@ -174,8 +197,9 @@ A:
 Watch: [Youtube](https://www.youtube.com/watch?v=ZlzZzDU1drM)
 
 00:00:00 - Setting up an autonomous agent loop
-Q: How to set up an agent to constantly loop and explore based on objectives/goals? 
+Q: How to set up an agent to constantly loop and explore based on objectives/goals?
 A: Create a new "autonomous" client:
+
 1. Initialize with just the runtime (no Express app needed)
 2. Set a timer to call a `step` function every 10 seconds
 3. In the `step` function:
@@ -186,33 +210,36 @@ A: Create a new "autonomous" client:
    - Run evaluators
 
 00:01:56 - Creating an auto template
+
 - Create an `autoTemplate` with agent info (bio, lore, goals, actions)
 - Prompt: "What does the agent want to do? Your response should only be the name of the action to call."
 - Compose state using `runtime.composeState`
 
 00:03:38 - Passing a message object
+
 - Need to pass a message object with `userId`, `agentId`, `content`, and `roomId`
 - Create a unique `roomId` for the autonomous agent using `crypto.randomUUID()`
 - Set `userId` and `agentId` using the runtime
 - Set `content` to a default message
 
 00:04:33 - Composing context
+
 - Compose context using the runtime, state, and auto template
 
 00:05:02 - Type error
+
 - Getting a type error: "is missing the following from type state"
 - (Transcript ends before resolution)
 
 The key steps are:
-1. Create a dedicated autonomous client 
+
+1. Create a dedicated autonomous client
 2. Set up a loop to continuously step through the runtime
 3. In each step, compose state, decide & execute actions, update state, and run evaluators
 4. Create a custom auto template to guide the agent's decisions
 5. Pass a properly formatted message object
 6. Compose context using the runtime, state, and auto template
 
-
-
 ---
 
 ## X Space 10-29-24
@@ -246,13 +273,15 @@ Space: https://x.com/weremeow/status/1851365658916708616
 Space: https://x.com/shawmakesmagic/status/1850609680558805422
 
 00:00:00 - Opening
+
 - Co-hosts: Shaw and Jin
 - Purpose: Structured FAQ session about AI16Z and DegenAI
 - Format: Pre-collected questions followed by audience Q&A
 
 00:06:40 - AI16Z vs DegenAI Relationship
 Q: What's the difference between AI16Z and DegenAI?
-A: 
+A:
+
 - ai16z: DAO-based investment vehicle, more PvE focused, community driven
 - DegenAI: Individual trading agent, PvP focused, more aggressive strategy
 - Both use same codebase but different personalities
@@ -264,6 +293,7 @@ A:
 00:10:45 - Trust Engine Mechanics
 Q: How does the trust engine work?
 A:
+
 - Users share contract addresses with confidence levels
 - System tracks recommendation performance
 - Low conviction recommendations = low penalty if wrong
@@ -271,9 +301,10 @@ A:
 - Historical performance tracked for trust calculation
 - Trust scores influence agent's future decision-making
 
-00:21:45 - Technical Infrastructure 
+00:21:45 - Technical Infrastructure
 Q: Where do the agents live?
 A:
+
 - Currently: Test servers and local development
 - Future: Trusted Execution Environment (TEE)
 - Partnership with TreasureDAO for infrastructure
@@ -283,10 +314,13 @@ A:
 00:34:20 - Trading Implementation
 Q: When will Mark start trading?
 A:
+
 - Three phase approach:
+
 1. Testing tech infrastructure
 2. Virtual order book/paper trading
 3. Live trading with real assets
+
 - Using Jupiter API for swaps
 - Initial focus on basic trades before complex strategies
 - Trading decisions based on community trust scores
@@ -294,6 +328,7 @@ A:
 00:54:15 - Development Status
 Q: Who's building this?
 A:
+
 - Open source project with multiple contributors
 - Key maintainers: Circuitry, Nate Martin
 - Community developers incentivized through token ownership
@@ -302,6 +337,7 @@ A:
 01:08:35 - AI Model Architecture
 Q: What models power the agents?
 A:
+
 - DegenAI: Llama 70B
 - Using Together.xyz for model marketplace
 - Continuous fine-tuning planned
@@ -311,6 +347,7 @@ A:
 01:21:35 - Ethics Framework
 Q: What ethical guidelines are being followed?
 A:
+
 - Rejecting traditional corporate AI ethics frameworks
 - Focus on community-driven standards
 - Emphasis on transparency and open source
@@ -318,6 +355,7 @@ A:
 - Priority on practical utility over theoretical ethics
 
 01:28:30 - Wrap-up
+
 - Discord: AI16z.vc
 - Future spaces planned with DAOs.fun team
 - Focus on responsible growth
@@ -335,7 +373,7 @@ The space emphasized technical implementation details while addressing community
 **Overview**
 
 - 00:00-30:00 Talks about Eliza framework. The bot is able to tweet, reply to tweets, search Twitter for topics, and generate new posts on its own every few hours. It works autonomously without human input (except to fix the occasional issues)
-- 30:00-45:00 Deep dive into creating the bots personality which is defined by character files containing bios, lore, example conversations, and specific directions. Some alpha for those 
+- 30:00-45:00 Deep dive into creating the bots personality which is defined by character files containing bios, lore, example conversations, and specific directions. Some alpha for those
 - 45:00-60:00 working on adding capabilities for the bot to make crypto token swaps and trades. This requires providing the bot wallet balances, token prices, market data, and a swap action. Some live coding for showing how new features can get implemented.
 - 60:00-75:00 Discussion around the symbiosis between the AI and crypto communities. AI developers are realizing they can monetize their work through tokens vs traditional VC funding route. Crypto people are learning about AI advancements.
 
@@ -352,4 +390,3 @@ The space emphasized technical implementation details while addressing community
 9. In the near future, AI Marc will be able to execute trades autonomously based on the information and recommendations gathered from the community. Human intervention will be minimized.
 10. They are working on getting AI Marc on-chain as soon as possible using trusted execution environments for him to take actions like approving trades.
 11. The plan is for AI Marc to eventually participate in a "futarchy" style governance market within the DAO, allowing humans to influence decisions but not fully control the AI.
-
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 1394f13d77f..b63bf98d831 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -5,7 +5,7 @@ const config = {
   title: "eliza",
   tagline: "The flexible, scalable AI agent for everyone",
   favicon: "img/favicon.ico",
- 
+
   // GitHub Pages Configuration
   url: "https://ai16z.github.io",
   baseUrl: "/eliza/",
@@ -15,7 +15,7 @@ const config = {
   trailingSlash: true,
   onBrokenLinks: "ignore",
   onBrokenMarkdownLinks: "warn",
-  
+
   i18n: {
     defaultLocale: "en",
     locales: ["en"],
@@ -23,9 +23,7 @@ const config = {
   markdown: {
     mermaid: true,
   },
-  themes: [
-    '@docusaurus/theme-mermaid',
-  ],
+  themes: ["@docusaurus/theme-mermaid"],
   plugins: [
     [
       "docusaurus-plugin-typedoc",
@@ -34,58 +32,58 @@ const config = {
         tsconfig: "../tsconfig.json",
         out: "./api",
         skipErrorChecking: true,
-        
+
         // Documentation Enhancement Options
         excludeExternals: false,
         excludePrivate: true,
         excludeProtected: false,
         excludeInternal: false,
         excludeNotDocumented: false,
-        
+
         // Output Formatting
-        plugin: ['typedoc-plugin-markdown'],
+        plugin: ["typedoc-plugin-markdown"],
         //theme: 'markdown',
         hideGenerator: true,
         cleanOutputDir: true,
-        
+
         // Enhanced Navigation
         categoryOrder: [
           "Classes",
           "Interfaces",
-          "Enumerations", 
+          "Enumerations",
           "Type Aliases",
           "Variables",
-          "Functions"
+          "Functions",
         ],
-        
+
         // Documentation Features
         includeVersion: true,
         sort: ["source-order"],
-        gitRevision: 'main',
-        readme: 'none',
+        gitRevision: "main",
+        readme: "none",
 
         // Code Examples
         preserveWatchOutput: true,
         disableSources: false,
-        
+
         // Validation Settings
         validation: {
           notExported: false,
           invalidLink: false,
-          notDocumented: false
+          notDocumented: false,
         },
 
         // File exclusions
         exclude: [
           "**/_media/**",
           "**/node_modules/@types/node/events.d.ts",
-          "**/dist/**"
+          "**/dist/**",
         ],
 
         // Build settings
         watch: false,
         treatWarningsAsErrors: false,
-        treatValidationWarningsAsErrors: false
+        treatValidationWarningsAsErrors: false,
       },
     ],
     require.resolve("docusaurus-lunr-search"),
@@ -108,7 +106,7 @@ const config = {
           sidebarPath: "./sidebars.js",
           editUrl: "https://github.com/ai16z/eliza/tree/main/docs/",
           routeBasePath: "docs",
-          exclude: ["**/_media/**"],  // Add exclude pattern here too
+          exclude: ["**/_media/**"], // Add exclude pattern here too
         },
         theme: {
           customCss: "./src/css/custom.css",
@@ -121,7 +119,7 @@ const config = {
     ({
       // Rest of themeConfig remains the same
       colorMode: {
-        defaultMode: 'dark',
+        defaultMode: "dark",
         disableSwitch: false,
         respectPrefersColorScheme: true,
       },
@@ -155,50 +153,50 @@ const config = {
             href: "https://github.com/ai16z/eliza",
             label: "GitHub",
             position: "right",
-          }
-        ]
+          },
+        ],
       },
       footer: {
-        style: 'dark',
+        style: "dark",
         links: [
           {
-            title: 'Docs',
+            title: "Docs",
             items: [
-              { 
-                label: 'General',
-                href: './'
+              {
+                label: "General",
+                href: "./",
               },
-            ]
+            ],
           },
           {
-            title: 'Community',
+            title: "Community",
             items: [
               {
-                label: 'Discord',
-                href: 'https://discord.gg/NQHKW7US'
+                label: "Discord",
+                href: "https://discord.gg/NQHKW7US",
               },
               {
-                label: 'Twitter',
-                href: 'https://twitter.com/pmairca'
-              }
-            ]
+                label: "Twitter",
+                href: "https://twitter.com/pmairca",
+              },
+            ],
           },
           {
-            title: 'More',
+            title: "More",
             items: [
               {
-                label: 'GitHub',
-                href: 'https://github.com/ai16z/eliza'
-              }
-            ]
-          }
+                label: "GitHub",
+                href: "https://github.com/ai16z/eliza",
+              },
+            ],
+          },
         ],
-        copyright: `Copyright © ${new Date().getFullYear()} ai16z.ai`
+        copyright: `Copyright © ${new Date().getFullYear()} ai16z.ai`,
       },
       prism: {
         theme: prismThemes.github,
-        darkTheme: prismThemes.dracula
-      }
+        darkTheme: prismThemes.dracula,
+      },
     }),
 };
 export default config;
diff --git a/docs/package-lock.json b/docs/package-lock.json
deleted file mode 100644
index fd9775949e0..00000000000
--- a/docs/package-lock.json
+++ /dev/null
@@ -1,19262 +0,0 @@
-{
-  "name": "eliza-docs",
-  "version": "0.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "eliza-docs",
-      "version": "0.0.0",
-      "dependencies": {
-        "@docusaurus/core": "^3.6.0",
-        "@docusaurus/plugin-content-blog": "^3.6.0",
-        "@docusaurus/plugin-content-docs": "^3.6.0",
-        "@docusaurus/plugin-ideal-image": "^3.6.0",
-        "@docusaurus/preset-classic": "^3.6.0",
-        "@docusaurus/theme-mermaid": "^3.6.0",
-        "@mdx-js/react": "3.0.1",
-        "clsx": "2.1.0",
-        "docusaurus-lunr-search": "^3.5.0",
-        "prism-react-renderer": "2.3.1",
-        "react": "18.2.0",
-        "react-dom": "18.2.0",
-        "react-router-dom": "6.22.1"
-      },
-      "devDependencies": {
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "docusaurus-plugin-typedoc": "^1.0.5",
-        "typedoc": "^0.26.11",
-        "typedoc-plugin-markdown": "^4.2.9"
-      },
-      "engines": {
-        "node": "23.1.0"
-      }
-    },
-    "node_modules/@algolia/autocomplete-core": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.6.tgz",
-      "integrity": "sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-plugin-algolia-insights": "1.17.6",
-        "@algolia/autocomplete-shared": "1.17.6"
-      }
-    },
-    "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.6.tgz",
-      "integrity": "sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
-      },
-      "peerDependencies": {
-        "search-insights": ">= 1 < 3"
-      }
-    },
-    "node_modules/@algolia/autocomplete-preset-algolia": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz",
-      "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
-      },
-      "peerDependencies": {
-        "@algolia/client-search": ">= 4.9.1 < 6",
-        "algoliasearch": ">= 4.9.1 < 6"
-      }
-    },
-    "node_modules/@algolia/autocomplete-shared": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz",
-      "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==",
-      "license": "MIT",
-      "peerDependencies": {
-        "@algolia/client-search": ">= 4.9.1 < 6",
-        "algoliasearch": ">= 4.9.1 < 6"
-      }
-    },
-    "node_modules/@algolia/cache-browser-local-storage": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz",
-      "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/cache-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz",
-      "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/cache-in-memory": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz",
-      "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-abtesting": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.13.0.tgz",
-      "integrity": "sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/client-account": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz",
-      "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-account/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-account/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-analytics": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz",
-      "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-common": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.13.0.tgz",
-      "integrity": "sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/client-insights": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.13.0.tgz",
-      "integrity": "sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/client-personalization": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz",
-      "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-query-suggestions": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.13.0.tgz",
-      "integrity": "sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/client-search": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.13.0.tgz",
-      "integrity": "sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/events": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz",
-      "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/ingestion": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.13.0.tgz",
-      "integrity": "sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/logger-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz",
-      "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/logger-console": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz",
-      "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/logger-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/monitoring": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.13.0.tgz",
-      "integrity": "sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/recommend": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz",
-      "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-browser-local-storage": "4.24.0",
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/cache-in-memory": "4.24.0",
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/logger-console": "4.24.0",
-        "@algolia/requester-browser-xhr": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/requester-node-http": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
-      "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
-      "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/requester-browser-xhr": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.13.0.tgz",
-      "integrity": "sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/requester-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz",
-      "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/requester-fetch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.13.0.tgz",
-      "integrity": "sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/requester-node-http": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.13.0.tgz",
-      "integrity": "sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@algolia/transporter": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz",
-      "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/@ampproject/remapping": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@antfu/install-pkg": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz",
-      "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==",
-      "license": "MIT",
-      "dependencies": {
-        "package-manager-detector": "^0.2.0",
-        "tinyexec": "^0.3.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/@antfu/utils": {
-      "version": "0.7.10",
-      "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
-      "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
-      "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.25.9",
-        "js-tokens": "^4.0.0",
-        "picocolors": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/compat-data": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
-      "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
-      "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
-      "license": "MIT",
-      "dependencies": {
-        "@ampproject/remapping": "^2.2.0",
-        "@babel/code-frame": "^7.26.0",
-        "@babel/generator": "^7.26.0",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-module-transforms": "^7.26.0",
-        "@babel/helpers": "^7.26.0",
-        "@babel/parser": "^7.26.0",
-        "@babel/template": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.26.0",
-        "convert-source-map": "^2.0.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.3",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/babel"
-      }
-    },
-    "node_modules/@babel/core/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/generator": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
-      "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.26.2",
-        "@babel/types": "^7.26.0",
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.25",
-        "jsesc": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-      "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
-      "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
-      "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "browserslist": "^4.24.0",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
-      "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-member-expression-to-functions": "^7.25.9",
-        "@babel/helper-optimise-call-expression": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
-      "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "regexpu-core": "^6.1.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/helper-define-polyfill-provider": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
-      "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.22.6",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
-      }
-    },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
-      "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
-      "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
-      "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
-      "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
-      "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
-      "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-wrap-function": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
-      "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-member-expression-to-functions": "^7.25.9",
-        "@babel/helper-optimise-call-expression": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
-      "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
-      "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-string-parser": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
-      "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
-      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-validator-option": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
-      "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-wrap-function": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
-      "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/template": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
-      "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/template": "^7.25.9",
-        "@babel/types": "^7.26.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
-      "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.26.0"
-      },
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
-      "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
-      "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
-      "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
-      "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/plugin-transform-optional-chaining": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.13.0"
-      }
-    },
-    "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
-      "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.21.0-placeholder-for-preset-env.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
-      "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
-      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-import-assertions": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
-      "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-import-attributes": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
-      "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-jsx": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
-      "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-typescript": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
-      "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
-      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-arrow-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
-      "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-async-generator-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
-      "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-remap-async-to-generator": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-async-to-generator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
-      "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-remap-async-to-generator": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
-      "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoping": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
-      "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-class-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
-      "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-class-static-block": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
-      "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.12.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-classes": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
-      "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-computed-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
-      "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/template": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-destructuring": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
-      "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-dotall-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
-      "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-duplicate-keys": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
-      "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
-      "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-dynamic-import": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
-      "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
-      "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-export-namespace-from": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
-      "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-for-of": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
-      "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-function-name": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
-      "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-json-strings": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
-      "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
-      "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
-      "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-member-expression-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
-      "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-amd": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
-      "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
-      "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-simple-access": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-systemjs": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
-      "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-umd": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
-      "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
-      "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-new-target": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
-      "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
-      "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-numeric-separator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
-      "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-object-rest-spread": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
-      "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/plugin-transform-parameters": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-object-super": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
-      "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-optional-catch-binding": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
-      "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-optional-chaining": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
-      "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-parameters": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
-      "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-private-methods": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
-      "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-private-property-in-object": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
-      "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-property-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
-      "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-react-constant-elements": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz",
-      "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-react-display-name": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
-      "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-react-jsx": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
-      "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/plugin-syntax-jsx": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-react-jsx-development": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
-      "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/plugin-transform-react-jsx": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-react-pure-annotations": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
-      "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-regenerator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
-      "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "regenerator-transform": "^0.15.2"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-regexp-modifiers": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
-      "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-reserved-words": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
-      "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
-      "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "babel-plugin-polyfill-corejs2": "^0.4.10",
-        "babel-plugin-polyfill-corejs3": "^0.10.6",
-        "babel-plugin-polyfill-regenerator": "^0.6.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
-      "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-spread": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
-      "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-sticky-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
-      "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-template-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
-      "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-typeof-symbol": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
-      "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-typescript": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz",
-      "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/plugin-syntax-typescript": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-escapes": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
-      "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-property-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
-      "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
-      "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
-      "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0"
-      }
-    },
-    "node_modules/@babel/preset-env": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
-      "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.26.0",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
-        "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
-        "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
-        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
-        "@babel/plugin-syntax-import-assertions": "^7.26.0",
-        "@babel/plugin-syntax-import-attributes": "^7.26.0",
-        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
-        "@babel/plugin-transform-arrow-functions": "^7.25.9",
-        "@babel/plugin-transform-async-generator-functions": "^7.25.9",
-        "@babel/plugin-transform-async-to-generator": "^7.25.9",
-        "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
-        "@babel/plugin-transform-block-scoping": "^7.25.9",
-        "@babel/plugin-transform-class-properties": "^7.25.9",
-        "@babel/plugin-transform-class-static-block": "^7.26.0",
-        "@babel/plugin-transform-classes": "^7.25.9",
-        "@babel/plugin-transform-computed-properties": "^7.25.9",
-        "@babel/plugin-transform-destructuring": "^7.25.9",
-        "@babel/plugin-transform-dotall-regex": "^7.25.9",
-        "@babel/plugin-transform-duplicate-keys": "^7.25.9",
-        "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
-        "@babel/plugin-transform-dynamic-import": "^7.25.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
-        "@babel/plugin-transform-export-namespace-from": "^7.25.9",
-        "@babel/plugin-transform-for-of": "^7.25.9",
-        "@babel/plugin-transform-function-name": "^7.25.9",
-        "@babel/plugin-transform-json-strings": "^7.25.9",
-        "@babel/plugin-transform-literals": "^7.25.9",
-        "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.25.9",
-        "@babel/plugin-transform-modules-amd": "^7.25.9",
-        "@babel/plugin-transform-modules-commonjs": "^7.25.9",
-        "@babel/plugin-transform-modules-systemjs": "^7.25.9",
-        "@babel/plugin-transform-modules-umd": "^7.25.9",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
-        "@babel/plugin-transform-new-target": "^7.25.9",
-        "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
-        "@babel/plugin-transform-numeric-separator": "^7.25.9",
-        "@babel/plugin-transform-object-rest-spread": "^7.25.9",
-        "@babel/plugin-transform-object-super": "^7.25.9",
-        "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
-        "@babel/plugin-transform-optional-chaining": "^7.25.9",
-        "@babel/plugin-transform-parameters": "^7.25.9",
-        "@babel/plugin-transform-private-methods": "^7.25.9",
-        "@babel/plugin-transform-private-property-in-object": "^7.25.9",
-        "@babel/plugin-transform-property-literals": "^7.25.9",
-        "@babel/plugin-transform-regenerator": "^7.25.9",
-        "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
-        "@babel/plugin-transform-reserved-words": "^7.25.9",
-        "@babel/plugin-transform-shorthand-properties": "^7.25.9",
-        "@babel/plugin-transform-spread": "^7.25.9",
-        "@babel/plugin-transform-sticky-regex": "^7.25.9",
-        "@babel/plugin-transform-template-literals": "^7.25.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.25.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.25.9",
-        "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
-        "@babel/plugin-transform-unicode-regex": "^7.25.9",
-        "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
-        "@babel/preset-modules": "0.1.6-no-external-plugins",
-        "babel-plugin-polyfill-corejs2": "^0.4.10",
-        "babel-plugin-polyfill-corejs3": "^0.10.6",
-        "babel-plugin-polyfill-regenerator": "^0.6.1",
-        "core-js-compat": "^3.38.1",
-        "semver": "^6.3.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/preset-env/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/@babel/preset-modules": {
-      "version": "0.1.6-no-external-plugins",
-      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
-      "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "@babel/types": "^7.4.4",
-        "esutils": "^2.0.2"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
-      }
-    },
-    "node_modules/@babel/preset-react": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
-      "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-transform-react-display-name": "^7.25.9",
-        "@babel/plugin-transform-react-jsx": "^7.25.9",
-        "@babel/plugin-transform-react-jsx-development": "^7.25.9",
-        "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/preset-typescript": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz",
-      "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-syntax-jsx": "^7.25.9",
-        "@babel/plugin-transform-modules-commonjs": "^7.25.9",
-        "@babel/plugin-transform-typescript": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/runtime": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
-      "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
-      "license": "MIT",
-      "dependencies": {
-        "regenerator-runtime": "^0.14.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/runtime-corejs3": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz",
-      "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==",
-      "license": "MIT",
-      "dependencies": {
-        "core-js-pure": "^3.30.2",
-        "regenerator-runtime": "^0.14.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/template": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
-      "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/parser": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
-      "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/parser": "^7.25.9",
-        "@babel/template": "^7.25.9",
-        "@babel/types": "^7.25.9",
-        "debug": "^4.3.1",
-        "globals": "^11.1.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/types": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
-      "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-string-parser": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@braintree/sanitize-url": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz",
-      "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==",
-      "license": "MIT"
-    },
-    "node_modules/@chevrotain/cst-dts-gen": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz",
-      "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@chevrotain/gast": "11.0.3",
-        "@chevrotain/types": "11.0.3",
-        "lodash-es": "4.17.21"
-      }
-    },
-    "node_modules/@chevrotain/gast": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz",
-      "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@chevrotain/types": "11.0.3",
-        "lodash-es": "4.17.21"
-      }
-    },
-    "node_modules/@chevrotain/regexp-to-ast": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz",
-      "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/@chevrotain/types": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz",
-      "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/@chevrotain/utils": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
-      "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/@colors/colors": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
-      "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
-      "license": "MIT",
-      "optional": true,
-      "engines": {
-        "node": ">=0.1.90"
-      }
-    },
-    "node_modules/@discoveryjs/json-ext": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
-      "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/@docsearch/css": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.7.0.tgz",
-      "integrity": "sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ==",
-      "license": "MIT"
-    },
-    "node_modules/@docsearch/react": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.7.0.tgz",
-      "integrity": "sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-core": "1.17.6",
-        "@algolia/autocomplete-preset-algolia": "1.17.6",
-        "@docsearch/css": "3.7.0",
-        "algoliasearch": "^5.12.0"
-      },
-      "peerDependencies": {
-        "@types/react": ">= 16.8.0 < 19.0.0",
-        "react": ">= 16.8.0 < 19.0.0",
-        "react-dom": ">= 16.8.0 < 19.0.0",
-        "search-insights": ">= 1 < 3"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        },
-        "react": {
-          "optional": true
-        },
-        "react-dom": {
-          "optional": true
-        },
-        "search-insights": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.13.0.tgz",
-      "integrity": "sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.13.0.tgz",
-      "integrity": "sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@docsearch/react/node_modules/@algolia/recommend": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.13.0.tgz",
-      "integrity": "sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@docsearch/react/node_modules/algoliasearch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.13.0.tgz",
-      "integrity": "sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-abtesting": "5.13.0",
-        "@algolia/client-analytics": "5.13.0",
-        "@algolia/client-common": "5.13.0",
-        "@algolia/client-insights": "5.13.0",
-        "@algolia/client-personalization": "5.13.0",
-        "@algolia/client-query-suggestions": "5.13.0",
-        "@algolia/client-search": "5.13.0",
-        "@algolia/ingestion": "1.13.0",
-        "@algolia/monitoring": "1.13.0",
-        "@algolia/recommend": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
-      "engines": {
-        "node": ">= 14.0.0"
-      }
-    },
-    "node_modules/@docusaurus/babel": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.0.tgz",
-      "integrity": "sha512-7CsoQFiadoq7AHSUIQNkI/lGfg9AQ2ZBzsf9BqfZGXkHwWDy6twuohEaG0PgQv1npSRSAB2dioVxhRSErnqKNA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-transform-runtime": "^7.25.9",
-        "@babel/preset-env": "^7.25.9",
-        "@babel/preset-react": "^7.25.9",
-        "@babel/preset-typescript": "^7.25.9",
-        "@babel/runtime": "^7.25.9",
-        "@babel/runtime-corejs3": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "babel-plugin-dynamic-import-node": "^2.3.3",
-        "fs-extra": "^11.1.1",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@docusaurus/bundler": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.0.tgz",
-      "integrity": "sha512-o5T9HXkPKH0OQAifTxEXaebcO8kaz3tU1+wlIShZ2DKJHlsyWX3N4rToWBHroWnV/ZCT2XN3kLRzXASqrnb9Tw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.25.9",
-        "@docusaurus/babel": "3.6.0",
-        "@docusaurus/cssnano-preset": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "autoprefixer": "^10.4.14",
-        "babel-loader": "^9.2.1",
-        "clean-css": "^5.3.2",
-        "copy-webpack-plugin": "^11.0.0",
-        "css-loader": "^6.8.1",
-        "css-minimizer-webpack-plugin": "^5.0.1",
-        "cssnano": "^6.1.2",
-        "file-loader": "^6.2.0",
-        "html-minifier-terser": "^7.2.0",
-        "mini-css-extract-plugin": "^2.9.1",
-        "null-loader": "^4.0.1",
-        "postcss": "^8.4.26",
-        "postcss-loader": "^7.3.3",
-        "react-dev-utils": "^12.0.1",
-        "terser-webpack-plugin": "^5.3.9",
-        "tslib": "^2.6.0",
-        "url-loader": "^4.1.1",
-        "webpack": "^5.95.0",
-        "webpackbar": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/faster": "3.5.2"
-      },
-      "peerDependenciesMeta": {
-        "@docusaurus/faster": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docusaurus/core": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.0.tgz",
-      "integrity": "sha512-lvRgMoKJJSRDt9+HhAqFcICV4kp/mw1cJJrLxIw4Q2XZnFGM1XUuwcbuaqWmGog+NcOLZaPCcCtZbn60EMCtjQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/babel": "3.6.0",
-        "@docusaurus/bundler": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "boxen": "^6.2.1",
-        "chalk": "^4.1.2",
-        "chokidar": "^3.5.3",
-        "cli-table3": "^0.6.3",
-        "combine-promises": "^1.1.0",
-        "commander": "^5.1.0",
-        "core-js": "^3.31.1",
-        "del": "^6.1.1",
-        "detect-port": "^1.5.1",
-        "escape-html": "^1.0.3",
-        "eta": "^2.2.0",
-        "eval": "^0.1.8",
-        "fs-extra": "^11.1.1",
-        "html-tags": "^3.3.1",
-        "html-webpack-plugin": "^5.6.0",
-        "leven": "^3.1.0",
-        "lodash": "^4.17.21",
-        "p-map": "^4.0.0",
-        "prompts": "^2.4.2",
-        "react-dev-utils": "^12.0.1",
-        "react-helmet-async": "^1.3.0",
-        "react-loadable": "npm:@docusaurus/react-loadable@6.0.0",
-        "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
-        "react-router": "^5.3.4",
-        "react-router-config": "^5.1.1",
-        "react-router-dom": "^5.3.4",
-        "rtl-detect": "^1.0.4",
-        "semver": "^7.5.4",
-        "serve-handler": "^6.1.6",
-        "shelljs": "^0.8.5",
-        "tslib": "^2.6.0",
-        "update-notifier": "^6.0.2",
-        "webpack": "^5.95.0",
-        "webpack-bundle-analyzer": "^4.10.2",
-        "webpack-dev-server": "^4.15.2",
-        "webpack-merge": "^6.0.1"
-      },
-      "bin": {
-        "docusaurus": "bin/docusaurus.mjs"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@mdx-js/react": "^3.0.0",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/core/node_modules/react-router-dom": {
-      "version": "5.3.4",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
-      "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.12.13",
-        "history": "^4.9.0",
-        "loose-envify": "^1.3.1",
-        "prop-types": "^15.6.2",
-        "react-router": "5.3.4",
-        "tiny-invariant": "^1.0.2",
-        "tiny-warning": "^1.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=15"
-      }
-    },
-    "node_modules/@docusaurus/cssnano-preset": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.0.tgz",
-      "integrity": "sha512-h3jlOXqqzNSoU+C4CZLNpFtD+v2xr1UBf4idZpwMgqid9r6lb5GS7tWKnQnauio6OipacbHbDXEX3JyT1PlDkg==",
-      "license": "MIT",
-      "dependencies": {
-        "cssnano-preset-advanced": "^6.1.2",
-        "postcss": "^8.4.38",
-        "postcss-sort-media-queries": "^5.2.0",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@docusaurus/logger": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.0.tgz",
-      "integrity": "sha512-BcQhoXilXW0607cH/kO6P5Gt5KxCGfoJ+QDKNf3yO2S09/RsITlW+0QljXPbI3DklTrHrhRDmgGk1yX4nUhWTA==",
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^4.1.2",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@docusaurus/lqip-loader": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/lqip-loader/-/lqip-loader-3.6.0.tgz",
-      "integrity": "sha512-jEQjnKAjhgyZ/aQf0Tbl3eDpp1j0C/GojE/cv2Bad89o+luV1OAOs9UHDRyKwWQfN+se0D9kFxkfsfwYxMpI8A==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "file-loader": "^6.2.0",
-        "lodash": "^4.17.21",
-        "sharp": "^0.32.3",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@docusaurus/mdx-loader": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.0.tgz",
-      "integrity": "sha512-GhRzL1Af/AdSSrGesSPOU/iP/aXadTGmVKuysCxZDrQR2RtBtubQZ9aw+KvdFVV7R4K/CsbgD6J5oqrXlEPk3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "@mdx-js/mdx": "^3.0.0",
-        "@slorber/remark-comment": "^1.0.0",
-        "escape-html": "^1.0.3",
-        "estree-util-value-to-estree": "^3.0.1",
-        "file-loader": "^6.2.0",
-        "fs-extra": "^11.1.1",
-        "image-size": "^1.0.2",
-        "mdast-util-mdx": "^3.0.0",
-        "mdast-util-to-string": "^4.0.0",
-        "rehype-raw": "^7.0.0",
-        "remark-directive": "^3.0.0",
-        "remark-emoji": "^4.0.0",
-        "remark-frontmatter": "^5.0.0",
-        "remark-gfm": "^4.0.0",
-        "stringify-object": "^3.3.0",
-        "tslib": "^2.6.0",
-        "unified": "^11.0.3",
-        "unist-util-visit": "^5.0.0",
-        "url-loader": "^4.1.1",
-        "vfile": "^6.0.1",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/module-type-aliases": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.0.tgz",
-      "integrity": "sha512-szTrIN/6/fuk0xkf3XbRfdTFJzRQ8d1s3sQj5++58wltrT7v3yn1149oc9ryYjMpRcbsarGloQwMu7ofPe4XPg==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/types": "3.6.0",
-        "@types/history": "^4.7.11",
-        "@types/react": "*",
-        "@types/react-router-config": "*",
-        "@types/react-router-dom": "*",
-        "react-helmet-async": "*",
-        "react-loadable": "npm:@docusaurus/react-loadable@6.0.0"
-      },
-      "peerDependencies": {
-        "react": "*",
-        "react-dom": "*"
-      }
-    },
-    "node_modules/@docusaurus/plugin-content-blog": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.0.tgz",
-      "integrity": "sha512-o4aT1/E0Ldpzs/hQff5uyoSriAhS/yqBhqSn+fvSw465AaqRsva6O7CZSYleuBq6x2bewyE3QJq2PcTiHhAd8g==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "cheerio": "1.0.0-rc.12",
-        "feed": "^4.2.2",
-        "fs-extra": "^11.1.1",
-        "lodash": "^4.17.21",
-        "reading-time": "^1.5.0",
-        "srcset": "^4.0.0",
-        "tslib": "^2.6.0",
-        "unist-util-visit": "^5.0.0",
-        "utility-types": "^3.10.0",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/plugin-content-docs": "*",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-content-docs": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.0.tgz",
-      "integrity": "sha512-c5gZOxocJKO/Zev2MEZInli+b+VNswDGuKHE6QtFgidhAJonwjh2kwj967RvWFaMMk62HlLJLZ+IGK2XsVy4Aw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "@types/react-router-config": "^5.0.7",
-        "combine-promises": "^1.1.0",
-        "fs-extra": "^11.1.1",
-        "js-yaml": "^4.1.0",
-        "lodash": "^4.17.21",
-        "tslib": "^2.6.0",
-        "utility-types": "^3.10.0",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-content-pages": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.0.tgz",
-      "integrity": "sha512-RKHhJrfkadHc7+tt1cP48NWifOrhkSRMPdXNYytzhoQrXlP6Ph+3tfQ4/n+nT0S3Y9+wwRxYqRqA380ZLt+QtQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "fs-extra": "^11.1.1",
-        "tslib": "^2.6.0",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-debug": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.0.tgz",
-      "integrity": "sha512-o8T1Rl94COLdSlKvjYLQpRJQRU8WWZ8EX1B0yV0dQLNN8reyH7MQW+6z1ig4sQFfH3pnjPWVGHfuEjcib5m7Eg==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "fs-extra": "^11.1.1",
-        "react-json-view-lite": "^1.2.0",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-google-analytics": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.0.tgz",
-      "integrity": "sha512-kgRFbfpi6Hshj75YUztKyEMtI/kw0trPRwoTN4g+W1NK99R/vh8phTvhBTIMnDbetU79795LkwfG0rZ/ce6zWQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-google-gtag": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.0.tgz",
-      "integrity": "sha512-nqu4IfjaO4UX+dojHL2BxHRS+sKj31CIMWYo49huQ3wTET0Oc3u/WGTaKd3ShTPDhkgiRhTOSTPUwJWrU55nHg==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "@types/gtag.js": "^0.0.12",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-google-tag-manager": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.0.tgz",
-      "integrity": "sha512-OU6c5xI0nOVbEc9eImGvvsgNWe4vGm97t/W3aLHjWsHyNk3uwFNBQMHRvBUwAi9k/K3kyC5E7DWnc67REhdLOw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/plugin-ideal-image": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.6.0.tgz",
-      "integrity": "sha512-6BaZU7mX+RH+lRFPm5nj3GGfAsjsJ1JHjp0Xjb4ilfte7L2IZkTl6MPpvAzyPC0qIUxfXRcJs4qd/HUE0xcTlw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/lqip-loader": "3.6.0",
-        "@docusaurus/responsive-loader": "^1.7.0",
-        "@docusaurus/theme-translations": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "@slorber/react-ideal-image": "^0.0.12",
-        "react-waypoint": "^10.3.0",
-        "sharp": "^0.32.3",
-        "tslib": "^2.6.0",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "jimp": "*",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "jimp": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docusaurus/plugin-sitemap": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.0.tgz",
-      "integrity": "sha512-YB5XMdf9FjLhgbHY/cDbYhVxsgcpPIjxY9769HUgFOB7GVzItTLOR71W035R1BiR2CA5QAn3XOSg36WLRxlhQQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "fs-extra": "^11.1.1",
-        "sitemap": "^7.1.1",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/preset-classic": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.0.tgz",
-      "integrity": "sha512-kpGNdQzr/Dpm7o3b1iaQrz4DMDx3WIeBbl4V4P4maa2zAQkTdlaP4CMgA5oKrRrpqPLnQFsUM/b+qf2glhl2Tw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/plugin-content-blog": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/plugin-content-pages": "3.6.0",
-        "@docusaurus/plugin-debug": "3.6.0",
-        "@docusaurus/plugin-google-analytics": "3.6.0",
-        "@docusaurus/plugin-google-gtag": "3.6.0",
-        "@docusaurus/plugin-google-tag-manager": "3.6.0",
-        "@docusaurus/plugin-sitemap": "3.6.0",
-        "@docusaurus/theme-classic": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-search-algolia": "3.6.0",
-        "@docusaurus/types": "3.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/responsive-loader": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz",
-      "integrity": "sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "loader-utils": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "peerDependencies": {
-        "jimp": "*",
-        "sharp": "*"
-      },
-      "peerDependenciesMeta": {
-        "jimp": {
-          "optional": true
-        },
-        "sharp": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docusaurus/theme-classic": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.0.tgz",
-      "integrity": "sha512-sAXNfwPL6uRD+BuHuKXZfAXud7SS7IK/JdrPuzyQxdO1gJKzI5GFfe1ED1QoJDNWJWJ01JHE5rSnwYLEADc2rQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/plugin-content-blog": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/plugin-content-pages": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-translations": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "@mdx-js/react": "^3.0.0",
-        "clsx": "^2.0.0",
-        "copy-text-to-clipboard": "^3.2.0",
-        "infima": "0.2.0-alpha.45",
-        "lodash": "^4.17.21",
-        "nprogress": "^0.2.0",
-        "postcss": "^8.4.26",
-        "prism-react-renderer": "^2.3.0",
-        "prismjs": "^1.29.0",
-        "react-router-dom": "^5.3.4",
-        "rtlcss": "^4.1.0",
-        "tslib": "^2.6.0",
-        "utility-types": "^3.10.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/theme-classic/node_modules/react-router-dom": {
-      "version": "5.3.4",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
-      "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.12.13",
-        "history": "^4.9.0",
-        "loose-envify": "^1.3.1",
-        "prop-types": "^15.6.2",
-        "react-router": "5.3.4",
-        "tiny-invariant": "^1.0.2",
-        "tiny-warning": "^1.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=15"
-      }
-    },
-    "node_modules/@docusaurus/theme-common": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.0.tgz",
-      "integrity": "sha512-frjlYE5sRs+GuPs4XXlp9aMLI2O4H5FPpznDAXBrCm+8EpWRiIb443ePMxM3IyMCQ5bwFlki0PI9C+r4apstnw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/mdx-loader": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@types/history": "^4.7.11",
-        "@types/react": "*",
-        "@types/react-router-config": "*",
-        "clsx": "^2.0.0",
-        "parse-numeric-range": "^1.3.0",
-        "prism-react-renderer": "^2.3.0",
-        "tslib": "^2.6.0",
-        "utility-types": "^3.10.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/plugin-content-docs": "*",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/theme-mermaid": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.6.0.tgz",
-      "integrity": "sha512-5t7zzBnnJa4BBcGo9bEfTM48DxD/+CVbFkfiRnFXheWjMrMm5a+IP10igEQ4zyDC+QgatbzLAxkj4GRYpYTauA==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/module-type-aliases": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/types": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "mermaid": ">=10.4",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/theme-search-algolia": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.0.tgz",
-      "integrity": "sha512-4IwRUkxjrisR8LXBHeE4d2btraWdMficbgiVL3UHvJURmyvgzMBZQP8KrK8rjdXeu8SuRxSmeV6NSVomRvdbEg==",
-      "license": "MIT",
-      "dependencies": {
-        "@docsearch/react": "^3.5.2",
-        "@docusaurus/core": "3.6.0",
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/plugin-content-docs": "3.6.0",
-        "@docusaurus/theme-common": "3.6.0",
-        "@docusaurus/theme-translations": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-validation": "3.6.0",
-        "algoliasearch": "^4.18.0",
-        "algoliasearch-helper": "^3.13.3",
-        "clsx": "^2.0.0",
-        "eta": "^2.2.0",
-        "fs-extra": "^11.1.1",
-        "lodash": "^4.17.21",
-        "tslib": "^2.6.0",
-        "utility-types": "^3.10.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/theme-translations": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.0.tgz",
-      "integrity": "sha512-L555X8lWE3fv8VaF0Bc1VnAgi10UvRKFcvADHiYR7Gj37ItaWP5i7xLHsSw7fi/SHTXe5wfIeCFNqUYHyCOHAQ==",
-      "license": "MIT",
-      "dependencies": {
-        "fs-extra": "^11.1.1",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@docusaurus/types": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.0.tgz",
-      "integrity": "sha512-jADLgoZGWhAzThr+mRiyuFD4OUzt6jHnb7NRArRKorgxckqUBaPyFOau9hhbcSTHtU6ceyeWjN7FDt7uG2Hplw==",
-      "license": "MIT",
-      "dependencies": {
-        "@mdx-js/mdx": "^3.0.0",
-        "@types/history": "^4.7.11",
-        "@types/react": "*",
-        "commander": "^5.1.0",
-        "joi": "^17.9.2",
-        "react-helmet-async": "^1.3.0",
-        "utility-types": "^3.10.0",
-        "webpack": "^5.95.0",
-        "webpack-merge": "^5.9.0"
-      },
-      "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
-      }
-    },
-    "node_modules/@docusaurus/types/node_modules/webpack-merge": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
-      "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
-      "license": "MIT",
-      "dependencies": {
-        "clone-deep": "^4.0.1",
-        "flat": "^5.0.2",
-        "wildcard": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/@docusaurus/utils": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.0.tgz",
-      "integrity": "sha512-VKczAutI4mptiAw/WcYEu5WeVhQ6Q1zdIUl64SGw9K++9lziH+Kt10Ee8l2dMpRkiUk6zzK20kMNlX2WCUwXYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "@svgr/webpack": "^8.1.0",
-        "escape-string-regexp": "^4.0.0",
-        "file-loader": "^6.2.0",
-        "fs-extra": "^11.1.1",
-        "github-slugger": "^1.5.0",
-        "globby": "^11.1.0",
-        "gray-matter": "^4.0.3",
-        "jiti": "^1.20.0",
-        "js-yaml": "^4.1.0",
-        "lodash": "^4.17.21",
-        "micromatch": "^4.0.5",
-        "prompts": "^2.4.2",
-        "resolve-pathname": "^3.0.0",
-        "shelljs": "^0.8.5",
-        "tslib": "^2.6.0",
-        "url-loader": "^4.1.1",
-        "utility-types": "^3.10.0",
-        "webpack": "^5.88.1"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/types": "*"
-      },
-      "peerDependenciesMeta": {
-        "@docusaurus/types": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docusaurus/utils-common": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.0.tgz",
-      "integrity": "sha512-diUDNfbw33GaZMmKwdTckT2IBfVouXLXRD+zphH9ywswuaEIKqixvuf5g41H7MBBrlMsxhna3uTMoB4B/OPDcA==",
-      "license": "MIT",
-      "dependencies": {
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/types": "*"
-      },
-      "peerDependenciesMeta": {
-        "@docusaurus/types": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@docusaurus/utils-validation": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.0.tgz",
-      "integrity": "sha512-CRHiKKJEKA0GFlfOf71JWHl7PtwOyX0+Zg9ep9NFEZv6Lcx3RJ9nhl7p8HRjPL6deyYceavM//BsfW4pCI4BtA==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/logger": "3.6.0",
-        "@docusaurus/utils": "3.6.0",
-        "@docusaurus/utils-common": "3.6.0",
-        "fs-extra": "^11.2.0",
-        "joi": "^17.9.2",
-        "js-yaml": "^4.1.0",
-        "lodash": "^4.17.21",
-        "tslib": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=18.0"
-      }
-    },
-    "node_modules/@hapi/hoek": {
-      "version": "9.3.0",
-      "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
-      "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@hapi/topo": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
-      "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@hapi/hoek": "^9.0.0"
-      }
-    },
-    "node_modules/@iconify/types": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
-      "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
-      "license": "MIT"
-    },
-    "node_modules/@iconify/utils": {
-      "version": "2.1.33",
-      "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz",
-      "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==",
-      "license": "MIT",
-      "dependencies": {
-        "@antfu/install-pkg": "^0.4.0",
-        "@antfu/utils": "^0.7.10",
-        "@iconify/types": "^2.0.0",
-        "debug": "^4.3.6",
-        "kolorist": "^1.8.0",
-        "local-pkg": "^0.5.0",
-        "mlly": "^1.7.1"
-      }
-    },
-    "node_modules/@jest/schemas": {
-      "version": "29.6.3",
-      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
-      "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
-      "license": "MIT",
-      "dependencies": {
-        "@sinclair/typebox": "^0.27.8"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
-      }
-    },
-    "node_modules/@jest/types": {
-      "version": "29.6.3",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
-      "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
-      "license": "MIT",
-      "dependencies": {
-        "@jest/schemas": "^29.6.3",
-        "@types/istanbul-lib-coverage": "^2.0.0",
-        "@types/istanbul-reports": "^3.0.0",
-        "@types/node": "*",
-        "@types/yargs": "^17.0.8",
-        "chalk": "^4.0.0"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
-      }
-    },
-    "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
-      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/set-array": "^1.2.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
-      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/source-map": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
-      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.25"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-      "license": "MIT"
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.25",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "node_modules/@leichtgewicht/ip-codec": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
-      "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
-      "license": "MIT"
-    },
-    "node_modules/@mdx-js/mdx": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz",
-      "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "@types/estree-jsx": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "@types/mdx": "^2.0.0",
-        "collapse-white-space": "^2.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-is-identifier-name": "^3.0.0",
-        "estree-util-scope": "^1.0.0",
-        "estree-walker": "^3.0.0",
-        "hast-util-to-jsx-runtime": "^2.0.0",
-        "markdown-extensions": "^2.0.0",
-        "recma-build-jsx": "^1.0.0",
-        "recma-jsx": "^1.0.0",
-        "recma-stringify": "^1.0.0",
-        "rehype-recma": "^1.0.0",
-        "remark-mdx": "^3.0.0",
-        "remark-parse": "^11.0.0",
-        "remark-rehype": "^11.0.0",
-        "source-map": "^0.7.0",
-        "unified": "^11.0.0",
-        "unist-util-position-from-estree": "^2.0.0",
-        "unist-util-stringify-position": "^4.0.0",
-        "unist-util-visit": "^5.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/@mdx-js/react": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz",
-      "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdx": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      },
-      "peerDependencies": {
-        "@types/react": ">=16",
-        "react": ">=16"
-      }
-    },
-    "node_modules/@mermaid-js/parser": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.3.0.tgz",
-      "integrity": "sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==",
-      "license": "MIT",
-      "dependencies": {
-        "langium": "3.0.0"
-      }
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@pnpm/config.env-replace": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
-      "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12.22.0"
-      }
-    },
-    "node_modules/@pnpm/network.ca-file": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
-      "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "4.2.10"
-      },
-      "engines": {
-        "node": ">=12.22.0"
-      }
-    },
-    "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
-      "license": "ISC"
-    },
-    "node_modules/@pnpm/npm-conf": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz",
-      "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==",
-      "license": "MIT",
-      "dependencies": {
-        "@pnpm/config.env-replace": "^1.1.0",
-        "@pnpm/network.ca-file": "^1.0.1",
-        "config-chain": "^1.1.11"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@polka/url": {
-      "version": "1.0.0-next.28",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
-      "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
-      "license": "MIT"
-    },
-    "node_modules/@remix-run/router": {
-      "version": "1.15.1",
-      "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz",
-      "integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/@shikijs/core": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz",
-      "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/engine-javascript": "1.22.2",
-        "@shikijs/engine-oniguruma": "1.22.2",
-        "@shikijs/types": "1.22.2",
-        "@shikijs/vscode-textmate": "^9.3.0",
-        "@types/hast": "^3.0.4",
-        "hast-util-to-html": "^9.0.3"
-      }
-    },
-    "node_modules/@shikijs/engine-javascript": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz",
-      "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/types": "1.22.2",
-        "@shikijs/vscode-textmate": "^9.3.0",
-        "oniguruma-to-js": "0.4.3"
-      }
-    },
-    "node_modules/@shikijs/engine-oniguruma": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz",
-      "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/types": "1.22.2",
-        "@shikijs/vscode-textmate": "^9.3.0"
-      }
-    },
-    "node_modules/@shikijs/types": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz",
-      "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/vscode-textmate": "^9.3.0",
-        "@types/hast": "^3.0.4"
-      }
-    },
-    "node_modules/@shikijs/vscode-textmate": {
-      "version": "9.3.0",
-      "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz",
-      "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/@sideway/address": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
-      "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@hapi/hoek": "^9.0.0"
-      }
-    },
-    "node_modules/@sideway/formula": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
-      "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@sideway/pinpoint": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
-      "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@sinclair/typebox": {
-      "version": "0.27.8",
-      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
-      "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
-      "license": "MIT"
-    },
-    "node_modules/@sindresorhus/is": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
-      "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/is?sponsor=1"
-      }
-    },
-    "node_modules/@slorber/react-ideal-image": {
-      "version": "0.0.12",
-      "resolved": "https://registry.npmjs.org/@slorber/react-ideal-image/-/react-ideal-image-0.0.12.tgz",
-      "integrity": "sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8.9.0",
-        "npm": "> 3"
-      },
-      "peerDependencies": {
-        "prop-types": ">=15",
-        "react": ">=0.14.x",
-        "react-waypoint": ">=9.0.2"
-      }
-    },
-    "node_modules/@slorber/remark-comment": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz",
-      "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==",
-      "license": "MIT",
-      "dependencies": {
-        "micromark-factory-space": "^1.0.0",
-        "micromark-util-character": "^1.1.0",
-        "micromark-util-symbol": "^1.0.1"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
-      "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
-      "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
-      "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz",
-      "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz",
-      "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz",
-      "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz",
-      "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-plugin-transform-svg-component": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz",
-      "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/babel-preset": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz",
-      "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==",
-      "license": "MIT",
-      "dependencies": {
-        "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
-        "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
-        "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
-        "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
-        "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
-        "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
-        "@svgr/babel-plugin-transform-react-native-svg": "8.1.0",
-        "@svgr/babel-plugin-transform-svg-component": "8.0.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@svgr/core": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
-      "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.21.3",
-        "@svgr/babel-preset": "8.1.0",
-        "camelcase": "^6.2.0",
-        "cosmiconfig": "^8.1.3",
-        "snake-case": "^3.0.4"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      }
-    },
-    "node_modules/@svgr/hast-util-to-babel-ast": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz",
-      "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.21.3",
-        "entities": "^4.4.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      }
-    },
-    "node_modules/@svgr/plugin-jsx": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz",
-      "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.21.3",
-        "@svgr/babel-preset": "8.1.0",
-        "@svgr/hast-util-to-babel-ast": "8.0.0",
-        "svg-parser": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@svgr/core": "*"
-      }
-    },
-    "node_modules/@svgr/plugin-svgo": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz",
-      "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==",
-      "license": "MIT",
-      "dependencies": {
-        "cosmiconfig": "^8.1.3",
-        "deepmerge": "^4.3.1",
-        "svgo": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      },
-      "peerDependencies": {
-        "@svgr/core": "*"
-      }
-    },
-    "node_modules/@svgr/webpack": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz",
-      "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.21.3",
-        "@babel/plugin-transform-react-constant-elements": "^7.21.3",
-        "@babel/preset-env": "^7.20.2",
-        "@babel/preset-react": "^7.18.6",
-        "@babel/preset-typescript": "^7.21.0",
-        "@svgr/core": "8.1.0",
-        "@svgr/plugin-jsx": "8.1.0",
-        "@svgr/plugin-svgo": "8.1.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/gregberge"
-      }
-    },
-    "node_modules/@szmarczak/http-timer": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
-      "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
-      "license": "MIT",
-      "dependencies": {
-        "defer-to-connect": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=14.16"
-      }
-    },
-    "node_modules/@trysound/sax": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
-      "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/@types/acorn": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
-      "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/@types/body-parser": {
-      "version": "1.19.5",
-      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
-      "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/connect": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/bonjour": {
-      "version": "3.5.13",
-      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
-      "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/connect": {
-      "version": "3.4.38",
-      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
-      "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/connect-history-api-fallback": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
-      "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/express-serve-static-core": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/d3": {
-      "version": "7.4.3",
-      "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
-      "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-array": "*",
-        "@types/d3-axis": "*",
-        "@types/d3-brush": "*",
-        "@types/d3-chord": "*",
-        "@types/d3-color": "*",
-        "@types/d3-contour": "*",
-        "@types/d3-delaunay": "*",
-        "@types/d3-dispatch": "*",
-        "@types/d3-drag": "*",
-        "@types/d3-dsv": "*",
-        "@types/d3-ease": "*",
-        "@types/d3-fetch": "*",
-        "@types/d3-force": "*",
-        "@types/d3-format": "*",
-        "@types/d3-geo": "*",
-        "@types/d3-hierarchy": "*",
-        "@types/d3-interpolate": "*",
-        "@types/d3-path": "*",
-        "@types/d3-polygon": "*",
-        "@types/d3-quadtree": "*",
-        "@types/d3-random": "*",
-        "@types/d3-scale": "*",
-        "@types/d3-scale-chromatic": "*",
-        "@types/d3-selection": "*",
-        "@types/d3-shape": "*",
-        "@types/d3-time": "*",
-        "@types/d3-time-format": "*",
-        "@types/d3-timer": "*",
-        "@types/d3-transition": "*",
-        "@types/d3-zoom": "*"
-      }
-    },
-    "node_modules/@types/d3-array": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
-      "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-axis": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
-      "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-selection": "*"
-      }
-    },
-    "node_modules/@types/d3-brush": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
-      "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-selection": "*"
-      }
-    },
-    "node_modules/@types/d3-chord": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
-      "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-color": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
-      "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-contour": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
-      "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-array": "*",
-        "@types/geojson": "*"
-      }
-    },
-    "node_modules/@types/d3-delaunay": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
-      "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-dispatch": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
-      "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-drag": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
-      "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-selection": "*"
-      }
-    },
-    "node_modules/@types/d3-dsv": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
-      "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-ease": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
-      "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-fetch": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
-      "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-dsv": "*"
-      }
-    },
-    "node_modules/@types/d3-force": {
-      "version": "3.0.10",
-      "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
-      "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-format": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
-      "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-geo": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
-      "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/geojson": "*"
-      }
-    },
-    "node_modules/@types/d3-hierarchy": {
-      "version": "3.1.7",
-      "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
-      "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-interpolate": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
-      "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-color": "*"
-      }
-    },
-    "node_modules/@types/d3-path": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
-      "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-polygon": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
-      "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-quadtree": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
-      "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-random": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
-      "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-scale": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
-      "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-time": "*"
-      }
-    },
-    "node_modules/@types/d3-scale-chromatic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
-      "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-selection": {
-      "version": "3.0.11",
-      "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz",
-      "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-shape": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
-      "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-path": "*"
-      }
-    },
-    "node_modules/@types/d3-time": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
-      "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-time-format": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
-      "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-timer": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
-      "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/d3-transition": {
-      "version": "3.0.9",
-      "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
-      "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-selection": "*"
-      }
-    },
-    "node_modules/@types/d3-zoom": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
-      "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/d3-interpolate": "*",
-        "@types/d3-selection": "*"
-      }
-    },
-    "node_modules/@types/debug": {
-      "version": "4.1.12",
-      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
-      "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/ms": "*"
-      }
-    },
-    "node_modules/@types/dompurify": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
-      "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/trusted-types": "*"
-      }
-    },
-    "node_modules/@types/eslint": {
-      "version": "9.6.1",
-      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
-      "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
-      }
-    },
-    "node_modules/@types/eslint-scope": {
-      "version": "3.7.7",
-      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
-      "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/@types/estree": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
-      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/estree-jsx": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
-      "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "*"
-      }
-    },
-    "node_modules/@types/express": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
-      "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/body-parser": "*",
-        "@types/express-serve-static-core": "^4.17.33",
-        "@types/qs": "*",
-        "@types/serve-static": "*"
-      }
-    },
-    "node_modules/@types/express-serve-static-core": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz",
-      "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "@types/qs": "*",
-        "@types/range-parser": "*",
-        "@types/send": "*"
-      }
-    },
-    "node_modules/@types/express/node_modules/@types/express-serve-static-core": {
-      "version": "4.19.6",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
-      "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "@types/qs": "*",
-        "@types/range-parser": "*",
-        "@types/send": "*"
-      }
-    },
-    "node_modules/@types/geojson": {
-      "version": "7946.0.14",
-      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
-      "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/gtag.js": {
-      "version": "0.0.12",
-      "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz",
-      "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/hast": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
-      "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "*"
-      }
-    },
-    "node_modules/@types/history": {
-      "version": "4.7.11",
-      "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
-      "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
-      "license": "MIT"
-    },
-    "node_modules/@types/http-cache-semantics": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
-      "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/http-errors": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
-      "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/http-proxy": {
-      "version": "1.17.15",
-      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
-      "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/istanbul-lib-coverage": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
-      "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
-      "license": "MIT"
-    },
-    "node_modules/@types/istanbul-lib-report": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
-      "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-coverage": "*"
-      }
-    },
-    "node_modules/@types/istanbul-reports": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
-      "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/istanbul-lib-report": "*"
-      }
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.15",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
-      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/mdast": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
-      "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "*"
-      }
-    },
-    "node_modules/@types/mdx": {
-      "version": "2.0.13",
-      "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
-      "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/mime": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
-      "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
-      "license": "MIT"
-    },
-    "node_modules/@types/ms": {
-      "version": "0.7.34",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
-      "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
-      "license": "MIT"
-    },
-    "node_modules/@types/node": {
-      "version": "22.9.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
-      "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
-      "license": "MIT",
-      "dependencies": {
-        "undici-types": "~6.19.8"
-      }
-    },
-    "node_modules/@types/node-forge": {
-      "version": "1.3.11",
-      "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
-      "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/parse-json": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
-      "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/parse5": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
-      "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/prismjs": {
-      "version": "1.26.5",
-      "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
-      "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/prop-types": {
-      "version": "15.7.13",
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
-      "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/qs": {
-      "version": "6.9.17",
-      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz",
-      "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/range-parser": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
-      "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
-      "license": "MIT"
-    },
-    "node_modules/@types/react": {
-      "version": "18.3.12",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
-      "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/prop-types": "*",
-        "csstype": "^3.0.2"
-      }
-    },
-    "node_modules/@types/react-router": {
-      "version": "5.1.20",
-      "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
-      "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/history": "^4.7.11",
-        "@types/react": "*"
-      }
-    },
-    "node_modules/@types/react-router-config": {
-      "version": "5.0.11",
-      "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz",
-      "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/history": "^4.7.11",
-        "@types/react": "*",
-        "@types/react-router": "^5.1.0"
-      }
-    },
-    "node_modules/@types/react-router-dom": {
-      "version": "5.3.3",
-      "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
-      "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/history": "^4.7.11",
-        "@types/react": "*",
-        "@types/react-router": "*"
-      }
-    },
-    "node_modules/@types/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
-      "license": "MIT"
-    },
-    "node_modules/@types/sax": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
-      "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/send": {
-      "version": "0.17.4",
-      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
-      "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mime": "^1",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/serve-index": {
-      "version": "1.9.4",
-      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
-      "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/express": "*"
-      }
-    },
-    "node_modules/@types/serve-static": {
-      "version": "1.15.7",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
-      "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/http-errors": "*",
-        "@types/node": "*",
-        "@types/send": "*"
-      }
-    },
-    "node_modules/@types/sockjs": {
-      "version": "0.3.36",
-      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
-      "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/trusted-types": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
-      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
-      "license": "MIT"
-    },
-    "node_modules/@types/unist": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
-      "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
-      "license": "MIT"
-    },
-    "node_modules/@types/ws": {
-      "version": "8.5.13",
-      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz",
-      "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/yargs": {
-      "version": "17.0.33",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
-      "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/yargs-parser": "*"
-      }
-    },
-    "node_modules/@types/yargs-parser": {
-      "version": "21.0.3",
-      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
-      "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
-      "license": "MIT"
-    },
-    "node_modules/@ungap/structured-clone": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
-      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
-      "license": "ISC"
-    },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
-      "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/helper-numbers": "1.13.2",
-        "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
-      }
-    },
-    "node_modules/@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
-      "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
-      "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
-      "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-numbers": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
-      "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/floating-point-hex-parser": "1.13.2",
-        "@webassemblyjs/helper-api-error": "1.13.2",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
-      "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
-      "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@webassemblyjs/helper-buffer": "1.14.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
-        "@webassemblyjs/wasm-gen": "1.14.1"
-      }
-    },
-    "node_modules/@webassemblyjs/ieee754": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
-      "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
-      "license": "MIT",
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
-      "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
-      "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
-      "license": "MIT"
-    },
-    "node_modules/@webassemblyjs/wasm-edit": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
-      "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@webassemblyjs/helper-buffer": "1.14.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
-        "@webassemblyjs/helper-wasm-section": "1.14.1",
-        "@webassemblyjs/wasm-gen": "1.14.1",
-        "@webassemblyjs/wasm-opt": "1.14.1",
-        "@webassemblyjs/wasm-parser": "1.14.1",
-        "@webassemblyjs/wast-printer": "1.14.1"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-gen": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
-      "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
-        "@webassemblyjs/ieee754": "1.13.2",
-        "@webassemblyjs/leb128": "1.13.2",
-        "@webassemblyjs/utf8": "1.13.2"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-opt": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
-      "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@webassemblyjs/helper-buffer": "1.14.1",
-        "@webassemblyjs/wasm-gen": "1.14.1",
-        "@webassemblyjs/wasm-parser": "1.14.1"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-parser": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
-      "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@webassemblyjs/helper-api-error": "1.13.2",
-        "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
-        "@webassemblyjs/ieee754": "1.13.2",
-        "@webassemblyjs/leb128": "1.13.2",
-        "@webassemblyjs/utf8": "1.13.2"
-      }
-    },
-    "node_modules/@webassemblyjs/wast-printer": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
-      "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
-      "license": "MIT",
-      "dependencies": {
-        "@webassemblyjs/ast": "1.14.1",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@xtuc/ieee754": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/@xtuc/long": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "license": "ISC"
-    },
-    "node_modules/accepts": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
-      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-types": "~2.1.34",
-        "negotiator": "0.6.3"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/accepts/node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/accepts/node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/accepts/node_modules/negotiator": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
-      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "8.14.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
-      "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
-      "license": "MIT",
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-      }
-    },
-    "node_modules/acorn-walk": {
-      "version": "8.3.4",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
-      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.11.0"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/address": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
-      "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/aggregate-error": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-      "license": "MIT",
-      "dependencies": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "8.17.1",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
-      "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3",
-        "fast-uri": "^3.0.1",
-        "json-schema-traverse": "^1.0.0",
-        "require-from-string": "^2.0.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/ajv-formats": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
-      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
-      "license": "MIT",
-      "dependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependencies": {
-        "ajv": "^8.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ajv": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/ajv-keywords": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
-      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "node_modules/algoliasearch": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz",
-      "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-browser-local-storage": "4.24.0",
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/cache-in-memory": "4.24.0",
-        "@algolia/client-account": "4.24.0",
-        "@algolia/client-analytics": "4.24.0",
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-personalization": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/logger-console": "4.24.0",
-        "@algolia/recommend": "4.24.0",
-        "@algolia/requester-browser-xhr": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/requester-node-http": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch-helper": {
-      "version": "3.22.5",
-      "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz",
-      "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/events": "^4.0.1"
-      },
-      "peerDependencies": {
-        "algoliasearch": ">= 3.1 < 6"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
-      "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
-      "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/ansi-align": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
-      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^4.1.0"
-      }
-    },
-    "node_modules/ansi-align/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "license": "MIT"
-    },
-    "node_modules/ansi-align/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "license": "MIT",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-escapes": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
-      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^0.21.3"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-escapes/node_modules/type-fest": {
-      "version": "0.21.3",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
-      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/ansi-html-community": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
-      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
-      "engines": [
-        "node >= 0.8.0"
-      ],
-      "license": "Apache-2.0",
-      "bin": {
-        "ansi-html": "bin/ansi-html"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "license": "ISC",
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/aproba": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
-      "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
-      "license": "ISC"
-    },
-    "node_modules/arg": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
-      "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
-      "license": "MIT"
-    },
-    "node_modules/argparse": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "license": "Python-2.0"
-    },
-    "node_modules/array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
-      "license": "MIT"
-    },
-    "node_modules/array-union": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/astring": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
-      "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
-      "license": "MIT",
-      "bin": {
-        "astring": "bin/astring"
-      }
-    },
-    "node_modules/at-least-node": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
-      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/autocomplete.js": {
-      "version": "0.37.1",
-      "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.37.1.tgz",
-      "integrity": "sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ==",
-      "license": "MIT",
-      "dependencies": {
-        "immediate": "^3.2.3"
-      }
-    },
-    "node_modules/autoprefixer": {
-      "version": "10.4.20",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
-      "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.3",
-        "caniuse-lite": "^1.0.30001646",
-        "fraction.js": "^4.3.7",
-        "normalize-range": "^0.1.2",
-        "picocolors": "^1.0.1",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "bin": {
-        "autoprefixer": "bin/autoprefixer"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/b4a": {
-      "version": "1.6.7",
-      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
-      "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/babel-loader": {
-      "version": "9.2.1",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz",
-      "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==",
-      "license": "MIT",
-      "dependencies": {
-        "find-cache-dir": "^4.0.0",
-        "schema-utils": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 14.15.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.12.0",
-        "webpack": ">=5"
-      }
-    },
-    "node_modules/babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "license": "MIT",
-      "dependencies": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
-      "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.22.6",
-        "@babel/helper-define-polyfill-provider": "^0.6.2",
-        "semver": "^6.3.1"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-corejs3": {
-      "version": "0.10.6",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
-      "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.6.2",
-        "core-js-compat": "^3.38.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
-      }
-    },
-    "node_modules/babel-plugin-polyfill-regenerator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
-      "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.6.2"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
-      }
-    },
-    "node_modules/bail": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
-      "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "license": "MIT"
-    },
-    "node_modules/bare-events": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz",
-      "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==",
-      "license": "Apache-2.0",
-      "optional": true
-    },
-    "node_modules/bare-fs": {
-      "version": "2.3.5",
-      "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz",
-      "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "bare-events": "^2.0.0",
-        "bare-path": "^2.0.0",
-        "bare-stream": "^2.0.0"
-      }
-    },
-    "node_modules/bare-os": {
-      "version": "2.4.4",
-      "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz",
-      "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==",
-      "license": "Apache-2.0",
-      "optional": true
-    },
-    "node_modules/bare-path": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
-      "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "bare-os": "^2.1.0"
-      }
-    },
-    "node_modules/bare-stream": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.2.tgz",
-      "integrity": "sha512-EFZHSIBkDgSHIwj2l2QZfP4U5OcD4xFAOwhSb/vlr9PIqyGJGvB/nfClJbcnh3EY4jtPE4zsb5ztae96bVF79A==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "dependencies": {
-        "streamx": "^2.20.0"
-      }
-    },
-    "node_modules/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
-      "license": "MIT"
-    },
-    "node_modules/bcp-47-match": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz",
-      "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/bl": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-      "license": "MIT",
-      "dependencies": {
-        "buffer": "^5.5.0",
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.4.0"
-      }
-    },
-    "node_modules/body-parser": {
-      "version": "1.20.3",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
-      "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
-      "license": "MIT",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "content-type": "~1.0.5",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "on-finished": "2.4.1",
-        "qs": "6.13.0",
-        "raw-body": "2.5.2",
-        "type-is": "~1.6.18",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/body-parser/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/body-parser/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/body-parser/node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "license": "MIT",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/body-parser/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/bonjour-service": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz",
-      "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.3",
-        "multicast-dns": "^7.2.5"
-      }
-    },
-    "node_modules/boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "license": "ISC"
-    },
-    "node_modules/boxen": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
-      "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-align": "^3.0.1",
-        "camelcase": "^6.2.0",
-        "chalk": "^4.1.2",
-        "cli-boxes": "^3.0.0",
-        "string-width": "^5.0.1",
-        "type-fest": "^2.5.0",
-        "widest-line": "^4.0.1",
-        "wrap-ansi": "^8.0.1"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "license": "MIT",
-      "dependencies": {
-        "fill-range": "^7.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.24.2",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
-      "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001669",
-        "electron-to-chromium": "^1.5.41",
-        "node-releases": "^2.0.18",
-        "update-browserslist-db": "^1.1.1"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      }
-    },
-    "node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "license": "MIT"
-    },
-    "node_modules/bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/cacheable-lookup": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
-      "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      }
-    },
-    "node_modules/cacheable-request": {
-      "version": "10.2.14",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
-      "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/http-cache-semantics": "^4.0.2",
-        "get-stream": "^6.0.1",
-        "http-cache-semantics": "^4.1.1",
-        "keyv": "^4.5.3",
-        "mimic-response": "^4.0.0",
-        "normalize-url": "^8.0.0",
-        "responselike": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/mimic-response": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
-      "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
-      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
-      "license": "MIT",
-      "dependencies": {
-        "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.4",
-        "set-function-length": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/camel-case": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
-      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
-      "license": "MIT",
-      "dependencies": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/camelcase": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "caniuse-lite": "^1.0.0",
-        "lodash.memoize": "^4.1.2",
-        "lodash.uniq": "^4.5.0"
-      }
-    },
-    "node_modules/caniuse-lite": {
-      "version": "1.0.30001678",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz",
-      "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "CC-BY-4.0"
-    },
-    "node_modules/ccount": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
-      "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/char-regex": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
-      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/character-entities": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
-      "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/character-entities-html4": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
-      "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/character-entities-legacy": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
-      "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/character-reference-invalid": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
-      "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/cheerio": {
-      "version": "1.0.0-rc.12",
-      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
-      "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
-      "license": "MIT",
-      "dependencies": {
-        "cheerio-select": "^2.1.0",
-        "dom-serializer": "^2.0.0",
-        "domhandler": "^5.0.3",
-        "domutils": "^3.0.1",
-        "htmlparser2": "^8.0.1",
-        "parse5": "^7.0.0",
-        "parse5-htmlparser2-tree-adapter": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
-      }
-    },
-    "node_modules/cheerio-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
-      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-select": "^5.1.0",
-        "css-what": "^6.1.0",
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.3",
-        "domutils": "^3.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/chevrotain": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
-      "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@chevrotain/cst-dts-gen": "11.0.3",
-        "@chevrotain/gast": "11.0.3",
-        "@chevrotain/regexp-to-ast": "11.0.3",
-        "@chevrotain/types": "11.0.3",
-        "@chevrotain/utils": "11.0.3",
-        "lodash-es": "4.17.21"
-      }
-    },
-    "node_modules/chevrotain-allstar": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
-      "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
-      "license": "MIT",
-      "dependencies": {
-        "lodash-es": "^4.17.21"
-      },
-      "peerDependencies": {
-        "chevrotain": "^11.0.0"
-      }
-    },
-    "node_modules/chokidar": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "license": "MIT",
-      "dependencies": {
-        "anymatch": "~3.1.2",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.2",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.6.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "node_modules/chownr": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-      "license": "ISC"
-    },
-    "node_modules/chrome-trace-event": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
-      "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/ci-info": {
-      "version": "3.9.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
-      "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/sibiraj-s"
-        }
-      ],
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/clean-css": {
-      "version": "5.3.3",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
-      "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
-      "license": "MIT",
-      "dependencies": {
-        "source-map": "~0.6.0"
-      },
-      "engines": {
-        "node": ">= 10.0"
-      }
-    },
-    "node_modules/clean-css/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/clean-stack": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cli-boxes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
-      "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cli-table3": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
-      "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
-      "license": "MIT",
-      "dependencies": {
-        "string-width": "^4.2.0"
-      },
-      "engines": {
-        "node": "10.* || >= 12.*"
-      },
-      "optionalDependencies": {
-        "@colors/colors": "1.5.0"
-      }
-    },
-    "node_modules/cli-table3/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "license": "MIT"
-    },
-    "node_modules/cli-table3/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "license": "MIT",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "license": "MIT",
-      "dependencies": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/clsx": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
-      "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/collapse-white-space": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz",
-      "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/color": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
-      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1",
-        "color-string": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=12.5.0"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "license": "MIT"
-    },
-    "node_modules/color-string": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
-      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "node_modules/color-support": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
-      "license": "ISC",
-      "bin": {
-        "color-support": "bin.js"
-      }
-    },
-    "node_modules/colord": {
-      "version": "2.9.3",
-      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
-      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
-      "license": "MIT"
-    },
-    "node_modules/colorette": {
-      "version": "2.0.20",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
-      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
-      "license": "MIT"
-    },
-    "node_modules/combine-promises": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz",
-      "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/comma-separated-tokens": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
-      "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/commander": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
-      "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/common-path-prefix": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
-      "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
-      "license": "ISC"
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": ">= 1.43.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compressible/node_modules/mime-db": {
-      "version": "1.53.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
-      "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compression": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz",
-      "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==",
-      "license": "MIT",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "compressible": "~2.0.18",
-        "debug": "2.6.9",
-        "negotiator": "~0.6.4",
-        "on-headers": "~1.0.2",
-        "safe-buffer": "5.2.1",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/compression/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/compression/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/compression/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
-      "license": "MIT"
-    },
-    "node_modules/confbox": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
-      "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
-      "license": "MIT"
-    },
-    "node_modules/config-chain": {
-      "version": "1.1.13",
-      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
-      "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ini": "^1.3.4",
-        "proto-list": "~1.2.1"
-      }
-    },
-    "node_modules/configstore": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
-      "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "dot-prop": "^6.0.1",
-        "graceful-fs": "^4.2.6",
-        "unique-string": "^3.0.0",
-        "write-file-atomic": "^3.0.3",
-        "xdg-basedir": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/yeoman/configstore?sponsor=1"
-      }
-    },
-    "node_modules/connect-history-api-fallback": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
-      "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/consola": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
-      "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14.18.0 || >=16.10.0"
-      }
-    },
-    "node_modules/console-control-strings": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
-      "license": "ISC"
-    },
-    "node_modules/consolidated-events": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz",
-      "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==",
-      "license": "MIT"
-    },
-    "node_modules/content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/content-type": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
-      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/convert-source-map": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
-      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
-      "license": "MIT"
-    },
-    "node_modules/cookie": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
-      "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
-      "license": "MIT"
-    },
-    "node_modules/copy-text-to-clipboard": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
-      "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/copy-webpack-plugin": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
-      "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-glob": "^3.2.11",
-        "glob-parent": "^6.0.1",
-        "globby": "^13.1.1",
-        "normalize-path": "^3.0.0",
-        "schema-utils": "^4.0.0",
-        "serialize-javascript": "^6.0.0"
-      },
-      "engines": {
-        "node": ">= 14.15.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.1.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/globby": {
-      "version": "13.2.2",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
-      "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
-      "license": "MIT",
-      "dependencies": {
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.3.0",
-        "ignore": "^5.2.4",
-        "merge2": "^1.4.1",
-        "slash": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/slash": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
-      "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/core-js": {
-      "version": "3.39.0",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
-      "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-compat": {
-      "version": "3.39.0",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
-      "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.24.2"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-js-pure": {
-      "version": "3.39.0",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz",
-      "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "license": "MIT"
-    },
-    "node_modules/cose-base": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
-      "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
-      "license": "MIT",
-      "dependencies": {
-        "layout-base": "^1.0.0"
-      }
-    },
-    "node_modules/cosmiconfig": {
-      "version": "8.3.6",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
-      "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
-      "license": "MIT",
-      "dependencies": {
-        "import-fresh": "^3.3.0",
-        "js-yaml": "^4.1.0",
-        "parse-json": "^5.2.0",
-        "path-type": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/d-fischer"
-      },
-      "peerDependencies": {
-        "typescript": ">=4.9.5"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/cross-spawn": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
-      "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/crypto-random-string": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
-      "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
-      "license": "MIT",
-      "dependencies": {
-        "type-fest": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/crypto-random-string/node_modules/type-fest": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
-      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/css-declaration-sorter": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
-      "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
-      "license": "ISC",
-      "engines": {
-        "node": "^14 || ^16 || >=18"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.9"
-      }
-    },
-    "node_modules/css-loader": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
-      "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
-      "license": "MIT",
-      "dependencies": {
-        "icss-utils": "^5.1.0",
-        "postcss": "^8.4.33",
-        "postcss-modules-extract-imports": "^3.1.0",
-        "postcss-modules-local-by-default": "^4.0.5",
-        "postcss-modules-scope": "^3.2.0",
-        "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.2.0",
-        "semver": "^7.5.4"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "@rspack/core": "0.x || 1.x",
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@rspack/core": {
-          "optional": true
-        },
-        "webpack": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/css-minimizer-webpack-plugin": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz",
-      "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/trace-mapping": "^0.3.18",
-        "cssnano": "^6.0.1",
-        "jest-worker": "^29.4.3",
-        "postcss": "^8.4.24",
-        "schema-utils": "^4.0.1",
-        "serialize-javascript": "^6.0.1"
-      },
-      "engines": {
-        "node": ">= 14.15.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@parcel/css": {
-          "optional": true
-        },
-        "@swc/css": {
-          "optional": true
-        },
-        "clean-css": {
-          "optional": true
-        },
-        "csso": {
-          "optional": true
-        },
-        "esbuild": {
-          "optional": true
-        },
-        "lightningcss": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/css-select": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
-      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.1.0",
-        "domhandler": "^5.0.2",
-        "domutils": "^3.0.1",
-        "nth-check": "^2.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/css-selector-parser": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
-      "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
-      "license": "MIT"
-    },
-    "node_modules/css-tree": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
-      "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
-      "license": "MIT",
-      "dependencies": {
-        "mdn-data": "2.0.30",
-        "source-map-js": "^1.0.1"
-      },
-      "engines": {
-        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
-      }
-    },
-    "node_modules/css-what": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
-      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "license": "MIT",
-      "bin": {
-        "cssesc": "bin/cssesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cssnano": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz",
-      "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==",
-      "license": "MIT",
-      "dependencies": {
-        "cssnano-preset-default": "^6.1.2",
-        "lilconfig": "^3.1.1"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/cssnano"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/cssnano-preset-advanced": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz",
-      "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==",
-      "license": "MIT",
-      "dependencies": {
-        "autoprefixer": "^10.4.19",
-        "browserslist": "^4.23.0",
-        "cssnano-preset-default": "^6.1.2",
-        "postcss-discard-unused": "^6.0.5",
-        "postcss-merge-idents": "^6.0.3",
-        "postcss-reduce-idents": "^6.0.3",
-        "postcss-zindex": "^6.0.2"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/cssnano-preset-default": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz",
-      "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "css-declaration-sorter": "^7.2.0",
-        "cssnano-utils": "^4.0.2",
-        "postcss-calc": "^9.0.1",
-        "postcss-colormin": "^6.1.0",
-        "postcss-convert-values": "^6.1.0",
-        "postcss-discard-comments": "^6.0.2",
-        "postcss-discard-duplicates": "^6.0.3",
-        "postcss-discard-empty": "^6.0.3",
-        "postcss-discard-overridden": "^6.0.2",
-        "postcss-merge-longhand": "^6.0.5",
-        "postcss-merge-rules": "^6.1.1",
-        "postcss-minify-font-values": "^6.1.0",
-        "postcss-minify-gradients": "^6.0.3",
-        "postcss-minify-params": "^6.1.0",
-        "postcss-minify-selectors": "^6.0.4",
-        "postcss-normalize-charset": "^6.0.2",
-        "postcss-normalize-display-values": "^6.0.2",
-        "postcss-normalize-positions": "^6.0.2",
-        "postcss-normalize-repeat-style": "^6.0.2",
-        "postcss-normalize-string": "^6.0.2",
-        "postcss-normalize-timing-functions": "^6.0.2",
-        "postcss-normalize-unicode": "^6.1.0",
-        "postcss-normalize-url": "^6.0.2",
-        "postcss-normalize-whitespace": "^6.0.2",
-        "postcss-ordered-values": "^6.0.2",
-        "postcss-reduce-initial": "^6.1.0",
-        "postcss-reduce-transforms": "^6.0.2",
-        "postcss-svgo": "^6.0.3",
-        "postcss-unique-selectors": "^6.0.4"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/cssnano-utils": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz",
-      "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/csso": {
-      "version": "5.0.5",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
-      "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
-      "license": "MIT",
-      "dependencies": {
-        "css-tree": "~2.2.0"
-      },
-      "engines": {
-        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/css-tree": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
-      "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
-      "license": "MIT",
-      "dependencies": {
-        "mdn-data": "2.0.28",
-        "source-map-js": "^1.0.1"
-      },
-      "engines": {
-        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/mdn-data": {
-      "version": "2.0.28",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
-      "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
-      "license": "CC0-1.0"
-    },
-    "node_modules/csstype": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
-      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
-      "license": "MIT"
-    },
-    "node_modules/cytoscape": {
-      "version": "3.30.3",
-      "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.3.tgz",
-      "integrity": "sha512-HncJ9gGJbVtw7YXtIs3+6YAFSSiKsom0amWc33Z7QbylbY2JGMrA0yz4EwrdTScZxnwclXeEZHzO5pxoy0ZE4g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/cytoscape-cose-bilkent": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
-      "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
-      "license": "MIT",
-      "dependencies": {
-        "cose-base": "^1.0.0"
-      },
-      "peerDependencies": {
-        "cytoscape": "^3.2.0"
-      }
-    },
-    "node_modules/cytoscape-fcose": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
-      "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
-      "license": "MIT",
-      "dependencies": {
-        "cose-base": "^2.2.0"
-      },
-      "peerDependencies": {
-        "cytoscape": "^3.2.0"
-      }
-    },
-    "node_modules/cytoscape-fcose/node_modules/cose-base": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
-      "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
-      "license": "MIT",
-      "dependencies": {
-        "layout-base": "^2.0.0"
-      }
-    },
-    "node_modules/cytoscape-fcose/node_modules/layout-base": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
-      "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==",
-      "license": "MIT"
-    },
-    "node_modules/d3": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
-      "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-array": "3",
-        "d3-axis": "3",
-        "d3-brush": "3",
-        "d3-chord": "3",
-        "d3-color": "3",
-        "d3-contour": "4",
-        "d3-delaunay": "6",
-        "d3-dispatch": "3",
-        "d3-drag": "3",
-        "d3-dsv": "3",
-        "d3-ease": "3",
-        "d3-fetch": "3",
-        "d3-force": "3",
-        "d3-format": "3",
-        "d3-geo": "3",
-        "d3-hierarchy": "3",
-        "d3-interpolate": "3",
-        "d3-path": "3",
-        "d3-polygon": "3",
-        "d3-quadtree": "3",
-        "d3-random": "3",
-        "d3-scale": "4",
-        "d3-scale-chromatic": "3",
-        "d3-selection": "3",
-        "d3-shape": "3",
-        "d3-time": "3",
-        "d3-time-format": "4",
-        "d3-timer": "3",
-        "d3-transition": "3",
-        "d3-zoom": "3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-array": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
-      "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
-      "license": "ISC",
-      "dependencies": {
-        "internmap": "1 - 2"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-axis": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
-      "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-brush": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
-      "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-dispatch": "1 - 3",
-        "d3-drag": "2 - 3",
-        "d3-interpolate": "1 - 3",
-        "d3-selection": "3",
-        "d3-transition": "3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-chord": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
-      "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-path": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-color": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
-      "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-contour": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
-      "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-array": "^3.2.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-delaunay": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
-      "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
-      "license": "ISC",
-      "dependencies": {
-        "delaunator": "5"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-dispatch": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
-      "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-drag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
-      "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-dispatch": "1 - 3",
-        "d3-selection": "3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-dsv": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
-      "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
-      "license": "ISC",
-      "dependencies": {
-        "commander": "7",
-        "iconv-lite": "0.6",
-        "rw": "1"
-      },
-      "bin": {
-        "csv2json": "bin/dsv2json.js",
-        "csv2tsv": "bin/dsv2dsv.js",
-        "dsv2dsv": "bin/dsv2dsv.js",
-        "dsv2json": "bin/dsv2json.js",
-        "json2csv": "bin/json2dsv.js",
-        "json2dsv": "bin/json2dsv.js",
-        "json2tsv": "bin/json2dsv.js",
-        "tsv2csv": "bin/dsv2dsv.js",
-        "tsv2json": "bin/dsv2json.js"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-dsv/node_modules/commander": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/d3-ease": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
-      "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-fetch": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
-      "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-dsv": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-force": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
-      "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-dispatch": "1 - 3",
-        "d3-quadtree": "1 - 3",
-        "d3-timer": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-format": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
-      "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-geo": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
-      "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-array": "2.5.0 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-hierarchy": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
-      "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-interpolate": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
-      "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-color": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-path": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
-      "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-polygon": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
-      "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-quadtree": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
-      "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-random": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
-      "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-sankey": {
-      "version": "0.12.3",
-      "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
-      "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "d3-array": "1 - 2",
-        "d3-shape": "^1.2.0"
-      }
-    },
-    "node_modules/d3-sankey/node_modules/d3-array": {
-      "version": "2.12.1",
-      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
-      "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "internmap": "^1.0.0"
-      }
-    },
-    "node_modules/d3-sankey/node_modules/d3-path": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
-      "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/d3-sankey/node_modules/d3-shape": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
-      "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "d3-path": "1"
-      }
-    },
-    "node_modules/d3-sankey/node_modules/internmap": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
-      "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
-      "license": "ISC"
-    },
-    "node_modules/d3-scale": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
-      "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-array": "2.10.0 - 3",
-        "d3-format": "1 - 3",
-        "d3-interpolate": "1.2.0 - 3",
-        "d3-time": "2.1.1 - 3",
-        "d3-time-format": "2 - 4"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-scale-chromatic": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
-      "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-color": "1 - 3",
-        "d3-interpolate": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-selection": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
-      "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-shape": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
-      "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-path": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-time": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
-      "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-array": "2 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-time-format": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
-      "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-time": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-timer": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
-      "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/d3-transition": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
-      "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-color": "1 - 3",
-        "d3-dispatch": "1 - 3",
-        "d3-ease": "1 - 3",
-        "d3-interpolate": "1 - 3",
-        "d3-timer": "1 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "peerDependencies": {
-        "d3-selection": "2 - 3"
-      }
-    },
-    "node_modules/d3-zoom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
-      "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
-      "license": "ISC",
-      "dependencies": {
-        "d3-dispatch": "1 - 3",
-        "d3-drag": "2 - 3",
-        "d3-interpolate": "1 - 3",
-        "d3-selection": "2 - 3",
-        "d3-transition": "2 - 3"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/dagre-d3-es": {
-      "version": "7.0.11",
-      "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz",
-      "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==",
-      "license": "MIT",
-      "dependencies": {
-        "d3": "^7.9.0",
-        "lodash-es": "^4.17.21"
-      }
-    },
-    "node_modules/dayjs": {
-      "version": "1.11.13",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
-      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
-      "license": "MIT"
-    },
-    "node_modules/debounce": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
-      "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
-      "license": "MIT"
-    },
-    "node_modules/debug": {
-      "version": "4.3.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
-      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "^2.1.3"
-      },
-      "engines": {
-        "node": ">=6.0"
-      },
-      "peerDependenciesMeta": {
-        "supports-color": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/decode-named-character-reference": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
-      "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
-      "license": "MIT",
-      "dependencies": {
-        "character-entities": "^2.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/decompress-response": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
-      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
-      "license": "MIT",
-      "dependencies": {
-        "mimic-response": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/deep-extend": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/deepmerge": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
-      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
-      "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "execa": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/defer-to-connect": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
-      "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/define-data-property": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
-      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
-      "license": "MIT",
-      "dependencies": {
-        "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "gopd": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/define-lazy-prop": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
-      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/define-properties": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
-      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-      "license": "MIT",
-      "dependencies": {
-        "define-data-property": "^1.0.1",
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/del": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
-      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
-      "license": "MIT",
-      "dependencies": {
-        "globby": "^11.0.1",
-        "graceful-fs": "^4.2.4",
-        "is-glob": "^4.0.1",
-        "is-path-cwd": "^2.2.0",
-        "is-path-inside": "^3.0.2",
-        "p-map": "^4.0.0",
-        "rimraf": "^3.0.2",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/delaunator": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
-      "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
-      "license": "ISC",
-      "dependencies": {
-        "robust-predicates": "^3.0.2"
-      }
-    },
-    "node_modules/depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/dequal": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/destroy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
-      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8",
-        "npm": "1.2.8000 || >= 1.4.16"
-      }
-    },
-    "node_modules/detect-libc": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
-      "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/detect-node": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
-      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
-      "license": "MIT"
-    },
-    "node_modules/detect-port": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz",
-      "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==",
-      "license": "MIT",
-      "dependencies": {
-        "address": "^1.0.1",
-        "debug": "4"
-      },
-      "bin": {
-        "detect": "bin/detect-port.js",
-        "detect-port": "bin/detect-port.js"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/detect-port-alt": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
-      "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
-      "license": "MIT",
-      "dependencies": {
-        "address": "^1.0.1",
-        "debug": "^2.6.0"
-      },
-      "bin": {
-        "detect": "bin/detect-port",
-        "detect-port": "bin/detect-port"
-      },
-      "engines": {
-        "node": ">= 4.2.1"
-      }
-    },
-    "node_modules/detect-port-alt/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/detect-port-alt/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/devlop": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
-      "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
-      "license": "MIT",
-      "dependencies": {
-        "dequal": "^2.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/dir-glob": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-      "license": "MIT",
-      "dependencies": {
-        "path-type": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/direction": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
-      "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==",
-      "license": "MIT",
-      "bin": {
-        "direction": "cli.js"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/dns-packet": {
-      "version": "5.6.1",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
-      "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
-      "license": "MIT",
-      "dependencies": {
-        "@leichtgewicht/ip-codec": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/docusaurus-lunr-search": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/docusaurus-lunr-search/-/docusaurus-lunr-search-3.5.0.tgz",
-      "integrity": "sha512-k3zN4jYMi/prWInJILGKOxE+BVcgYinwj9+gcECsYm52tS+4ZKzXQzbPnVJAEXmvKOfFMcDFvS3MSmm6cEaxIQ==",
-      "license": "MIT",
-      "dependencies": {
-        "autocomplete.js": "^0.37.0",
-        "clsx": "^1.2.1",
-        "gauge": "^3.0.0",
-        "hast-util-select": "^4.0.0",
-        "hast-util-to-text": "^2.0.0",
-        "hogan.js": "^3.0.2",
-        "lunr": "^2.3.8",
-        "lunr-languages": "^1.4.0",
-        "mark.js": "^8.11.1",
-        "minimatch": "^3.0.4",
-        "rehype-parse": "^7.0.1",
-        "to-vfile": "^6.1.0",
-        "unified": "^9.0.0",
-        "unist-util-is": "^4.0.2"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "peerDependencies": {
-        "@docusaurus/core": "^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0",
-        "react": "^16.8.4 || ^17 || ^18",
-        "react-dom": "^16.8.4 || ^17 || ^18"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/bail": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
-      "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/clsx": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-      "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/is-plain-obj": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
-      "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/trough": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
-      "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/unified": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
-      "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
-      "license": "MIT",
-      "dependencies": {
-        "bail": "^1.0.0",
-        "extend": "^3.0.0",
-        "is-buffer": "^2.0.0",
-        "is-plain-obj": "^2.0.0",
-        "trough": "^1.0.0",
-        "vfile": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/unist-util-stringify-position": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
-      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.2"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/vfile": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
-      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "is-buffer": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0",
-        "vfile-message": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/docusaurus-lunr-search/node_modules/vfile-message": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
-      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/docusaurus-plugin-typedoc": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-1.0.5.tgz",
-      "integrity": "sha512-mv8LBJYilGOOPLqaIM3vbYc34m4qwOCpb4WfP24DOPFNj2uiTerw8sg9MGvN6Jx2+J8rq9/WMnjcyz3UMqoIIQ==",
-      "dev": true,
-      "license": "MIT",
-      "peerDependencies": {
-        "typedoc-plugin-markdown": ">=4.0.0"
-      }
-    },
-    "node_modules/dom-converter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
-      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
-      "license": "MIT",
-      "dependencies": {
-        "utila": "~0.4"
-      }
-    },
-    "node_modules/dom-serializer": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
-      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.2",
-        "entities": "^4.2.0"
-      },
-      "funding": {
-        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
-      }
-    },
-    "node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/domhandler": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
-      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "domelementtype": "^2.3.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-      }
-    },
-    "node_modules/dompurify": {
-      "version": "3.1.6",
-      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
-      "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
-      "license": "(MPL-2.0 OR Apache-2.0)"
-    },
-    "node_modules/domutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
-      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "dom-serializer": "^2.0.0",
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domutils?sponsor=1"
-      }
-    },
-    "node_modules/dot-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
-      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
-      "license": "MIT",
-      "dependencies": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/dot-prop": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
-      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
-      "license": "MIT",
-      "dependencies": {
-        "is-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/dot-prop/node_modules/is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/duplexer": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
-      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
-      "license": "MIT"
-    },
-    "node_modules/eastasianwidth": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
-      "license": "MIT"
-    },
-    "node_modules/ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
-      "license": "MIT"
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.5.54",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.54.tgz",
-      "integrity": "sha512-TX6vHleisn5i/4pekTyy1sdoLXQNy8VFvBK/fJRXSyp7GUO27KioLTG0Qo5wFjM3ZF4ryKinDo4m+IJ+rwUWSw==",
-      "license": "ISC"
-    },
-    "node_modules/emoji-regex": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
-      "license": "MIT"
-    },
-    "node_modules/emojilib": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz",
-      "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==",
-      "license": "MIT"
-    },
-    "node_modules/emojis-list": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/emoticon": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz",
-      "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/encodeurl": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
-      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "license": "MIT",
-      "dependencies": {
-        "once": "^1.4.0"
-      }
-    },
-    "node_modules/enhanced-resolve": {
-      "version": "5.17.1",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
-      "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.2.4",
-        "tapable": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/entities": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
-      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.12"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "license": "MIT",
-      "dependencies": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "node_modules/es-define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
-      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
-      "license": "MIT",
-      "dependencies": {
-        "get-intrinsic": "^1.2.4"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-errors": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
-      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-module-lexer": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
-      "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
-      "license": "MIT"
-    },
-    "node_modules/esast-util-from-estree": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
-      "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-visit": "^2.0.0",
-        "unist-util-position-from-estree": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/esast-util-from-js": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz",
-      "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "acorn": "^8.0.0",
-        "esast-util-from-estree": "^2.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/escalade": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
-      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/escape-goat": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
-      "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
-      "license": "MIT"
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "license": "BSD-2-Clause",
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esrecurse/node_modules/estraverse": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estree-util-attach-comments": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
-      "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-util-build-jsx": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz",
-      "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-is-identifier-name": "^3.0.0",
-        "estree-walker": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-util-is-identifier-name": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
-      "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-util-scope": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz",
-      "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "devlop": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-util-to-js": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz",
-      "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "astring": "^1.8.0",
-        "source-map": "^0.7.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-util-value-to-estree": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.2.1.tgz",
-      "integrity": "sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/remcohaszing"
-      }
-    },
-    "node_modules/estree-util-visit": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
-      "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/estree-walker": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
-      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0"
-      }
-    },
-    "node_modules/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/eta": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz",
-      "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/eta-dev/eta?sponsor=1"
-      }
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/eval": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz",
-      "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==",
-      "dependencies": {
-        "@types/node": "*",
-        "require-like": ">= 0.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "license": "MIT"
-    },
-    "node_modules/events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
-      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.x"
-      }
-    },
-    "node_modules/execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "license": "MIT",
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.0",
-        "human-signals": "^2.1.0",
-        "is-stream": "^2.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^4.0.1",
-        "onetime": "^5.1.2",
-        "signal-exit": "^3.0.3",
-        "strip-final-newline": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
-    "node_modules/expand-template": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
-      "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
-      "license": "(MIT OR WTFPL)",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/express": {
-      "version": "4.21.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
-      "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
-      "license": "MIT",
-      "dependencies": {
-        "accepts": "~1.3.8",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.20.3",
-        "content-disposition": "0.5.4",
-        "content-type": "~1.0.4",
-        "cookie": "0.7.1",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "encodeurl": "~2.0.0",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.3.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.3",
-        "methods": "~1.1.2",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.10",
-        "proxy-addr": "~2.0.7",
-        "qs": "6.13.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.2.1",
-        "send": "0.19.0",
-        "serve-static": "1.16.2",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/express/node_modules/content-disposition": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
-      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "5.2.1"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/express/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/express/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/express/node_modules/path-to-regexp": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
-      "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
-      "license": "MIT"
-    },
-    "node_modules/express/node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "license": "MIT"
-    },
-    "node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-      "license": "MIT",
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "license": "MIT"
-    },
-    "node_modules/fast-fifo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
-      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
-      "license": "MIT"
-    },
-    "node_modules/fast-glob": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
-      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "license": "MIT"
-    },
-    "node_modules/fast-uri": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
-      "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/fastq": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
-      "license": "ISC",
-      "dependencies": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "node_modules/fault": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
-      "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==",
-      "license": "MIT",
-      "dependencies": {
-        "format": "^0.2.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/faye-websocket": {
-      "version": "0.11.4",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
-      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/feed": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz",
-      "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==",
-      "license": "MIT",
-      "dependencies": {
-        "xml-js": "^1.6.11"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/figures": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-      "license": "MIT",
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/figures/node_modules/escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/file-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
-      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/file-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/file-loader/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/file-loader/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/file-loader/node_modules/schema-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
-      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/filesize": {
-      "version": "8.0.7",
-      "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
-      "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-      "license": "MIT",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
-      "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
-      "license": "MIT",
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~2.0.0",
-        "escape-html": "~1.0.3",
-        "on-finished": "2.4.1",
-        "parseurl": "~1.3.3",
-        "statuses": "2.0.1",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/finalhandler/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/finalhandler/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/find-cache-dir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
-      "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
-      "license": "MIT",
-      "dependencies": {
-        "common-path-prefix": "^3.0.0",
-        "pkg-dir": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/find-up": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
-      "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^7.1.0",
-        "path-exists": "^5.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/flat": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
-      "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
-      "license": "BSD-3-Clause",
-      "bin": {
-        "flat": "cli.js"
-      }
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.15.9",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
-      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
-      "funding": [
-        {
-          "type": "individual",
-          "url": "https://github.com/sponsors/RubenVerborgh"
-        }
-      ],
-      "license": "MIT",
-      "engines": {
-        "node": ">=4.0"
-      },
-      "peerDependenciesMeta": {
-        "debug": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
-      "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.8.3",
-        "@types/json-schema": "^7.0.5",
-        "chalk": "^4.1.0",
-        "chokidar": "^3.4.2",
-        "cosmiconfig": "^6.0.0",
-        "deepmerge": "^4.2.2",
-        "fs-extra": "^9.0.0",
-        "glob": "^7.1.6",
-        "memfs": "^3.1.2",
-        "minimatch": "^3.0.4",
-        "schema-utils": "2.7.0",
-        "semver": "^7.3.2",
-        "tapable": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=10",
-        "yarn": ">=1.0.0"
-      },
-      "peerDependencies": {
-        "eslint": ">= 6",
-        "typescript": ">= 2.7",
-        "vue-template-compiler": "*",
-        "webpack": ">= 4"
-      },
-      "peerDependenciesMeta": {
-        "eslint": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
-      "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.1.0",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.7.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
-      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
-      "license": "MIT",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
-      "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.4",
-        "ajv": "^6.12.2",
-        "ajv-keywords": "^3.4.1"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": {
-      "version": "1.10.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/form-data-encoder": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
-      "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 14.17"
-      }
-    },
-    "node_modules/format": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
-      "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fraction.js": {
-      "version": "4.3.7",
-      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
-      "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "type": "patreon",
-        "url": "https://github.com/sponsors/rawify"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fs-constants": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
-      "license": "MIT"
-    },
-    "node_modules/fs-extra": {
-      "version": "11.2.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
-      "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=14.14"
-      }
-    },
-    "node_modules/fs-monkey": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
-      "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==",
-      "license": "Unlicense"
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-      "license": "ISC"
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/gauge": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
-      "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
-      "deprecated": "This package is no longer supported.",
-      "license": "ISC",
-      "dependencies": {
-        "aproba": "^1.0.3 || ^2.0.0",
-        "color-support": "^1.1.2",
-        "console-control-strings": "^1.0.0",
-        "has-unicode": "^2.0.1",
-        "object-assign": "^4.1.1",
-        "signal-exit": "^3.0.0",
-        "string-width": "^4.2.3",
-        "strip-ansi": "^6.0.1",
-        "wide-align": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/gauge/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "license": "MIT"
-    },
-    "node_modules/gauge/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "license": "MIT",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/gensync": {
-      "version": "1.0.0-beta.2",
-      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
-      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
-      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "hasown": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/get-own-enumerable-property-symbols": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
-      "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
-      "license": "ISC"
-    },
-    "node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/github-from-package": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
-      "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
-      "license": "MIT"
-    },
-    "node_modules/github-slugger": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz",
-      "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==",
-      "license": "ISC"
-    },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-      "deprecated": "Glob versions prior to v9 are no longer supported",
-      "license": "ISC",
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/glob-to-regexp": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/global-dirs": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
-      "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
-      "license": "MIT",
-      "dependencies": {
-        "ini": "2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/global-dirs/node_modules/ini": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
-      "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/global-modules": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
-      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
-      "license": "MIT",
-      "dependencies": {
-        "global-prefix": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
-      "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
-      "license": "MIT",
-      "dependencies": {
-        "ini": "^1.3.5",
-        "kind-of": "^6.0.2",
-        "which": "^1.3.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix/node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-      "license": "MIT",
-      "dependencies": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-      "license": "MIT",
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/got": {
-      "version": "12.6.1",
-      "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
-      "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@sindresorhus/is": "^5.2.0",
-        "@szmarczak/http-timer": "^5.0.1",
-        "cacheable-lookup": "^7.0.0",
-        "cacheable-request": "^10.2.8",
-        "decompress-response": "^6.0.0",
-        "form-data-encoder": "^2.1.2",
-        "get-stream": "^6.0.1",
-        "http2-wrapper": "^2.1.10",
-        "lowercase-keys": "^3.0.0",
-        "p-cancelable": "^3.0.0",
-        "responselike": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/got?sponsor=1"
-      }
-    },
-    "node_modules/got/node_modules/@sindresorhus/is": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
-      "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/is?sponsor=1"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
-      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
-      "license": "ISC"
-    },
-    "node_modules/gray-matter": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
-      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
-      "license": "MIT",
-      "dependencies": {
-        "js-yaml": "^3.13.1",
-        "kind-of": "^6.0.2",
-        "section-matter": "^1.0.0",
-        "strip-bom-string": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/gray-matter/node_modules/argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "license": "MIT",
-      "dependencies": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "node_modules/gray-matter/node_modules/js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/gzip-size": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
-      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "duplexer": "^0.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/hachure-fill": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
-      "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==",
-      "license": "MIT"
-    },
-    "node_modules/handle-thing": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
-      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
-      "license": "MIT"
-    },
-    "node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/has-property-descriptors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
-      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
-      "license": "MIT",
-      "dependencies": {
-        "es-define-property": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-proto": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
-      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/has-unicode": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
-      "license": "ISC"
-    },
-    "node_modules/has-yarn": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
-      "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/hasown": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
-      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
-      "license": "MIT",
-      "dependencies": {
-        "function-bind": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/hast-util-from-parse5": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz",
-      "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/parse5": "^5.0.0",
-        "hastscript": "^6.0.0",
-        "property-information": "^5.0.0",
-        "vfile": "^4.0.0",
-        "vfile-location": "^3.2.0",
-        "web-namespaces": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-from-parse5/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
-      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.2"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-from-parse5/node_modules/vfile": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
-      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "is-buffer": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0",
-        "vfile-message": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-from-parse5/node_modules/vfile-message": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
-      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-has-property": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz",
-      "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-is-element": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz",
-      "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-parse-selector": {
-      "version": "2.2.5",
-      "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
-      "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw": {
-      "version": "9.0.4",
-      "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz",
-      "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "@types/unist": "^3.0.0",
-        "@ungap/structured-clone": "^1.0.0",
-        "hast-util-from-parse5": "^8.0.0",
-        "hast-util-to-parse5": "^8.0.0",
-        "html-void-elements": "^3.0.0",
-        "mdast-util-to-hast": "^13.0.0",
-        "parse5": "^7.0.0",
-        "unist-util-position": "^5.0.0",
-        "unist-util-visit": "^5.0.0",
-        "vfile": "^6.0.0",
-        "web-namespaces": "^2.0.0",
-        "zwitch": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/comma-separated-tokens": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
-      "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/hast-util-from-parse5": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz",
-      "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "@types/unist": "^3.0.0",
-        "devlop": "^1.0.0",
-        "hastscript": "^8.0.0",
-        "property-information": "^6.0.0",
-        "vfile": "^6.0.0",
-        "vfile-location": "^5.0.0",
-        "web-namespaces": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/hast-util-parse-selector": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
-      "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/hastscript": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
-      "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "comma-separated-tokens": "^2.0.0",
-        "hast-util-parse-selector": "^4.0.0",
-        "property-information": "^6.0.0",
-        "space-separated-tokens": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/space-separated-tokens": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
-      "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/vfile-location": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
-      "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/web-namespaces": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
-      "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-raw/node_modules/zwitch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
-      "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-select": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-4.0.2.tgz",
-      "integrity": "sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==",
-      "license": "MIT",
-      "dependencies": {
-        "bcp-47-match": "^1.0.0",
-        "comma-separated-tokens": "^1.0.0",
-        "css-selector-parser": "^1.0.0",
-        "direction": "^1.0.0",
-        "hast-util-has-property": "^1.0.0",
-        "hast-util-is-element": "^1.0.0",
-        "hast-util-to-string": "^1.0.0",
-        "hast-util-whitespace": "^1.0.0",
-        "not": "^0.1.0",
-        "nth-check": "^2.0.0",
-        "property-information": "^5.0.0",
-        "space-separated-tokens": "^1.0.0",
-        "unist-util-visit": "^2.0.0",
-        "zwitch": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-select/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/hast-util-select/node_modules/unist-util-visit": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
-      "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "unist-util-is": "^4.0.0",
-        "unist-util-visit-parents": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-select/node_modules/unist-util-visit-parents": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
-      "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "unist-util-is": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-estree": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz",
-      "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "@types/estree-jsx": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "comma-separated-tokens": "^2.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-attach-comments": "^3.0.0",
-        "estree-util-is-identifier-name": "^3.0.0",
-        "hast-util-whitespace": "^3.0.0",
-        "mdast-util-mdx-expression": "^2.0.0",
-        "mdast-util-mdx-jsx": "^3.0.0",
-        "mdast-util-mdxjs-esm": "^2.0.0",
-        "property-information": "^6.0.0",
-        "space-separated-tokens": "^2.0.0",
-        "style-to-object": "^0.4.0",
-        "unist-util-position": "^5.0.0",
-        "zwitch": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/comma-separated-tokens": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
-      "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/hast-util-whitespace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
-      "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/inline-style-parser": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
-      "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==",
-      "license": "MIT"
-    },
-    "node_modules/hast-util-to-estree/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
-      "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/style-to-object": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
-      "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
-      "license": "MIT",
-      "dependencies": {
-        "inline-style-parser": "0.1.1"
-      }
-    },
-    "node_modules/hast-util-to-estree/node_modules/zwitch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
-      "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-html": {
-      "version": "9.0.3",
-      "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz",
-      "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "@types/unist": "^3.0.0",
-        "ccount": "^2.0.0",
-        "comma-separated-tokens": "^2.0.0",
-        "hast-util-whitespace": "^3.0.0",
-        "html-void-elements": "^3.0.0",
-        "mdast-util-to-hast": "^13.0.0",
-        "property-information": "^6.0.0",
-        "space-separated-tokens": "^2.0.0",
-        "stringify-entities": "^4.0.0",
-        "zwitch": "^2.0.4"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-html/node_modules/comma-separated-tokens": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
-      "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-html/node_modules/hast-util-whitespace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
-      "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-html/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-html/node_modules/space-separated-tokens": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
-      "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-html/node_modules/zwitch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
-      "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
-      "dev": true,
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-jsx-runtime": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz",
-      "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "@types/unist": "^3.0.0",
-        "comma-separated-tokens": "^2.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-is-identifier-name": "^3.0.0",
-        "hast-util-whitespace": "^3.0.0",
-        "mdast-util-mdx-expression": "^2.0.0",
-        "mdast-util-mdx-jsx": "^3.0.0",
-        "mdast-util-mdxjs-esm": "^2.0.0",
-        "property-information": "^6.0.0",
-        "space-separated-tokens": "^2.0.0",
-        "style-to-object": "^1.0.0",
-        "unist-util-position": "^5.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-jsx-runtime/node_modules/comma-separated-tokens": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
-      "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
-      "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-jsx-runtime/node_modules/space-separated-tokens": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
-      "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-parse5": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
-      "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "comma-separated-tokens": "^2.0.0",
-        "devlop": "^1.0.0",
-        "property-information": "^6.0.0",
-        "space-separated-tokens": "^2.0.0",
-        "web-namespaces": "^2.0.0",
-        "zwitch": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-parse5/node_modules/comma-separated-tokens": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
-      "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-parse5/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-parse5/node_modules/space-separated-tokens": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
-      "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-parse5/node_modules/web-namespaces": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
-      "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-parse5/node_modules/zwitch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
-      "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/hast-util-to-string": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz",
-      "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-to-text": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz",
-      "integrity": "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==",
-      "license": "MIT",
-      "dependencies": {
-        "hast-util-is-element": "^1.0.0",
-        "repeat-string": "^1.0.0",
-        "unist-util-find-after": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hast-util-whitespace": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz",
-      "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hastscript": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
-      "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^2.0.0",
-        "comma-separated-tokens": "^1.0.0",
-        "hast-util-parse-selector": "^2.0.0",
-        "property-information": "^5.0.0",
-        "space-separated-tokens": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/hastscript/node_modules/@types/hast": {
-      "version": "2.3.10",
-      "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
-      "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2"
-      }
-    },
-    "node_modules/hastscript/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "license": "MIT",
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/history": {
-      "version": "4.10.1",
-      "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
-      "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.1.2",
-        "loose-envify": "^1.2.0",
-        "resolve-pathname": "^3.0.0",
-        "tiny-invariant": "^1.0.2",
-        "tiny-warning": "^1.0.0",
-        "value-equal": "^1.0.1"
-      }
-    },
-    "node_modules/hogan.js": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
-      "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==",
-      "dependencies": {
-        "mkdirp": "0.3.0",
-        "nopt": "1.0.10"
-      },
-      "bin": {
-        "hulk": "bin/hulk"
-      }
-    },
-    "node_modules/hoist-non-react-statics": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
-      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "react-is": "^16.7.0"
-      }
-    },
-    "node_modules/hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      }
-    },
-    "node_modules/hpack.js/node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
-      "license": "MIT"
-    },
-    "node_modules/hpack.js/node_modules/readable-stream": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
-      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
-      "license": "MIT",
-      "dependencies": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "node_modules/hpack.js/node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "license": "MIT"
-    },
-    "node_modules/hpack.js/node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/html-entities": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
-      "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/mdevils"
-        },
-        {
-          "type": "patreon",
-          "url": "https://patreon.com/mdevils"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/html-escaper": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
-      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
-      "license": "MIT"
-    },
-    "node_modules/html-minifier-terser": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
-      "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==",
-      "license": "MIT",
-      "dependencies": {
-        "camel-case": "^4.1.2",
-        "clean-css": "~5.3.2",
-        "commander": "^10.0.0",
-        "entities": "^4.4.0",
-        "param-case": "^3.0.4",
-        "relateurl": "^0.2.7",
-        "terser": "^5.15.1"
-      },
-      "bin": {
-        "html-minifier-terser": "cli.js"
-      },
-      "engines": {
-        "node": "^14.13.1 || >=16.0.0"
-      }
-    },
-    "node_modules/html-minifier-terser/node_modules/commander": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
-      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/html-tags": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
-      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/html-void-elements": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
-      "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/html-webpack-plugin": {
-      "version": "5.6.3",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz",
-      "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/html-minifier-terser": "^6.0.0",
-        "html-minifier-terser": "^6.0.2",
-        "lodash": "^4.17.21",
-        "pretty-error": "^4.0.0",
-        "tapable": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/html-webpack-plugin"
-      },
-      "peerDependencies": {
-        "@rspack/core": "0.x || 1.x",
-        "webpack": "^5.20.0"
-      },
-      "peerDependenciesMeta": {
-        "@rspack/core": {
-          "optional": true
-        },
-        "webpack": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/commander": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
-      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 12"
-      }
-    },
-    "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
-      "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
-      "license": "MIT",
-      "dependencies": {
-        "camel-case": "^4.1.2",
-        "clean-css": "^5.2.2",
-        "commander": "^8.3.0",
-        "he": "^1.2.0",
-        "param-case": "^3.0.4",
-        "relateurl": "^0.2.7",
-        "terser": "^5.10.0"
-      },
-      "bin": {
-        "html-minifier-terser": "cli.js"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/htmlparser2": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
-      "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
-      "funding": [
-        "https://github.com/fb55/htmlparser2?sponsor=1",
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.3",
-        "domutils": "^3.0.1",
-        "entities": "^4.4.0"
-      }
-    },
-    "node_modules/http-cache-semantics": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-      "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
-      "license": "MIT"
-    },
-    "node_modules/http-errors": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
-      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
-      "license": "MIT",
-      "dependencies": {
-        "depd": "2.0.0",
-        "inherits": "2.0.4",
-        "setprototypeof": "1.2.0",
-        "statuses": "2.0.1",
-        "toidentifier": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
-      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
-      "license": "MIT"
-    },
-    "node_modules/http-proxy": {
-      "version": "1.18.1",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
-      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
-      "license": "MIT",
-      "dependencies": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/http-proxy-middleware": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
-      "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/http-proxy": "^1.17.8",
-        "http-proxy": "^1.18.1",
-        "is-glob": "^4.0.1",
-        "is-plain-obj": "^3.0.0",
-        "micromatch": "^4.0.2"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "peerDependencies": {
-        "@types/express": "^4.17.13"
-      },
-      "peerDependenciesMeta": {
-        "@types/express": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
-      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/http2-wrapper": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
-      "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
-      "license": "MIT",
-      "dependencies": {
-        "quick-lru": "^5.1.1",
-        "resolve-alpn": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=10.19.0"
-      }
-    },
-    "node_modules/human-signals": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
-      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=10.17.0"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.6.3",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-      "license": "MIT",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/icss-utils": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
-      "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
-      "license": "ISC",
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/ignore": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
-      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/image-size": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
-      "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
-      "license": "MIT",
-      "dependencies": {
-        "queue": "6.0.2"
-      },
-      "bin": {
-        "image-size": "bin/image-size.js"
-      },
-      "engines": {
-        "node": ">=16.x"
-      }
-    },
-    "node_modules/immediate": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
-      "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
-      "license": "MIT"
-    },
-    "node_modules/immer": {
-      "version": "9.0.21",
-      "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
-      "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/immer"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "license": "MIT",
-      "dependencies": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/import-lazy": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
-      "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/indent-string": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
-      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/infima": {
-      "version": "0.2.0-alpha.45",
-      "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz",
-      "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
-      "license": "ISC",
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "license": "ISC"
-    },
-    "node_modules/ini": {
-      "version": "1.3.8",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
-      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
-      "license": "ISC"
-    },
-    "node_modules/inline-style-parser": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
-      "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
-      "license": "MIT"
-    },
-    "node_modules/internmap": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
-      "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/interpret": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
-      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "node_modules/ipaddr.js": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
-      "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/is-alphabetical": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
-      "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/is-alphanumerical": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
-      "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
-      "license": "MIT",
-      "dependencies": {
-        "is-alphabetical": "^2.0.0",
-        "is-decimal": "^2.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-      "license": "MIT"
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "license": "MIT",
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-buffer": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
-      "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/is-ci": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
-      "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ci-info": "^3.2.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.15.1",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
-      "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
-      "license": "MIT",
-      "dependencies": {
-        "hasown": "^2.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/is-decimal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
-      "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/is-docker": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-      "license": "MIT",
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-hexadecimal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
-      "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/is-installed-globally": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
-      "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "global-dirs": "^3.0.0",
-        "is-path-inside": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-npm": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
-      "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
-      "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-path-cwd": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-plain-obj": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-      "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "license": "MIT",
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-regexp": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
-      "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-root": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
-      "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
-      "license": "MIT"
-    },
-    "node_modules/is-wsl": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-      "license": "MIT",
-      "dependencies": {
-        "is-docker": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-yarn-global": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz",
-      "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/isarray": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
-      "license": "MIT"
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
-      "license": "ISC"
-    },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jest-util": {
-      "version": "29.7.0",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
-      "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
-      "license": "MIT",
-      "dependencies": {
-        "@jest/types": "^29.6.3",
-        "@types/node": "*",
-        "chalk": "^4.0.0",
-        "ci-info": "^3.2.0",
-        "graceful-fs": "^4.2.9",
-        "picomatch": "^2.2.3"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
-      }
-    },
-    "node_modules/jest-worker": {
-      "version": "29.7.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
-      "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "jest-util": "^29.7.0",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
-      },
-      "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
-      }
-    },
-    "node_modules/jest-worker/node_modules/supports-color": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
-      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
-      }
-    },
-    "node_modules/jiti": {
-      "version": "1.21.6",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
-      "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
-      "license": "MIT",
-      "bin": {
-        "jiti": "bin/jiti.js"
-      }
-    },
-    "node_modules/joi": {
-      "version": "17.13.3",
-      "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
-      "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "@hapi/hoek": "^9.3.0",
-        "@hapi/topo": "^5.1.0",
-        "@sideway/address": "^4.1.5",
-        "@sideway/formula": "^3.0.1",
-        "@sideway/pinpoint": "^2.0.0"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "license": "MIT"
-    },
-    "node_modules/js-yaml": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^2.0.1"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsesc": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
-      "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
-      "license": "MIT",
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/json-buffer": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
-      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-      "license": "MIT"
-    },
-    "node_modules/json-parse-even-better-errors": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "license": "MIT"
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-      "license": "MIT"
-    },
-    "node_modules/json5": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
-      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
-      "license": "MIT",
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
-      "license": "MIT",
-      "dependencies": {
-        "universalify": "^2.0.0"
-      },
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/katex": {
-      "version": "0.16.11",
-      "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz",
-      "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==",
-      "funding": [
-        "https://opencollective.com/katex",
-        "https://github.com/sponsors/katex"
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "commander": "^8.3.0"
-      },
-      "bin": {
-        "katex": "cli.js"
-      }
-    },
-    "node_modules/katex/node_modules/commander": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
-      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 12"
-      }
-    },
-    "node_modules/keyv": {
-      "version": "4.5.4",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
-      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
-      "license": "MIT",
-      "dependencies": {
-        "json-buffer": "3.0.1"
-      }
-    },
-    "node_modules/khroma": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
-      "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/kolorist": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
-      "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
-      "license": "MIT"
-    },
-    "node_modules/langium": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz",
-      "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==",
-      "license": "MIT",
-      "dependencies": {
-        "chevrotain": "~11.0.3",
-        "chevrotain-allstar": "~0.3.0",
-        "vscode-languageserver": "~9.0.1",
-        "vscode-languageserver-textdocument": "~1.0.11",
-        "vscode-uri": "~3.0.8"
-      },
-      "engines": {
-        "node": ">=16.0.0"
-      }
-    },
-    "node_modules/latest-version": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz",
-      "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==",
-      "license": "MIT",
-      "dependencies": {
-        "package-json": "^8.1.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/launch-editor": {
-      "version": "2.9.1",
-      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz",
-      "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==",
-      "license": "MIT",
-      "dependencies": {
-        "picocolors": "^1.0.0",
-        "shell-quote": "^1.8.1"
-      }
-    },
-    "node_modules/layout-base": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
-      "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==",
-      "license": "MIT"
-    },
-    "node_modules/leven": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/lilconfig": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
-      "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antonk52"
-      }
-    },
-    "node_modules/lines-and-columns": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-      "license": "MIT"
-    },
-    "node_modules/linkify-it": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
-      "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "uc.micro": "^2.0.0"
-      }
-    },
-    "node_modules/loader-runner": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
-      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.11.5"
-      }
-    },
-    "node_modules/loader-utils": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-      "license": "MIT",
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^2.1.2"
-      },
-      "engines": {
-        "node": ">=8.9.0"
-      }
-    },
-    "node_modules/local-pkg": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
-      "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
-      "license": "MIT",
-      "dependencies": {
-        "mlly": "^1.4.2",
-        "pkg-types": "^1.0.3"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
-      "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^6.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "license": "MIT"
-    },
-    "node_modules/lodash-es": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
-      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
-      "license": "MIT"
-    },
-    "node_modules/lodash.debounce": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
-      "license": "MIT"
-    },
-    "node_modules/lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
-      "license": "MIT"
-    },
-    "node_modules/lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
-      "license": "MIT"
-    },
-    "node_modules/longest-streak": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
-      "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lower-case": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
-      "license": "MIT",
-      "dependencies": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/lowercase-keys": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
-      "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "license": "ISC",
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/lunr": {
-      "version": "2.3.9",
-      "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
-      "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
-      "license": "MIT"
-    },
-    "node_modules/lunr-languages": {
-      "version": "1.14.0",
-      "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz",
-      "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==",
-      "license": "MPL-1.1"
-    },
-    "node_modules/mark.js": {
-      "version": "8.11.1",
-      "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
-      "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
-      "license": "MIT"
-    },
-    "node_modules/markdown-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
-      "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/markdown-it": {
-      "version": "14.1.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
-      "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "argparse": "^2.0.1",
-        "entities": "^4.4.0",
-        "linkify-it": "^5.0.0",
-        "mdurl": "^2.0.0",
-        "punycode.js": "^2.3.1",
-        "uc.micro": "^2.1.0"
-      },
-      "bin": {
-        "markdown-it": "bin/markdown-it.mjs"
-      }
-    },
-    "node_modules/markdown-table": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
-      "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/marked": {
-      "version": "13.0.3",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz",
-      "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==",
-      "license": "MIT",
-      "bin": {
-        "marked": "bin/marked.js"
-      },
-      "engines": {
-        "node": ">= 18"
-      }
-    },
-    "node_modules/mdast-util-directive": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz",
-      "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "@types/unist": "^3.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0",
-        "parse-entities": "^4.0.0",
-        "stringify-entities": "^4.0.0",
-        "unist-util-visit-parents": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-find-and-replace": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
-      "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "escape-string-regexp": "^5.0.0",
-        "unist-util-is": "^6.0.0",
-        "unist-util-visit-parents": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
-      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
-      "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-from-markdown": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
-      "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "@types/unist": "^3.0.0",
-        "decode-named-character-reference": "^1.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-to-string": "^4.0.0",
-        "micromark": "^4.0.0",
-        "micromark-util-decode-numeric-character-reference": "^2.0.0",
-        "micromark-util-decode-string": "^2.0.0",
-        "micromark-util-normalize-identifier": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "unist-util-stringify-position": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/mdast-util-frontmatter": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz",
-      "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.0.0",
-        "escape-string-regexp": "^5.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0",
-        "micromark-extension-frontmatter": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
-      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/mdast-util-gfm": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
-      "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
-      "license": "MIT",
-      "dependencies": {
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-gfm-autolink-literal": "^2.0.0",
-        "mdast-util-gfm-footnote": "^2.0.0",
-        "mdast-util-gfm-strikethrough": "^2.0.0",
-        "mdast-util-gfm-table": "^2.0.0",
-        "mdast-util-gfm-task-list-item": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-autolink-literal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
-      "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "ccount": "^2.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-find-and-replace": "^3.0.0",
-        "micromark-util-character": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/mdast-util-gfm-footnote": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
-      "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.1.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0",
-        "micromark-util-normalize-identifier": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-strikethrough": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
-      "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-table": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
-      "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.0.0",
-        "markdown-table": "^3.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-task-list-item": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
-      "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-mdx": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
-      "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
-      "license": "MIT",
-      "dependencies": {
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-mdx-expression": "^2.0.0",
-        "mdast-util-mdx-jsx": "^3.0.0",
-        "mdast-util-mdxjs-esm": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-mdx-expression": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
-      "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-mdx-jsx": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
-      "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "@types/mdast": "^4.0.0",
-        "@types/unist": "^3.0.0",
-        "ccount": "^2.0.0",
-        "devlop": "^1.1.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0",
-        "parse-entities": "^4.0.0",
-        "stringify-entities": "^4.0.0",
-        "unist-util-stringify-position": "^4.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-mdxjs-esm": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
-      "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree-jsx": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "@types/mdast": "^4.0.0",
-        "devlop": "^1.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "mdast-util-to-markdown": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-phrasing": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
-      "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "unist-util-is": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-phrasing/node_modules/unist-util-is": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
-      "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-to-hast": {
-      "version": "13.2.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
-      "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "@types/mdast": "^4.0.0",
-        "@ungap/structured-clone": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-util-sanitize-uri": "^2.0.0",
-        "trim-lines": "^3.0.0",
-        "unist-util-position": "^5.0.0",
-        "unist-util-visit": "^5.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-to-markdown": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
-      "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "@types/unist": "^3.0.0",
-        "longest-streak": "^3.0.0",
-        "mdast-util-phrasing": "^4.0.0",
-        "mdast-util-to-string": "^4.0.0",
-        "micromark-util-classify-character": "^2.0.0",
-        "micromark-util-decode-string": "^2.0.0",
-        "unist-util-visit": "^5.0.0",
-        "zwitch": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-to-markdown/node_modules/zwitch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
-      "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/mdast-util-to-string": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
-      "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdn-data": {
-      "version": "2.0.30",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
-      "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
-      "license": "CC0-1.0"
-    },
-    "node_modules/mdurl": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
-      "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/memfs": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
-      "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
-      "license": "Unlicense",
-      "dependencies": {
-        "fs-monkey": "^1.0.4"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
-      "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "license": "MIT"
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/mermaid": {
-      "version": "11.4.0",
-      "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.0.tgz",
-      "integrity": "sha512-mxCfEYvADJqOiHfGpJXLs4/fAjHz448rH0pfY5fAoxiz70rQiDSzUUy4dNET2T08i46IVpjohPd6WWbzmRHiPA==",
-      "license": "MIT",
-      "dependencies": {
-        "@braintree/sanitize-url": "^7.0.1",
-        "@iconify/utils": "^2.1.32",
-        "@mermaid-js/parser": "^0.3.0",
-        "@types/d3": "^7.4.3",
-        "@types/dompurify": "^3.0.5",
-        "cytoscape": "^3.29.2",
-        "cytoscape-cose-bilkent": "^4.1.0",
-        "cytoscape-fcose": "^2.2.0",
-        "d3": "^7.9.0",
-        "d3-sankey": "^0.12.3",
-        "dagre-d3-es": "7.0.11",
-        "dayjs": "^1.11.10",
-        "dompurify": "^3.0.11 <3.1.7",
-        "katex": "^0.16.9",
-        "khroma": "^2.1.0",
-        "lodash-es": "^4.17.21",
-        "marked": "^13.0.2",
-        "roughjs": "^4.6.6",
-        "stylis": "^4.3.1",
-        "ts-dedent": "^2.2.0",
-        "uuid": "^9.0.1"
-      }
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/micromark": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
-      "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/debug": "^4.0.0",
-        "debug": "^4.0.0",
-        "decode-named-character-reference": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-core-commonmark": "^2.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-chunked": "^2.0.0",
-        "micromark-util-combine-extensions": "^2.0.0",
-        "micromark-util-decode-numeric-character-reference": "^2.0.0",
-        "micromark-util-encode": "^2.0.0",
-        "micromark-util-normalize-identifier": "^2.0.0",
-        "micromark-util-resolve-all": "^2.0.0",
-        "micromark-util-sanitize-uri": "^2.0.0",
-        "micromark-util-subtokenize": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-core-commonmark": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
-      "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "decode-named-character-reference": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-factory-destination": "^2.0.0",
-        "micromark-factory-label": "^2.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-factory-title": "^2.0.0",
-        "micromark-factory-whitespace": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-chunked": "^2.0.0",
-        "micromark-util-classify-character": "^2.0.0",
-        "micromark-util-html-tag-name": "^2.0.0",
-        "micromark-util-normalize-identifier": "^2.0.0",
-        "micromark-util-resolve-all": "^2.0.0",
-        "micromark-util-subtokenize": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-directive": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz",
-      "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==",
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-factory-whitespace": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "parse-entities": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-directive/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-frontmatter": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz",
-      "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==",
-      "license": "MIT",
-      "dependencies": {
-        "fault": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-gfm": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
-      "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
-      "license": "MIT",
-      "dependencies": {
-        "micromark-extension-gfm-autolink-literal": "^2.0.0",
-        "micromark-extension-gfm-footnote": "^2.0.0",
-        "micromark-extension-gfm-strikethrough": "^2.0.0",
-        "micromark-extension-gfm-table": "^2.0.0",
-        "micromark-extension-gfm-tagfilter": "^2.0.0",
-        "micromark-extension-gfm-task-list-item": "^2.0.0",
-        "micromark-util-combine-extensions": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-autolink-literal": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
-      "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-sanitize-uri": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-gfm-footnote": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
-      "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-core-commonmark": "^2.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-normalize-identifier": "^2.0.0",
-        "micromark-util-sanitize-uri": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-gfm-strikethrough": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
-      "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-util-chunked": "^2.0.0",
-        "micromark-util-classify-character": "^2.0.0",
-        "micromark-util-resolve-all": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-gfm-table": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz",
-      "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==",
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-gfm-tagfilter": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
-      "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-task-list-item": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
-      "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-mdx-expression": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
-      "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-factory-mdx-expression": "^2.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-events-to-acorn": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-mdx-jsx": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz",
-      "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/acorn": "^4.0.0",
-        "@types/estree": "^1.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-is-identifier-name": "^3.0.0",
-        "micromark-factory-mdx-expression": "^2.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-events-to-acorn": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-extension-mdx-md": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
-      "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-mdxjs": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
-      "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.0.0",
-        "acorn-jsx": "^5.0.0",
-        "micromark-extension-mdx-expression": "^3.0.0",
-        "micromark-extension-mdx-jsx": "^3.0.0",
-        "micromark-extension-mdx-md": "^2.0.0",
-        "micromark-extension-mdxjs-esm": "^3.0.0",
-        "micromark-util-combine-extensions": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-mdxjs-esm": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
-      "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-core-commonmark": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-events-to-acorn": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "unist-util-position-from-estree": "^2.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-destination": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
-      "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-destination/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-label": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
-      "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-label/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-mdx-expression": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz",
-      "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "devlop": "^1.0.0",
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-events-to-acorn": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "unist-util-position-from-estree": "^2.0.0",
-        "vfile-message": "^4.0.0"
-      }
-    },
-    "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-space": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
-      "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^1.0.0",
-        "micromark-util-types": "^1.0.0"
-      }
-    },
-    "node_modules/micromark-factory-space/node_modules/micromark-util-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
-      "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-title": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
-      "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-title/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-title/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-factory-whitespace": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
-      "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-factory-space": "^2.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-character": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
-      "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^1.0.0",
-        "micromark-util-types": "^1.0.0"
-      }
-    },
-    "node_modules/micromark-util-character/node_modules/micromark-util-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
-      "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-chunked": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
-      "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-classify-character": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
-      "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-combine-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
-      "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-chunked": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-decode-numeric-character-reference": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
-      "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-decode-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
-      "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "decode-named-character-reference": "^1.0.0",
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-decode-numeric-character-reference": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-encode": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
-      "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-events-to-acorn": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
-      "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/acorn": "^4.0.0",
-        "@types/estree": "^1.0.0",
-        "@types/unist": "^3.0.0",
-        "devlop": "^1.0.0",
-        "estree-util-visit": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "vfile-message": "^4.0.0"
-      }
-    },
-    "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-html-tag-name": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
-      "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-normalize-identifier": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
-      "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-resolve-all": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
-      "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-sanitize-uri": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
-      "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-encode": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-subtokenize": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
-      "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "devlop": "^1.0.0",
-        "micromark-util-chunked": "^2.0.0",
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-symbol": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
-      "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark-util-types": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
-      "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromark/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-character": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "micromark-util-symbol": "^2.0.0",
-        "micromark-util-types": "^2.0.0"
-      }
-    },
-    "node_modules/micromark/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
-      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-      "license": "MIT",
-      "dependencies": {
-        "braces": "^3.0.3",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-      "license": "MIT",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.33.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
-      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.18",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
-      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "~1.33.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/mimic-response": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
-      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/mini-css-extract-plugin": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz",
-      "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==",
-      "license": "MIT",
-      "dependencies": {
-        "schema-utils": "^4.0.0",
-        "tapable": "^2.2.1"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.0.0"
-      }
-    },
-    "node_modules/minimalistic-assert": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-      "license": "ISC"
-    },
-    "node_modules/minimatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
-      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/mkdirp": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
-      "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==",
-      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
-      "license": "MIT/X11",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/mkdirp-classic": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
-      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
-      "license": "MIT"
-    },
-    "node_modules/mlly": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz",
-      "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==",
-      "license": "MIT",
-      "dependencies": {
-        "acorn": "^8.12.1",
-        "pathe": "^1.1.2",
-        "pkg-types": "^1.2.0",
-        "ufo": "^1.5.4"
-      }
-    },
-    "node_modules/mrmime": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
-      "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-      "license": "MIT"
-    },
-    "node_modules/multicast-dns": {
-      "version": "7.2.5",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
-      "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
-      "license": "MIT",
-      "dependencies": {
-        "dns-packet": "^5.2.2",
-        "thunky": "^1.0.2"
-      },
-      "bin": {
-        "multicast-dns": "cli.js"
-      }
-    },
-    "node_modules/nanoid": {
-      "version": "3.3.7",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "bin": {
-        "nanoid": "bin/nanoid.cjs"
-      },
-      "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-      }
-    },
-    "node_modules/napi-build-utils": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
-      "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
-      "license": "MIT"
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
-      "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "license": "MIT"
-    },
-    "node_modules/no-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
-      "license": "MIT",
-      "dependencies": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/node-abi": {
-      "version": "3.71.0",
-      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz",
-      "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==",
-      "license": "MIT",
-      "dependencies": {
-        "semver": "^7.3.5"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-addon-api": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
-      "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
-      "license": "MIT"
-    },
-    "node_modules/node-emoji": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
-      "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
-      "license": "MIT",
-      "dependencies": {
-        "@sindresorhus/is": "^4.6.0",
-        "char-regex": "^1.0.2",
-        "emojilib": "^2.4.0",
-        "skin-tone": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/node-forge": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
-      "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
-      "license": "(BSD-3-Clause OR GPL-2.0)",
-      "engines": {
-        "node": ">= 6.13.0"
-      }
-    },
-    "node_modules/node-releases": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
-      "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
-      "license": "MIT"
-    },
-    "node_modules/nopt": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
-      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
-      "license": "MIT",
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-range": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-url": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
-      "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/not": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz",
-      "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA=="
-    },
-    "node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/nprogress": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
-      "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
-      "license": "MIT"
-    },
-    "node_modules/nth-check": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
-      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/null-loader": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz",
-      "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==",
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/null-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/null-loader/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/null-loader/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/null-loader/node_modules/schema-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
-      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
-      "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
-      "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.5",
-        "define-properties": "^1.2.1",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
-      "license": "MIT"
-    },
-    "node_modules/on-finished": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
-      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
-      "license": "MIT",
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-      "license": "ISC",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/onetime": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "license": "MIT",
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/oniguruma-to-js": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz",
-      "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "regex": "^4.3.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/antfu"
-      }
-    },
-    "node_modules/open": {
-      "version": "8.4.2",
-      "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
-      "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
-      "license": "MIT",
-      "dependencies": {
-        "define-lazy-prop": "^2.0.0",
-        "is-docker": "^2.1.1",
-        "is-wsl": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/opener": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
-      "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
-      "license": "(WTFPL OR MIT)",
-      "bin": {
-        "opener": "bin/opener-bin.js"
-      }
-    },
-    "node_modules/p-cancelable": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
-      "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12.20"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
-      "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
-      "license": "MIT",
-      "dependencies": {
-        "yocto-queue": "^1.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
-      "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^4.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-map": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
-      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
-      "license": "MIT",
-      "dependencies": {
-        "aggregate-error": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/p-retry": {
-      "version": "4.6.2",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
-      "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/retry": "0.12.0",
-        "retry": "^0.13.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/package-json": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz",
-      "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==",
-      "license": "MIT",
-      "dependencies": {
-        "got": "^12.1.0",
-        "registry-auth-token": "^5.0.1",
-        "registry-url": "^6.0.0",
-        "semver": "^7.3.7"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/package-manager-detector": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.2.tgz",
-      "integrity": "sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==",
-      "license": "MIT"
-    },
-    "node_modules/param-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
-      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
-      "license": "MIT",
-      "dependencies": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "license": "MIT",
-      "dependencies": {
-        "callsites": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/parse-entities": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
-      "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "character-entities": "^2.0.0",
-        "character-entities-legacy": "^3.0.0",
-        "character-reference-invalid": "^2.0.0",
-        "decode-named-character-reference": "^1.0.0",
-        "is-alphanumerical": "^2.0.0",
-        "is-decimal": "^2.0.0",
-        "is-hexadecimal": "^2.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/parse-entities/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/parse-json": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
-      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.0.0",
-        "error-ex": "^1.3.1",
-        "json-parse-even-better-errors": "^2.3.0",
-        "lines-and-columns": "^1.1.6"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/parse-numeric-range": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz",
-      "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==",
-      "license": "ISC"
-    },
-    "node_modules/parse5": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
-      "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
-      "license": "MIT",
-      "dependencies": {
-        "entities": "^4.5.0"
-      },
-      "funding": {
-        "url": "https://github.com/inikulin/parse5?sponsor=1"
-      }
-    },
-    "node_modules/parse5-htmlparser2-tree-adapter": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
-      "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
-      "license": "MIT",
-      "dependencies": {
-        "domhandler": "^5.0.3",
-        "parse5": "^7.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/inikulin/parse5?sponsor=1"
-      }
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/pascal-case": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
-      "license": "MIT",
-      "dependencies": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/path-data-parser": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz",
-      "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==",
-      "license": "MIT"
-    },
-    "node_modules/path-exists": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
-      "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
-      "license": "(WTFPL OR MIT)"
-    },
-    "node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "license": "MIT"
-    },
-    "node_modules/path-to-regexp": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
-      "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
-      "license": "MIT",
-      "dependencies": {
-        "isarray": "0.0.1"
-      }
-    },
-    "node_modules/path-type": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pathe": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
-      "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
-      "license": "MIT"
-    },
-    "node_modules/picocolors": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
-      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
-      "license": "ISC"
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
-      "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/pkg-types": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz",
-      "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==",
-      "license": "MIT",
-      "dependencies": {
-        "confbox": "^0.1.8",
-        "mlly": "^1.7.2",
-        "pathe": "^1.1.2"
-      }
-    },
-    "node_modules/pkg-up": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
-      "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pkg-up/node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "license": "MIT",
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/pkg-up/node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pkg-up/node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/points-on-curve": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz",
-      "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==",
-      "license": "MIT"
-    },
-    "node_modules/points-on-path": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz",
-      "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
-      "license": "MIT",
-      "dependencies": {
-        "path-data-parser": "0.1.0",
-        "points-on-curve": "0.2.0"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "8.4.47",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
-      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "nanoid": "^3.3.7",
-        "picocolors": "^1.1.0",
-        "source-map-js": "^1.2.1"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >=14"
-      }
-    },
-    "node_modules/postcss-calc": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
-      "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.11",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.2"
-      }
-    },
-    "node_modules/postcss-colormin": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
-      "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.3",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-convert-values": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
-      "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-discard-comments": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz",
-      "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-discard-duplicates": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz",
-      "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-discard-empty": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz",
-      "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-discard-overridden": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz",
-      "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-discard-unused": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz",
-      "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.16"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-loader": {
-      "version": "7.3.4",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz",
-      "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==",
-      "license": "MIT",
-      "dependencies": {
-        "cosmiconfig": "^8.3.5",
-        "jiti": "^1.20.0",
-        "semver": "^7.5.4"
-      },
-      "engines": {
-        "node": ">= 14.15.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "postcss": "^7.0.0 || ^8.0.1",
-        "webpack": "^5.0.0"
-      }
-    },
-    "node_modules/postcss-merge-idents": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz",
-      "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==",
-      "license": "MIT",
-      "dependencies": {
-        "cssnano-utils": "^4.0.2",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-merge-longhand": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz",
-      "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^6.1.1"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-merge-rules": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz",
-      "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^4.0.2",
-        "postcss-selector-parser": "^6.0.16"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-minify-font-values": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz",
-      "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-minify-gradients": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz",
-      "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==",
-      "license": "MIT",
-      "dependencies": {
-        "colord": "^2.9.3",
-        "cssnano-utils": "^4.0.2",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-minify-params": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz",
-      "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "cssnano-utils": "^4.0.2",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-minify-selectors": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz",
-      "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.16"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-modules-extract-imports": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
-      "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
-      "license": "ISC",
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-modules-local-by-default": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
-      "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
-      "license": "MIT",
-      "dependencies": {
-        "icss-utils": "^5.0.0",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.1.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-modules-scope": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
-      "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
-      "license": "ISC",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.4"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-modules-values": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
-      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
-      "license": "ISC",
-      "dependencies": {
-        "icss-utils": "^5.0.0"
-      },
-      "engines": {
-        "node": "^10 || ^12 || >= 14"
-      },
-      "peerDependencies": {
-        "postcss": "^8.1.0"
-      }
-    },
-    "node_modules/postcss-normalize-charset": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz",
-      "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-display-values": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz",
-      "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-positions": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz",
-      "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-repeat-style": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz",
-      "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-string": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz",
-      "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-timing-functions": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz",
-      "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-unicode": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz",
-      "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-url": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz",
-      "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-normalize-whitespace": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz",
-      "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-ordered-values": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz",
-      "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==",
-      "license": "MIT",
-      "dependencies": {
-        "cssnano-utils": "^4.0.2",
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-reduce-idents": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz",
-      "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-reduce-initial": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz",
-      "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "caniuse-api": "^3.0.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-reduce-transforms": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz",
-      "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
-      "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
-      "license": "MIT",
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-sort-media-queries": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz",
-      "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==",
-      "license": "MIT",
-      "dependencies": {
-        "sort-css-media-queries": "2.2.0"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.23"
-      }
-    },
-    "node_modules/postcss-svgo": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz",
-      "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-value-parser": "^4.2.0",
-        "svgo": "^3.2.0"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >= 18"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-unique-selectors": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz",
-      "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==",
-      "license": "MIT",
-      "dependencies": {
-        "postcss-selector-parser": "^6.0.16"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "license": "MIT"
-    },
-    "node_modules/postcss-zindex": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz",
-      "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==",
-      "license": "MIT",
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/prebuild-install": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
-      "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
-      "license": "MIT",
-      "dependencies": {
-        "detect-libc": "^2.0.0",
-        "expand-template": "^2.0.3",
-        "github-from-package": "0.0.0",
-        "minimist": "^1.2.3",
-        "mkdirp-classic": "^0.5.3",
-        "napi-build-utils": "^1.0.1",
-        "node-abi": "^3.3.0",
-        "pump": "^3.0.0",
-        "rc": "^1.2.7",
-        "simple-get": "^4.0.0",
-        "tar-fs": "^2.0.0",
-        "tunnel-agent": "^0.6.0"
-      },
-      "bin": {
-        "prebuild-install": "bin.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/prebuild-install/node_modules/tar-fs": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
-      "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
-      "license": "MIT",
-      "dependencies": {
-        "chownr": "^1.1.1",
-        "mkdirp-classic": "^0.5.2",
-        "pump": "^3.0.0",
-        "tar-stream": "^2.1.4"
-      }
-    },
-    "node_modules/prebuild-install/node_modules/tar-stream": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-      "license": "MIT",
-      "dependencies": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
-        "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pretty-error": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
-      "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
-      "license": "MIT",
-      "dependencies": {
-        "lodash": "^4.17.20",
-        "renderkid": "^3.0.0"
-      }
-    },
-    "node_modules/pretty-time": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
-      "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/prism-react-renderer": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz",
-      "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/prismjs": "^1.26.0",
-        "clsx": "^2.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=16.0.0"
-      }
-    },
-    "node_modules/prismjs": {
-      "version": "1.29.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
-      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "license": "MIT"
-    },
-    "node_modules/prompts": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
-      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
-      "license": "MIT",
-      "dependencies": {
-        "kleur": "^3.0.3",
-        "sisteransi": "^1.0.5"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/prop-types": {
-      "version": "15.8.1",
-      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.4.0",
-        "object-assign": "^4.1.1",
-        "react-is": "^16.13.1"
-      }
-    },
-    "node_modules/property-information": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
-      "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
-      "license": "MIT",
-      "dependencies": {
-        "xtend": "^4.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/proto-list": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
-      "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
-      "license": "ISC"
-    },
-    "node_modules/proxy-addr": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-      "license": "MIT",
-      "dependencies": {
-        "forwarded": "0.2.0",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/proxy-addr/node_modules/ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/pump": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
-      "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
-      "license": "MIT",
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
-      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/punycode.js": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
-      "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pupa": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
-      "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
-      "license": "MIT",
-      "dependencies": {
-        "escape-goat": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12.20"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.13.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
-      "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "side-channel": "^1.0.6"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/queue": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
-      "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "~2.0.3"
-      }
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/queue-tick": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
-      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
-      "license": "MIT"
-    },
-    "node_modules/quick-lru": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
-      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
-      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
-      "license": "MIT",
-      "dependencies": {
-        "bytes": "3.1.2",
-        "http-errors": "2.0.0",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/bytes": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
-      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "license": "MIT",
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
-      "dependencies": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
-      },
-      "bin": {
-        "rc": "cli.js"
-      }
-    },
-    "node_modules/rc/node_modules/strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-dev-utils": {
-      "version": "12.0.1",
-      "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
-      "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.16.0",
-        "address": "^1.1.2",
-        "browserslist": "^4.18.1",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "detect-port-alt": "^1.1.6",
-        "escape-string-regexp": "^4.0.0",
-        "filesize": "^8.0.6",
-        "find-up": "^5.0.0",
-        "fork-ts-checker-webpack-plugin": "^6.5.0",
-        "global-modules": "^2.0.0",
-        "globby": "^11.0.4",
-        "gzip-size": "^6.0.0",
-        "immer": "^9.0.7",
-        "is-root": "^2.1.0",
-        "loader-utils": "^3.2.0",
-        "open": "^8.4.0",
-        "pkg-up": "^3.1.0",
-        "prompts": "^2.4.2",
-        "react-error-overlay": "^6.0.11",
-        "recursive-readdir": "^2.2.2",
-        "shell-quote": "^1.7.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/find-up": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/loader-utils": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz",
-      "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 12.13.0"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/locate-path": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/p-limit": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/p-locate": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.0"
-      },
-      "peerDependencies": {
-        "react": "^18.2.0"
-      }
-    },
-    "node_modules/react-error-overlay": {
-      "version": "6.0.11",
-      "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
-      "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==",
-      "license": "MIT"
-    },
-    "node_modules/react-fast-compare": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
-      "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==",
-      "license": "MIT"
-    },
-    "node_modules/react-helmet-async": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz",
-      "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@babel/runtime": "^7.12.5",
-        "invariant": "^2.2.4",
-        "prop-types": "^15.7.2",
-        "react-fast-compare": "^3.2.0",
-        "shallowequal": "^1.1.0"
-      },
-      "peerDependencies": {
-        "react": "^16.6.0 || ^17.0.0 || ^18.0.0",
-        "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/react-is": {
-      "version": "16.13.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
-      "license": "MIT"
-    },
-    "node_modules/react-json-view-lite": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz",
-      "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14"
-      },
-      "peerDependencies": {
-        "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/react-loadable": {
-      "name": "@docusaurus/react-loadable",
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
-      "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/react": "*"
-      },
-      "peerDependencies": {
-        "react": "*"
-      }
-    },
-    "node_modules/react-loadable-ssr-addon-v5-slorber": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz",
-      "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.10.3"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      },
-      "peerDependencies": {
-        "react-loadable": "*",
-        "webpack": ">=4.41.1 || 5.x"
-      }
-    },
-    "node_modules/react-router": {
-      "version": "5.3.4",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
-      "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.12.13",
-        "history": "^4.9.0",
-        "hoist-non-react-statics": "^3.1.0",
-        "loose-envify": "^1.3.1",
-        "path-to-regexp": "^1.7.0",
-        "prop-types": "^15.6.2",
-        "react-is": "^16.6.0",
-        "tiny-invariant": "^1.0.2",
-        "tiny-warning": "^1.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=15"
-      }
-    },
-    "node_modules/react-router-config": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz",
-      "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.1.2"
-      },
-      "peerDependencies": {
-        "react": ">=15",
-        "react-router": ">=5"
-      }
-    },
-    "node_modules/react-router-dom": {
-      "version": "6.22.1",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz",
-      "integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==",
-      "license": "MIT",
-      "dependencies": {
-        "@remix-run/router": "1.15.1",
-        "react-router": "6.22.1"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=16.8",
-        "react-dom": ">=16.8"
-      }
-    },
-    "node_modules/react-router-dom/node_modules/react-router": {
-      "version": "6.22.1",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz",
-      "integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@remix-run/router": "1.15.1"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "react": ">=16.8"
-      }
-    },
-    "node_modules/react-waypoint": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/react-waypoint/-/react-waypoint-10.3.0.tgz",
-      "integrity": "sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.12.5",
-        "consolidated-events": "^1.1.0 || ^2.0.0",
-        "prop-types": "^15.0.0",
-        "react-is": "^17.0.1 || ^18.0.0"
-      },
-      "peerDependencies": {
-        "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/react-waypoint/node_modules/react-is": {
-      "version": "18.3.1",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
-      "license": "MIT"
-    },
-    "node_modules/readable-stream": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/readdirp": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "license": "MIT",
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/reading-time": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz",
-      "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==",
-      "license": "MIT"
-    },
-    "node_modules/rechoir": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
-      "dependencies": {
-        "resolve": "^1.1.6"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/recma-build-jsx": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz",
-      "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "estree-util-build-jsx": "^3.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/recma-jsx": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz",
-      "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==",
-      "license": "MIT",
-      "dependencies": {
-        "acorn-jsx": "^5.0.0",
-        "estree-util-to-js": "^2.0.0",
-        "recma-parse": "^1.0.0",
-        "recma-stringify": "^1.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/recma-parse": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz",
-      "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "esast-util-from-js": "^2.0.0",
-        "unified": "^11.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/recma-stringify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz",
-      "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "estree-util-to-js": "^2.0.0",
-        "unified": "^11.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/recursive-readdir": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
-      "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
-      "license": "MIT",
-      "dependencies": {
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
-      "license": "MIT"
-    },
-    "node_modules/regenerate-unicode-properties": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
-      "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
-      "license": "MIT",
-      "dependencies": {
-        "regenerate": "^1.4.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.14.1",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
-      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
-      "license": "MIT"
-    },
-    "node_modules/regenerator-transform": {
-      "version": "0.15.2",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
-      "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "node_modules/regex": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/regex/-/regex-4.4.0.tgz",
-      "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/regexpu-core": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
-      "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
-      "license": "MIT",
-      "dependencies": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.2.0",
-        "regjsgen": "^0.8.0",
-        "regjsparser": "^0.11.0",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/registry-auth-token": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
-      "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@pnpm/npm-conf": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/registry-url": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
-      "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
-      "license": "MIT",
-      "dependencies": {
-        "rc": "1.2.8"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/regjsgen": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
-      "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
-      "license": "MIT"
-    },
-    "node_modules/regjsparser": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz",
-      "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "jsesc": "~3.0.2"
-      },
-      "bin": {
-        "regjsparser": "bin/parser"
-      }
-    },
-    "node_modules/rehype-parse": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz",
-      "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==",
-      "license": "MIT",
-      "dependencies": {
-        "hast-util-from-parse5": "^6.0.0",
-        "parse5": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/rehype-parse/node_modules/parse5": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
-      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
-      "license": "MIT"
-    },
-    "node_modules/rehype-raw": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
-      "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "hast-util-raw": "^9.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/rehype-recma": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz",
-      "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "^1.0.0",
-        "@types/hast": "^3.0.0",
-        "hast-util-to-estree": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/relateurl": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
-      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/remark-directive": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz",
-      "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-directive": "^3.0.0",
-        "micromark-extension-directive": "^3.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-emoji": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz",
-      "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.2",
-        "emoticon": "^4.0.1",
-        "mdast-util-find-and-replace": "^3.0.1",
-        "node-emoji": "^2.1.0",
-        "unified": "^11.0.4"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      }
-    },
-    "node_modules/remark-frontmatter": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz",
-      "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-frontmatter": "^2.0.0",
-        "micromark-extension-frontmatter": "^2.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-gfm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
-      "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-gfm": "^3.0.0",
-        "micromark-extension-gfm": "^3.0.0",
-        "remark-parse": "^11.0.0",
-        "remark-stringify": "^11.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-mdx": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz",
-      "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==",
-      "license": "MIT",
-      "dependencies": {
-        "mdast-util-mdx": "^3.0.0",
-        "micromark-extension-mdxjs": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-parse": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
-      "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-from-markdown": "^2.0.0",
-        "micromark-util-types": "^2.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-rehype": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
-      "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/hast": "^3.0.0",
-        "@types/mdast": "^4.0.0",
-        "mdast-util-to-hast": "^13.0.0",
-        "unified": "^11.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-stringify": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
-      "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/mdast": "^4.0.0",
-        "mdast-util-to-markdown": "^2.0.0",
-        "unified": "^11.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/renderkid": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
-      "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
-      "license": "MIT",
-      "dependencies": {
-        "css-select": "^4.1.3",
-        "dom-converter": "^0.2.0",
-        "htmlparser2": "^6.1.0",
-        "lodash": "^4.17.21",
-        "strip-ansi": "^6.0.1"
-      }
-    },
-    "node_modules/renderkid/node_modules/css-select": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.0.1",
-        "domhandler": "^4.3.1",
-        "domutils": "^2.8.0",
-        "nth-check": "^2.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/renderkid/node_modules/dom-serializer": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.2.0",
-        "entities": "^2.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/domhandler": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "domelementtype": "^2.2.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/domutils": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "dom-serializer": "^1.0.1",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domutils?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/entities": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-      "license": "BSD-2-Clause",
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/renderkid/node_modules/htmlparser2": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
-      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
-      "funding": [
-        "https://github.com/fb55/htmlparser2?sponsor=1",
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "domhandler": "^4.0.0",
-        "domutils": "^2.5.2",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/require-from-string": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
-      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/require-like": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
-      "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "license": "MIT"
-    },
-    "node_modules/resolve": {
-      "version": "1.22.8",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
-      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
-      "license": "MIT",
-      "dependencies": {
-        "is-core-module": "^2.13.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      },
-      "bin": {
-        "resolve": "bin/resolve"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/resolve-alpn": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
-      "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
-      "license": "MIT"
-    },
-    "node_modules/resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-pathname": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
-      "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==",
-      "license": "MIT"
-    },
-    "node_modules/responselike": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
-      "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
-      "license": "MIT",
-      "dependencies": {
-        "lowercase-keys": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.13.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
-      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "license": "MIT",
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "deprecated": "Rimraf versions prior to v4 are no longer supported",
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/robust-predicates": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
-      "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
-      "license": "Unlicense"
-    },
-    "node_modules/roughjs": {
-      "version": "4.6.6",
-      "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz",
-      "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
-      "license": "MIT",
-      "dependencies": {
-        "hachure-fill": "^0.5.2",
-        "path-data-parser": "^0.1.0",
-        "points-on-curve": "^0.2.0",
-        "points-on-path": "^0.2.1"
-      }
-    },
-    "node_modules/rtl-detect": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz",
-      "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/rtlcss": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz",
-      "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==",
-      "license": "MIT",
-      "dependencies": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0",
-        "postcss": "^8.4.21",
-        "strip-json-comments": "^3.1.1"
-      },
-      "bin": {
-        "rtlcss": "bin/rtlcss.js"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/rw": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
-      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "license": "MIT"
-    },
-    "node_modules/sax": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
-      "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
-      "license": "ISC"
-    },
-    "node_modules/scheduler": {
-      "version": "0.23.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
-      "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      }
-    },
-    "node_modules/schema-utils": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
-      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.9",
-        "ajv": "^8.9.0",
-        "ajv-formats": "^2.1.1",
-        "ajv-keywords": "^5.1.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/search-insights": {
-      "version": "2.17.2",
-      "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz",
-      "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==",
-      "license": "MIT",
-      "peer": true
-    },
-    "node_modules/section-matter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
-      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
-      "license": "MIT",
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
-      "license": "MIT"
-    },
-    "node_modules/selfsigned": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
-      "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node-forge": "^1.3.0",
-        "node-forge": "^1"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/semver-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
-      "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
-      "license": "MIT",
-      "dependencies": {
-        "semver": "^7.3.5"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.19.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
-      "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
-      "license": "MIT",
-      "dependencies": {
-        "debug": "2.6.9",
-        "depd": "2.0.0",
-        "destroy": "1.2.0",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "2.0.0",
-        "mime": "1.6.0",
-        "ms": "2.1.3",
-        "on-finished": "2.4.1",
-        "range-parser": "~1.2.1",
-        "statuses": "2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/send/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/send/node_modules/debug/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/send/node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/send/node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serialize-javascript": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
-      "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/serve-handler": {
-      "version": "6.1.6",
-      "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz",
-      "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "bytes": "3.0.0",
-        "content-disposition": "0.5.2",
-        "mime-types": "2.1.18",
-        "minimatch": "3.1.2",
-        "path-is-inside": "1.0.2",
-        "path-to-regexp": "3.3.0",
-        "range-parser": "1.2.0"
-      }
-    },
-    "node_modules/serve-handler/node_modules/path-to-regexp": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
-      "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==",
-      "license": "MIT"
-    },
-    "node_modules/serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
-      "license": "MIT",
-      "dependencies": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-      "license": "MIT",
-      "dependencies": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": ">= 1.4.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-      "license": "ISC"
-    },
-    "node_modules/serve-index/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-      "license": "MIT"
-    },
-    "node_modules/serve-index/node_modules/setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "license": "ISC"
-    },
-    "node_modules/serve-index/node_modules/statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-static": {
-      "version": "1.16.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
-      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
-      "license": "MIT",
-      "dependencies": {
-        "encodeurl": "~2.0.0",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.19.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/set-function-length": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
-      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
-      "license": "MIT",
-      "dependencies": {
-        "define-data-property": "^1.1.4",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.4",
-        "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-      "license": "ISC"
-    },
-    "node_modules/shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "license": "MIT",
-      "dependencies": {
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shallowequal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
-      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
-      "license": "MIT"
-    },
-    "node_modules/sharp": {
-      "version": "0.32.6",
-      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
-      "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
-      "hasInstallScript": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "color": "^4.2.3",
-        "detect-libc": "^2.0.2",
-        "node-addon-api": "^6.1.0",
-        "prebuild-install": "^7.1.1",
-        "semver": "^7.5.4",
-        "simple-get": "^4.0.1",
-        "tar-fs": "^3.0.4",
-        "tunnel-agent": "^0.6.0"
-      },
-      "engines": {
-        "node": ">=14.15.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/libvips"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shell-quote": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
-      "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/shelljs": {
-      "version": "0.8.5",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
-      "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "glob": "^7.0.0",
-        "interpret": "^1.0.0",
-        "rechoir": "^0.6.2"
-      },
-      "bin": {
-        "shjs": "bin/shjs"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/shiki": {
-      "version": "1.22.2",
-      "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz",
-      "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@shikijs/core": "1.22.2",
-        "@shikijs/engine-javascript": "1.22.2",
-        "@shikijs/engine-oniguruma": "1.22.2",
-        "@shikijs/types": "1.22.2",
-        "@shikijs/vscode-textmate": "^9.3.0",
-        "@types/hast": "^3.0.4"
-      }
-    },
-    "node_modules/side-channel": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
-      "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
-      "license": "MIT",
-      "dependencies": {
-        "call-bind": "^1.0.7",
-        "es-errors": "^1.3.0",
-        "get-intrinsic": "^1.2.4",
-        "object-inspect": "^1.13.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/signal-exit": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-      "license": "ISC"
-    },
-    "node_modules/simple-concat": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
-      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/simple-get": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
-      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "decompress-response": "^6.0.0",
-        "once": "^1.3.1",
-        "simple-concat": "^1.0.0"
-      }
-    },
-    "node_modules/simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
-      "license": "MIT",
-      "dependencies": {
-        "is-arrayish": "^0.3.1"
-      }
-    },
-    "node_modules/simple-swizzle/node_modules/is-arrayish": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-      "license": "MIT"
-    },
-    "node_modules/sirv": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
-      "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@polka/url": "^1.0.0-next.24",
-        "mrmime": "^2.0.0",
-        "totalist": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/sisteransi": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
-      "license": "MIT"
-    },
-    "node_modules/sitemap": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz",
-      "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "^17.0.5",
-        "@types/sax": "^1.2.1",
-        "arg": "^5.0.0",
-        "sax": "^1.2.4"
-      },
-      "bin": {
-        "sitemap": "dist/cli.js"
-      },
-      "engines": {
-        "node": ">=12.0.0",
-        "npm": ">=5.6.0"
-      }
-    },
-    "node_modules/sitemap/node_modules/@types/node": {
-      "version": "17.0.45",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
-      "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
-      "license": "MIT"
-    },
-    "node_modules/skin-tone": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz",
-      "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==",
-      "license": "MIT",
-      "dependencies": {
-        "unicode-emoji-modifier-base": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/snake-case": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
-      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
-      "license": "MIT",
-      "dependencies": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node_modules/sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      }
-    },
-    "node_modules/sockjs/node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "license": "MIT",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/sort-css-media-queries": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz",
-      "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 6.3.0"
-      }
-    },
-    "node_modules/source-map": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/source-map-js": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-support": {
-      "version": "0.5.21",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-      "license": "MIT",
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/source-map-support/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/space-separated-tokens": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
-      "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "license": "MIT",
-      "dependencies": {
-        "debug": "^4.1.0",
-        "handle-thing": "^2.0.0",
-        "http-deceiver": "^1.2.7",
-        "select-hose": "^2.0.0",
-        "spdy-transport": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/spdy-transport": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
-      "license": "MIT",
-      "dependencies": {
-        "debug": "^4.1.0",
-        "detect-node": "^2.0.4",
-        "hpack.js": "^2.1.6",
-        "obuf": "^1.1.2",
-        "readable-stream": "^3.0.6",
-        "wbuf": "^1.7.3"
-      }
-    },
-    "node_modules/sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
-      "license": "BSD-3-Clause"
-    },
-    "node_modules/srcset": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz",
-      "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
-      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/std-env": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
-      "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
-      "license": "MIT"
-    },
-    "node_modules/streamx": {
-      "version": "2.20.1",
-      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
-      "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-fifo": "^1.3.2",
-        "queue-tick": "^1.0.1",
-        "text-decoder": "^1.1.0"
-      },
-      "optionalDependencies": {
-        "bare-events": "^2.2.0"
-      }
-    },
-    "node_modules/string_decoder": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
-      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-      "license": "MIT",
-      "dependencies": {
-        "safe-buffer": "~5.2.0"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
-      "license": "MIT",
-      "dependencies": {
-        "eastasianwidth": "^0.2.0",
-        "emoji-regex": "^9.2.2",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/string-width/node_modules/ansi-regex": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/string-width/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/stringify-entities": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
-      "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
-      "license": "MIT",
-      "dependencies": {
-        "character-entities-html4": "^2.0.0",
-        "character-entities-legacy": "^3.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/stringify-object": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
-      "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "get-own-enumerable-property-symbols": "^3.0.0",
-        "is-obj": "^1.0.1",
-        "is-regexp": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-bom-string": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
-      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-final-newline": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/style-to-object": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
-      "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
-      "license": "MIT",
-      "dependencies": {
-        "inline-style-parser": "0.2.4"
-      }
-    },
-    "node_modules/stylehacks": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz",
-      "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==",
-      "license": "MIT",
-      "dependencies": {
-        "browserslist": "^4.23.0",
-        "postcss-selector-parser": "^6.0.16"
-      },
-      "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
-      }
-    },
-    "node_modules/stylis": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
-      "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==",
-      "license": "MIT"
-    },
-    "node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/supports-preserve-symlinks-flag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/svg-parser": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
-      "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
-      "license": "MIT"
-    },
-    "node_modules/svgo": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
-      "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
-      "license": "MIT",
-      "dependencies": {
-        "@trysound/sax": "0.2.0",
-        "commander": "^7.2.0",
-        "css-select": "^5.1.0",
-        "css-tree": "^2.3.1",
-        "css-what": "^6.1.0",
-        "csso": "^5.0.5",
-        "picocolors": "^1.0.0"
-      },
-      "bin": {
-        "svgo": "bin/svgo"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/svgo"
-      }
-    },
-    "node_modules/svgo/node_modules/commander": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tar-fs": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz",
-      "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
-      "license": "MIT",
-      "dependencies": {
-        "pump": "^3.0.0",
-        "tar-stream": "^3.1.5"
-      },
-      "optionalDependencies": {
-        "bare-fs": "^2.1.1",
-        "bare-path": "^2.1.0"
-      }
-    },
-    "node_modules/tar-stream": {
-      "version": "3.1.7",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
-      "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
-      "license": "MIT",
-      "dependencies": {
-        "b4a": "^1.6.4",
-        "fast-fifo": "^1.2.0",
-        "streamx": "^2.15.0"
-      }
-    },
-    "node_modules/terser": {
-      "version": "5.36.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
-      "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "@jridgewell/source-map": "^0.3.3",
-        "acorn": "^8.8.2",
-        "commander": "^2.20.0",
-        "source-map-support": "~0.5.20"
-      },
-      "bin": {
-        "terser": "bin/terser"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/terser-webpack-plugin": {
-      "version": "5.3.10",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
-      "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
-      "license": "MIT",
-      "dependencies": {
-        "@jridgewell/trace-mapping": "^0.3.20",
-        "jest-worker": "^27.4.5",
-        "schema-utils": "^3.1.1",
-        "serialize-javascript": "^6.0.1",
-        "terser": "^5.26.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^5.1.0"
-      },
-      "peerDependenciesMeta": {
-        "@swc/core": {
-          "optional": true
-        },
-        "esbuild": {
-          "optional": true
-        },
-        "uglify-js": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
-      "version": "27.5.1",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
-      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^8.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
-      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/supports-color": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
-      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/supports-color?sponsor=1"
-      }
-    },
-    "node_modules/terser/node_modules/commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "license": "MIT"
-    },
-    "node_modules/text-decoder": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz",
-      "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "license": "MIT"
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "license": "MIT"
-    },
-    "node_modules/tiny-invariant": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
-      "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
-      "license": "MIT"
-    },
-    "node_modules/tiny-warning": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
-      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
-      "license": "MIT"
-    },
-    "node_modules/tinyexec": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz",
-      "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==",
-      "license": "MIT"
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/to-vfile": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz",
-      "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==",
-      "license": "MIT",
-      "dependencies": {
-        "is-buffer": "^2.0.0",
-        "vfile": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/to-vfile/node_modules/@types/unist": {
-      "version": "2.0.11",
-      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
-      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
-      "license": "MIT"
-    },
-    "node_modules/to-vfile/node_modules/unist-util-stringify-position": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
-      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.2"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/to-vfile/node_modules/vfile": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
-      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "is-buffer": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0",
-        "vfile-message": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/to-vfile/node_modules/vfile-message": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
-      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
-      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/totalist": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
-      "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/trim-lines": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
-      "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/trough": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
-      "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/ts-dedent": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
-      "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6.10"
-      }
-    },
-    "node_modules/tslib": {
-      "version": "2.8.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
-      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
-      "license": "0BSD"
-    },
-    "node_modules/tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/type-fest": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
-      "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=12.20"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "license": "MIT",
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/type-is/node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/type-is/node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "license": "MIT",
-      "dependencies": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "node_modules/typedoc": {
-      "version": "0.26.11",
-      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz",
-      "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "lunr": "^2.3.9",
-        "markdown-it": "^14.1.0",
-        "minimatch": "^9.0.5",
-        "shiki": "^1.16.2",
-        "yaml": "^2.5.1"
-      },
-      "bin": {
-        "typedoc": "bin/typedoc"
-      },
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x"
-      }
-    },
-    "node_modules/typedoc-plugin-markdown": {
-      "version": "4.2.10",
-      "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.2.10.tgz",
-      "integrity": "sha512-PLX3pc1/7z13UJm4TDE9vo9jWGcClFUErXXtd5LdnoLjV6mynPpqZLU992DwMGFSRqJFZeKbVyqlNNeNHnk2tQ==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 18"
-      },
-      "peerDependencies": {
-        "typedoc": "0.26.x"
-      }
-    },
-    "node_modules/typedoc/node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/typedoc/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "5.6.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
-      "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
-      "license": "Apache-2.0",
-      "peer": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=14.17"
-      }
-    },
-    "node_modules/uc.micro": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
-      "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/ufo": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
-      "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
-      "license": "MIT"
-    },
-    "node_modules/undici-types": {
-      "version": "6.19.8",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
-      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
-      "license": "MIT"
-    },
-    "node_modules/unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
-      "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-emoji-modifier-base": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
-      "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
-      "license": "MIT",
-      "dependencies": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-value-ecmascript": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
-      "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-property-aliases-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unified": {
-      "version": "11.0.5",
-      "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
-      "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "bail": "^2.0.0",
-        "devlop": "^1.0.0",
-        "extend": "^3.0.0",
-        "is-plain-obj": "^4.0.0",
-        "trough": "^2.0.0",
-        "vfile": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unique-string": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
-      "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
-      "license": "MIT",
-      "dependencies": {
-        "crypto-random-string": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/unist-util-find-after": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz",
-      "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==",
-      "license": "MIT",
-      "dependencies": {
-        "unist-util-is": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-is": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
-      "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-position": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
-      "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-position-from-estree": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
-      "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-stringify-position": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
-      "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-visit": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
-      "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "unist-util-is": "^6.0.0",
-        "unist-util-visit-parents": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-visit-parents": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
-      "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "unist-util-is": "^6.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-visit-parents/node_modules/unist-util-is": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
-      "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/unist-util-visit/node_modules/unist-util-is": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
-      "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/universalify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
-      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/update-browserslist-db": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
-      "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/browserslist"
-        },
-        {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/browserslist"
-        },
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/ai"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "escalade": "^3.2.0",
-        "picocolors": "^1.1.0"
-      },
-      "bin": {
-        "update-browserslist-db": "cli.js"
-      },
-      "peerDependencies": {
-        "browserslist": ">= 4.21.0"
-      }
-    },
-    "node_modules/update-notifier": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
-      "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boxen": "^7.0.0",
-        "chalk": "^5.0.1",
-        "configstore": "^6.0.0",
-        "has-yarn": "^3.0.0",
-        "import-lazy": "^4.0.0",
-        "is-ci": "^3.0.1",
-        "is-installed-globally": "^0.4.0",
-        "is-npm": "^6.0.0",
-        "is-yarn-global": "^0.4.0",
-        "latest-version": "^7.0.0",
-        "pupa": "^3.1.0",
-        "semver": "^7.3.7",
-        "semver-diff": "^4.0.0",
-        "xdg-basedir": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/yeoman/update-notifier?sponsor=1"
-      }
-    },
-    "node_modules/update-notifier/node_modules/boxen": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz",
-      "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-align": "^3.0.1",
-        "camelcase": "^7.0.1",
-        "chalk": "^5.2.0",
-        "cli-boxes": "^3.0.0",
-        "string-width": "^5.1.2",
-        "type-fest": "^2.13.0",
-        "widest-line": "^4.0.1",
-        "wrap-ansi": "^8.1.0"
-      },
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/update-notifier/node_modules/camelcase": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
-      "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.16"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/update-notifier/node_modules/chalk": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
-      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
-      "license": "MIT",
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/url-loader": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz",
-      "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==",
-      "license": "MIT",
-      "dependencies": {
-        "loader-utils": "^2.0.0",
-        "mime-types": "^2.1.27",
-        "schema-utils": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "file-loader": "*",
-        "webpack": "^4.0.0 || ^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "file-loader": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/url-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/url-loader/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/url-loader/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/url-loader/node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/url-loader/node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/url-loader/node_modules/schema-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
-      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-      "license": "MIT"
-    },
-    "node_modules/utila": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
-      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
-      "license": "MIT"
-    },
-    "node_modules/utility-types": {
-      "version": "3.11.0",
-      "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
-      "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/uuid": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
-      "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
-      "funding": [
-        "https://github.com/sponsors/broofa",
-        "https://github.com/sponsors/ctavan"
-      ],
-      "license": "MIT",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/value-equal": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
-      "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==",
-      "license": "MIT"
-    },
-    "node_modules/vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/vfile": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
-      "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "vfile-message": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/vfile-location": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
-      "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/vfile-message": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
-      "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/unist": "^3.0.0",
-        "unist-util-stringify-position": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/vscode-jsonrpc": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
-      "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/vscode-languageserver": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
-      "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-languageserver-protocol": "3.17.5"
-      },
-      "bin": {
-        "installServerIntoExtension": "bin/installServerIntoExtension"
-      }
-    },
-    "node_modules/vscode-languageserver-protocol": {
-      "version": "3.17.5",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
-      "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-jsonrpc": "8.2.0",
-        "vscode-languageserver-types": "3.17.5"
-      }
-    },
-    "node_modules/vscode-languageserver-textdocument": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
-      "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-languageserver-types": {
-      "version": "3.17.5",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
-      "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-uri": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
-      "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
-      "license": "MIT"
-    },
-    "node_modules/watchpack": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
-      "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
-      "license": "MIT",
-      "dependencies": {
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.1.2"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "license": "MIT",
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/web-namespaces": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
-      "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/webpack": {
-      "version": "5.96.1",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
-      "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/eslint-scope": "^3.7.7",
-        "@types/estree": "^1.0.6",
-        "@webassemblyjs/ast": "^1.12.1",
-        "@webassemblyjs/wasm-edit": "^1.12.1",
-        "@webassemblyjs/wasm-parser": "^1.12.1",
-        "acorn": "^8.14.0",
-        "browserslist": "^4.24.0",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.17.1",
-        "es-module-lexer": "^1.2.1",
-        "eslint-scope": "5.1.1",
-        "events": "^3.2.0",
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.2.11",
-        "json-parse-even-better-errors": "^2.3.1",
-        "loader-runner": "^4.2.0",
-        "mime-types": "^2.1.27",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.2.0",
-        "tapable": "^2.1.1",
-        "terser-webpack-plugin": "^5.3.10",
-        "watchpack": "^2.4.1",
-        "webpack-sources": "^3.2.3"
-      },
-      "bin": {
-        "webpack": "bin/webpack.js"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependenciesMeta": {
-        "webpack-cli": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-bundle-analyzer": {
-      "version": "4.10.2",
-      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
-      "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
-      "license": "MIT",
-      "dependencies": {
-        "@discoveryjs/json-ext": "0.5.7",
-        "acorn": "^8.0.4",
-        "acorn-walk": "^8.0.0",
-        "commander": "^7.2.0",
-        "debounce": "^1.2.1",
-        "escape-string-regexp": "^4.0.0",
-        "gzip-size": "^6.0.0",
-        "html-escaper": "^2.0.2",
-        "opener": "^1.5.2",
-        "picocolors": "^1.0.0",
-        "sirv": "^2.0.3",
-        "ws": "^7.3.1"
-      },
-      "bin": {
-        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      }
-    },
-    "node_modules/webpack-bundle-analyzer/node_modules/commander": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/webpack-dev-middleware": {
-      "version": "5.3.4",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
-      "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
-      "license": "MIT",
-      "dependencies": {
-        "colorette": "^2.0.10",
-        "memfs": "^3.4.3",
-        "mime-types": "^2.1.31",
-        "range-parser": "^1.2.1",
-        "schema-utils": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
-      }
-    },
-    "node_modules/webpack-dev-middleware/node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/webpack-dev-middleware/node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/webpack-dev-middleware/node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/webpack-dev-server": {
-      "version": "4.15.2",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz",
-      "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/bonjour": "^3.5.9",
-        "@types/connect-history-api-fallback": "^1.3.5",
-        "@types/express": "^4.17.13",
-        "@types/serve-index": "^1.9.1",
-        "@types/serve-static": "^1.13.10",
-        "@types/sockjs": "^0.3.33",
-        "@types/ws": "^8.5.5",
-        "ansi-html-community": "^0.0.8",
-        "bonjour-service": "^1.0.11",
-        "chokidar": "^3.5.3",
-        "colorette": "^2.0.10",
-        "compression": "^1.7.4",
-        "connect-history-api-fallback": "^2.0.0",
-        "default-gateway": "^6.0.3",
-        "express": "^4.17.3",
-        "graceful-fs": "^4.2.6",
-        "html-entities": "^2.3.2",
-        "http-proxy-middleware": "^2.0.3",
-        "ipaddr.js": "^2.0.1",
-        "launch-editor": "^2.6.0",
-        "open": "^8.0.9",
-        "p-retry": "^4.5.0",
-        "rimraf": "^3.0.2",
-        "schema-utils": "^4.0.0",
-        "selfsigned": "^2.1.1",
-        "serve-index": "^1.9.1",
-        "sockjs": "^0.3.24",
-        "spdy": "^4.0.2",
-        "webpack-dev-middleware": "^5.3.4",
-        "ws": "^8.13.0"
-      },
-      "bin": {
-        "webpack-dev-server": "bin/webpack-dev-server.js"
-      },
-      "engines": {
-        "node": ">= 12.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      },
-      "peerDependencies": {
-        "webpack": "^4.37.0 || ^5.0.0"
-      },
-      "peerDependenciesMeta": {
-        "webpack": {
-          "optional": true
-        },
-        "webpack-cli": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/ws": {
-      "version": "8.18.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": ">=5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/webpack-merge": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz",
-      "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
-      "license": "MIT",
-      "dependencies": {
-        "clone-deep": "^4.0.1",
-        "flat": "^5.0.2",
-        "wildcard": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=18.0.0"
-      }
-    },
-    "node_modules/webpack-sources": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
-      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
-    "node_modules/webpack/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/webpack/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/webpack/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "license": "MIT"
-    },
-    "node_modules/webpack/node_modules/mime-db": {
-      "version": "1.52.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
-      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/webpack/node_modules/mime-types": {
-      "version": "2.1.35",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
-      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "license": "MIT",
-      "dependencies": {
-        "mime-db": "1.52.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/webpack/node_modules/schema-utils": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
-      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.8",
-        "ajv": "^6.12.5",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 10.13.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/webpackbar": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz",
-      "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-escapes": "^4.3.2",
-        "chalk": "^4.1.2",
-        "consola": "^3.2.3",
-        "figures": "^3.2.0",
-        "markdown-table": "^2.0.0",
-        "pretty-time": "^1.1.0",
-        "std-env": "^3.7.0",
-        "wrap-ansi": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=14.21.3"
-      },
-      "peerDependencies": {
-        "webpack": "3 || 4 || 5"
-      }
-    },
-    "node_modules/webpackbar/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "license": "MIT"
-    },
-    "node_modules/webpackbar/node_modules/markdown-table": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
-      "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
-      "license": "MIT",
-      "dependencies": {
-        "repeat-string": "^1.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
-    "node_modules/webpackbar/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "license": "MIT",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpackbar/node_modules/wrap-ansi": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "http-parser-js": ">=0.5.1",
-        "safe-buffer": ">=5.1.0",
-        "websocket-extensions": ">=0.1.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/websocket-extensions": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
-      "license": "Apache-2.0",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/wide-align": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
-      "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^1.0.2 || 2 || 3 || 4"
-      }
-    },
-    "node_modules/wide-align/node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "license": "MIT"
-    },
-    "node_modules/wide-align/node_modules/string-width": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "license": "MIT",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/widest-line": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
-      "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
-      "license": "MIT",
-      "dependencies": {
-        "string-width": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/wildcard": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
-      "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
-      "license": "MIT"
-    },
-    "node_modules/wrap-ansi": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-      "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^6.1.0",
-        "string-width": "^5.0.1",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/ansi-regex": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/ansi-styles": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
-      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-      "license": "ISC"
-    },
-    "node_modules/write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "license": "ISC",
-      "dependencies": {
-        "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
-      }
-    },
-    "node_modules/ws": {
-      "version": "7.5.10",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
-      "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.3.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/xdg-basedir": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
-      "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/xml-js": {
-      "version": "1.6.11",
-      "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
-      "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
-      "license": "MIT",
-      "dependencies": {
-        "sax": "^1.2.4"
-      },
-      "bin": {
-        "xml-js": "bin/cli.js"
-      }
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4"
-      }
-    },
-    "node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "license": "ISC"
-    },
-    "node_modules/yaml": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
-      "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "yaml": "bin.mjs"
-      },
-      "engines": {
-        "node": ">= 14"
-      }
-    },
-    "node_modules/yocto-queue": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
-      "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12.20"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/zwitch": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
-      "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
-      "license": "MIT",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    }
-  }
-}
diff --git a/docs/sidebars.js b/docs/sidebars.js
index 530e4d53441..62c64f15dfc 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -55,7 +55,7 @@ const sidebars = {
         "community/creator-fund",
         "community/notes",
         "community/changelog",
-	"community/faq",
+        "community/faq",
         "community/contributing",
       ],
     },
diff --git a/packages/supabase/config.toml b/packages/adapter-postgres/config.toml
similarity index 100%
rename from packages/supabase/config.toml
rename to packages/adapter-postgres/config.toml
diff --git a/packages/supabase/migrations/20240318103238_remote_schema.sql b/packages/adapter-postgres/migrations/20240318103238_remote_schema.sql
similarity index 100%
rename from packages/supabase/migrations/20240318103238_remote_schema.sql
rename to packages/adapter-postgres/migrations/20240318103238_remote_schema.sql
diff --git a/packages/adapter-postgres/package.json b/packages/adapter-postgres/package.json
new file mode 100644
index 00000000000..1e123b8849a
--- /dev/null
+++ b/packages/adapter-postgres/package.json
@@ -0,0 +1,18 @@
+{
+    "name": "@ai16z/adapter-postgres",
+    "version": "0.0.1",
+    "main": "src/index.ts",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "pg": "^8.13.1"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "echo 'No build step required'",
+        "dev": "tsup --watch"
+    }
+}
diff --git a/packages/supabase/postgres-schema.sql b/packages/adapter-postgres/schema.sql
similarity index 100%
rename from packages/supabase/postgres-schema.sql
rename to packages/adapter-postgres/schema.sql
diff --git a/packages/supabase/seed.sql b/packages/adapter-postgres/seed.sql
similarity index 100%
rename from packages/supabase/seed.sql
rename to packages/adapter-postgres/seed.sql
diff --git a/packages/core/src/adapters/postgres.ts b/packages/adapter-postgres/src/index.ts
similarity index 95%
rename from packages/core/src/adapters/postgres.ts
rename to packages/adapter-postgres/src/index.ts
index da9132533c0..b081e50aea7 100644
--- a/packages/core/src/adapters/postgres.ts
+++ b/packages/adapter-postgres/src/index.ts
@@ -9,8 +9,8 @@ import {
     type Relationship,
     type UUID,
     Participant,
-} from "../core/types.ts";
-import { DatabaseAdapter } from "../core/database.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { DatabaseAdapter } from "@ai16z/eliza/src/database.ts";
 const { Pool } = pg;
 
 export class PostgresDatabaseAdapter extends DatabaseAdapter {
@@ -832,37 +832,4 @@ export class PostgresDatabaseAdapter extends DatabaseAdapter {
         }
     }
 }
-
-export function createLoggingDatabaseAdapter(
-    adapter: DatabaseAdapter
-): DatabaseAdapter {
-    return new Proxy(adapter, {
-        get(target, prop, receiver) {
-            const value = Reflect.get(target, prop, receiver);
-
-            if (typeof value === "function") {
-                return async function (...args: any[]) {
-                    const methodName = prop.toString();
-                    console.log(`Calling method: ${methodName}`, {
-                        arguments: args.map((arg) =>
-                            typeof arg === "object" ? JSON.stringify(arg) : arg
-                        ),
-                    });
-
-                    try {
-                        const result = await value.apply(this, args);
-                        console.log(
-                            `Method ${methodName} completed successfully`
-                        );
-                        return result;
-                    } catch (error) {
-                        console.error(`Method ${methodName} failed:`, error);
-                        throw error;
-                    }
-                };
-            }
-
-            return value;
-        },
-    });
-}
+export default PostgresDatabaseAdapter;
diff --git a/packages/adapter-sqlite/package.json b/packages/adapter-sqlite/package.json
new file mode 100644
index 00000000000..a9ada525d29
--- /dev/null
+++ b/packages/adapter-sqlite/package.json
@@ -0,0 +1,23 @@
+{
+    "name": "@ai16z/adapter-sqlite",
+    "version": "0.0.1",
+    "main": "src/index.ts",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@types/better-sqlite3": "7.6.11",
+        "sqlite-vec": "0.1.4-alpha.2",
+        "better-sqlite3": "11.5.0"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "echo 'No build step required'",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/adapters/sqlite.ts b/packages/adapter-sqlite/src/index.ts
similarity index 98%
rename from packages/core/src/adapters/sqlite.ts
rename to packages/adapter-sqlite/src/index.ts
index d49c841bb22..a577dd1620b 100644
--- a/packages/core/src/adapters/sqlite.ts
+++ b/packages/adapter-sqlite/src/index.ts
@@ -1,22 +1,19 @@
-import { v4 } from "uuid";
-import { load } from "./sqlite/sqlite_vec.ts";
-
-import { DatabaseAdapter } from "../core/database.ts";
+import { DatabaseAdapter } from "@ai16z/eliza/src/database.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
 import {
     Account,
     Actor,
     GoalStatus,
+    Participant,
     type Goal,
     type Memory,
     type Relationship,
     type UUID,
-    Participant,
-} from "../core/types.ts";
-
-import { sqliteTables } from "./sqlite/sqliteTables.ts";
-
+} from "@ai16z/eliza/src/types.ts";
 import { Database } from "better-sqlite3";
-import { embeddingZeroVector } from "../core/memory.ts";
+import { v4 } from "uuid";
+import { load } from "./sqlite_vec.ts";
+import { sqliteTables } from "./sqliteTables.ts";
 
 export class SqliteDatabaseAdapter extends DatabaseAdapter {
     async getRoom(roomId: UUID): Promise<UUID | null> {
@@ -353,6 +350,8 @@ export class SqliteDatabaseAdapter extends DatabaseAdapter {
       ORDER BY vec_distance_L2(${opts.query_field_name}, ?) ASC
       LIMIT ?
     `;
+    console.log("sql", sql)
+    console.log("opts.query_input", opts.query_input)
         const memories = this.db.prepare(sql).all(
             opts.query_table_name,
             new Float32Array(opts.query_input.split(",").map(Number)), // Convert string to Float32Array
diff --git a/packages/core/src/adapters/sqlite/sqliteTables.ts b/packages/adapter-sqlite/src/sqliteTables.ts
similarity index 100%
rename from packages/core/src/adapters/sqlite/sqliteTables.ts
rename to packages/adapter-sqlite/src/sqliteTables.ts
diff --git a/packages/core/src/adapters/sqlite/sqlite_vec.ts b/packages/adapter-sqlite/src/sqlite_vec.ts
similarity index 91%
rename from packages/core/src/adapters/sqlite/sqlite_vec.ts
rename to packages/adapter-sqlite/src/sqlite_vec.ts
index 5707b8c708b..c033f5ceba1 100644
--- a/packages/core/src/adapters/sqlite/sqlite_vec.ts
+++ b/packages/adapter-sqlite/src/sqlite_vec.ts
@@ -1,6 +1,6 @@
 import * as sqliteVec from "sqlite-vec";
 import { Database } from "better-sqlite3";
-import { elizaLogger } from "../../index.ts";
+import { elizaLogger } from "../../core/src/index.ts";
 
 // Loads the sqlite-vec extensions into the provided SQLite database
 export function loadVecExtensions(db: Database): void {
diff --git a/packages/adapter-sqljs/package.json b/packages/adapter-sqljs/package.json
new file mode 100644
index 00000000000..e771b9a7e56
--- /dev/null
+++ b/packages/adapter-sqljs/package.json
@@ -0,0 +1,23 @@
+{
+    "name": "@ai16z/adapter-sqljs",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@types/sql.js": "1.4.9",
+        "uuid": "11.0.2",
+        "sql.js": "1.12.0"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "echo 'No build step required'",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/adapters/sqljs.ts b/packages/adapter-sqljs/src/index.ts
similarity index 99%
rename from packages/core/src/adapters/sqljs.ts
rename to packages/adapter-sqljs/src/index.ts
index b6cdf44737e..6bc01625b21 100644
--- a/packages/core/src/adapters/sqljs.ts
+++ b/packages/adapter-sqljs/src/index.ts
@@ -1,6 +1,6 @@
 import { v4 } from "uuid";
 
-import { DatabaseAdapter } from "../core/database.ts";
+import { DatabaseAdapter } from "@ai16z/eliza/src/database.ts";
 import {
     Account,
     Actor,
@@ -10,9 +10,9 @@ import {
     type Relationship,
     type UUID,
     Participant,
-} from "../core/types.ts";
-import { sqliteTables } from "./sqlite/sqliteTables.ts";
-import { Database } from "./sqljs/types.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { sqliteTables } from "./sqliteTables.ts";
+import { Database } from "./types.ts";
 
 export class SqlJsDatabaseAdapter extends DatabaseAdapter {
     async getRoom(roomId: UUID): Promise<UUID | null> {
diff --git a/packages/adapter-sqljs/src/sqliteTables.ts b/packages/adapter-sqljs/src/sqliteTables.ts
new file mode 100644
index 00000000000..ed077bbcdc3
--- /dev/null
+++ b/packages/adapter-sqljs/src/sqliteTables.ts
@@ -0,0 +1,94 @@
+export const sqliteTables = `
+PRAGMA foreign_keys=OFF;
+BEGIN TRANSACTION;
+
+-- Table: accounts
+CREATE TABLE IF NOT EXISTS "accounts" (
+    "id" TEXT PRIMARY KEY,
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "name" TEXT,
+    "username" TEXT,
+    "email" TEXT NOT NULL,
+    "avatarUrl" TEXT,
+    "details" TEXT DEFAULT '{}' CHECK(json_valid("details")) -- Ensuring details is a valid JSON field
+);
+
+-- Table: memories
+CREATE TABLE IF NOT EXISTS "memories" (
+    "id" TEXT PRIMARY KEY,
+    "type" TEXT NOT NULL,
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "content" TEXT NOT NULL,
+    "embedding" BLOB NOT NULL, -- TODO: EMBEDDING ARRAY, CONVERT TO BEST FORMAT FOR SQLITE-VSS (JSON?)
+    "userId" TEXT,
+    "roomId" TEXT,
+    "agentId" TEXT,
+    "unique" INTEGER DEFAULT 1 NOT NULL,
+    FOREIGN KEY ("userId") REFERENCES "accounts"("id"),
+    FOREIGN KEY ("roomId") REFERENCES "rooms"("id"),
+    FOREIGN KEY ("agentId") REFERENCES "accounts"("id")
+);
+
+-- Table: goals
+CREATE TABLE IF NOT EXISTS "goals" (
+    "id" TEXT PRIMARY KEY,
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "userId" TEXT,
+    "name" TEXT,
+    "status" TEXT,
+    "description" TEXT,
+    "roomId" TEXT,
+    "objectives" TEXT DEFAULT '[]' NOT NULL CHECK(json_valid("objectives")) -- Ensuring objectives is a valid JSON array
+);
+
+-- Table: logs
+CREATE TABLE IF NOT EXISTS "logs" (
+    "id" TEXT PRIMARY KEY,
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "userId" TEXT NOT NULL,
+    "body" TEXT NOT NULL,
+    "type" TEXT NOT NULL,
+    "roomId" TEXT NOT NULL
+);
+
+-- Table: participants
+CREATE TABLE IF NOT EXISTS "participants" (
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "userId" TEXT,
+    "roomId" TEXT,
+    "userState" TEXT,
+    "id" TEXT PRIMARY KEY,
+    "last_message_read" TEXT,
+    FOREIGN KEY ("userId") REFERENCES "accounts"("id"),
+    FOREIGN KEY ("roomId") REFERENCES "rooms"("id")
+);
+
+-- Table: relationships
+CREATE TABLE IF NOT EXISTS "relationships" (
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+    "userA" TEXT NOT NULL,
+    "userB" TEXT NOT NULL,
+    "status" "text",
+    "id" TEXT PRIMARY KEY,
+    "userId" TEXT NOT NULL,
+    FOREIGN KEY ("userA") REFERENCES "accounts"("id"),
+    FOREIGN KEY ("userB") REFERENCES "accounts"("id"),
+    FOREIGN KEY ("userId") REFERENCES "accounts"("id")
+);
+
+-- Table: rooms
+CREATE TABLE IF NOT EXISTS "rooms" (
+    "id" TEXT PRIMARY KEY,
+    "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
+
+-- Index: relationships_id_key
+CREATE UNIQUE INDEX IF NOT EXISTS "relationships_id_key" ON "relationships" ("id");
+
+-- Index: memories_id_key
+CREATE UNIQUE INDEX IF NOT EXISTS "memories_id_key" ON "memories" ("id");
+
+-- Index: participants_id_key
+CREATE UNIQUE INDEX IF NOT EXISTS "participants_id_key" ON "participants" ("id");
+
+COMMIT;`;
diff --git a/packages/core/src/adapters/sqljs/types.ts b/packages/adapter-sqljs/src/types.ts
similarity index 100%
rename from packages/core/src/adapters/sqljs/types.ts
rename to packages/adapter-sqljs/src/types.ts
diff --git a/packages/adapter-supabase/config.toml b/packages/adapter-supabase/config.toml
new file mode 100644
index 00000000000..c1f016d4a40
--- /dev/null
+++ b/packages/adapter-supabase/config.toml
@@ -0,0 +1,159 @@
+# A string used to distinguish different Supabase projects on the same host. Defaults to the
+# working directory name when running `supabase init`.
+project_id = "eliza"
+
+[api]
+enabled = true
+# Port to use for the API URL.
+port = 54321
+# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
+# endpoints. public and storage are always included.
+schemas = ["public", "storage", "graphql_public"]
+# Extra schemas to add to the search_path of every request. public is always included.
+extra_search_path = ["public", "extensions"]
+# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
+# for accidental or malicious requests.
+max_rows = 1000
+
+[db]
+# Port to use for the local database URL.
+port = 54322
+# Port used by db diff command to initialize the shadow database.
+shadow_port = 54320
+# The database major version to use. This has to be the same as your remote database's. Run `SHOW
+# server_version;` on the remote database to check.
+major_version = 15
+
+[db.pooler]
+enabled = false
+# Port to use for the local connection pooler.
+port = 54329
+# Specifies when a server connection can be reused by other clients.
+# Configure one of the supported pooler modes: `transaction`, `session`.
+pool_mode = "transaction"
+# How many server connections to allow per user/database pair.
+default_pool_size = 20
+# Maximum number of client connections allowed.
+max_client_conn = 100
+
+[realtime]
+enabled = true
+# Bind realtime via either IPv4 or IPv6. (default: IPv6)
+# ip_version = "IPv6"
+# The maximum length in bytes of HTTP request headers. (default: 4096)
+# max_header_length = 4096
+
+[studio]
+enabled = true
+# Port to use for Supabase Studio.
+port = 54323
+# External URL of the API server that frontend connects to.
+api_url = "http://127.0.0.1"
+
+# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
+# are monitored, and you can view the emails that would have been sent from the web interface.
+[inbucket]
+enabled = true
+# Port to use for the email testing server web interface.
+port = 54324
+# Uncomment to expose additional ports for testing user applications that send emails.
+# smtp_port = 54325
+# pop3_port = 54326
+
+[storage]
+enabled = true
+# The maximum file size allowed (e.g. "5MB", "500KB").
+file_size_limit = "50MiB"
+
+[auth]
+enabled = true
+# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
+# in emails.
+site_url = "http://127.0.0.1:3000"
+# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
+additional_redirect_urls = ["https://127.0.0.1:3000"]
+# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
+jwt_expiry = 3600
+# If disabled, the refresh token will never expire.
+enable_refresh_token_rotation = true
+# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
+# Requires enable_refresh_token_rotation = true.
+refresh_token_reuse_interval = 10
+# Allow/disallow new user signups to your project.
+enable_signup = true
+# Allow/disallow testing manual linking of accounts
+enable_manual_linking = false
+
+[auth.email]
+# Allow/disallow new user signups via email to your project.
+enable_signup = true
+# If enabled, a user will be required to confirm any email change on both the old, and new email
+# addresses. If disabled, only the new email is required to confirm.
+double_confirm_changes = true
+# If enabled, users need to confirm their email address before signing in.
+enable_confirmations = false
+
+# Uncomment to customize email template
+# [auth.email.template.invite]
+# subject = "You have been invited"
+# content_path = "./supabase/templates/invite.html"
+
+[auth.sms]
+# Allow/disallow new user signups via SMS to your project.
+enable_signup = true
+# If enabled, users need to confirm their phone number before signing in.
+enable_confirmations = false
+# Template for sending OTP to users
+template = "Your code is {{ .Code }} ."
+
+# Use pre-defined map of phone number to OTP for testing.
+[auth.sms.test_otp]
+# 4152127777 = "123456"
+
+# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
+[auth.hook.custom_access_token]
+# enabled = true
+# uri = "pg-functions://<database>/<schema>/<hook_name>"
+
+
+# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
+[auth.sms.twilio]
+enabled = false
+account_sid = ""
+message_service_sid = ""
+# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
+auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
+
+# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
+# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
+# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
+[auth.external.apple]
+enabled = false
+client_id = ""
+# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
+secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
+# Overrides the default auth redirectUrl.
+redirect_uri = ""
+# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
+# or any other third-party OIDC providers.
+url = ""
+
+[analytics]
+enabled = false
+port = 54327
+vector_port = 54328
+# Configure one of the supported backends: `postgres`, `bigquery`.
+backend = "postgres"
+
+# Experimental features may be deprecated any time
+[experimental]
+# Configures Postgres storage engine to use OrioleDB (S3)
+orioledb_version = ""
+# Configures S3 bucket URL, eg. <bucket_name>.s3-<region>.amazonaws.com
+s3_host = "env(S3_HOST)"
+# Configures S3 bucket region, eg. us-east-1
+s3_region = "env(S3_REGION)"
+# Configures AWS_ACCESS_KEY_ID for S3 bucket
+s3_access_key = "env(S3_ACCESS_KEY)"
+# Configures AWS_SECRET_ACCESS_KEY for S3 bucket
+s3_secret_key = "env(S3_SECRET_KEY)"
diff --git a/packages/adapter-supabase/package.json b/packages/adapter-supabase/package.json
new file mode 100644
index 00000000000..6e38b636234
--- /dev/null
+++ b/packages/adapter-supabase/package.json
@@ -0,0 +1,21 @@
+{
+    "name": "@ai16z/adapter-supabase",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@supabase/supabase-js": "2.46.1"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "echo 'No build step required'",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/adapter-supabase/schema.sql b/packages/adapter-supabase/schema.sql
new file mode 100644
index 00000000000..b2e77227c2f
--- /dev/null
+++ b/packages/adapter-supabase/schema.sql
@@ -0,0 +1,103 @@
+-- Enable pgvector extension
+
+-- -- Drop existing tables and extensions
+-- DROP EXTENSION IF EXISTS vector CASCADE;
+-- DROP TABLE IF EXISTS relationships CASCADE;
+-- DROP TABLE IF EXISTS participants CASCADE;
+-- DROP TABLE IF EXISTS logs CASCADE;
+-- DROP TABLE IF EXISTS goals CASCADE;
+-- DROP TABLE IF EXISTS memories CASCADE;
+-- DROP TABLE IF EXISTS rooms CASCADE;
+-- DROP TABLE IF EXISTS accounts CASCADE;
+
+
+CREATE EXTENSION IF NOT EXISTS vector;
+
+BEGIN;
+
+CREATE TABLE accounts (
+    "id" UUID PRIMARY KEY,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "name" TEXT,
+    "username" TEXT,
+    "email" TEXT NOT NULL,
+    "avatarUrl" TEXT,
+    "details" JSONB DEFAULT '{}'::jsonb
+);
+
+CREATE TABLE rooms (
+    "id" UUID PRIMARY KEY,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE TABLE memories (
+    "id" UUID PRIMARY KEY,
+    "type" TEXT NOT NULL,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "content" JSONB NOT NULL,
+    "embedding" vector(1536),
+    "userId" UUID REFERENCES accounts("id"),
+    "agentId" UUID REFERENCES accounts("id"),
+    "roomId" UUID REFERENCES rooms("id"),
+    "unique" BOOLEAN DEFAULT true NOT NULL,
+    CONSTRAINT fk_room FOREIGN KEY ("roomId") REFERENCES rooms("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE,
+    CONSTRAINT fk_agent FOREIGN KEY ("agentId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
+CREATE TABLE goals (
+    "id" UUID PRIMARY KEY,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "userId" UUID REFERENCES accounts("id"),
+    "name" TEXT,
+    "status" TEXT,
+    "description" TEXT,
+    "roomId" UUID REFERENCES rooms("id"),
+    "objectives" JSONB DEFAULT '[]'::jsonb NOT NULL,
+    CONSTRAINT fk_room FOREIGN KEY ("roomId") REFERENCES rooms("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
+CREATE TABLE logs (
+    "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "userId" UUID NOT NULL REFERENCES accounts("id"),
+    "body" JSONB NOT NULL,
+    "type" TEXT NOT NULL,
+    "roomId" UUID NOT NULL REFERENCES rooms("id"),
+    CONSTRAINT fk_room FOREIGN KEY ("roomId") REFERENCES rooms("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
+CREATE TABLE participants (
+    "id" UUID PRIMARY KEY,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "userId" UUID REFERENCES accounts("id"),
+    "roomId" UUID REFERENCES rooms("id"),
+    "userState" TEXT,
+    "last_message_read" TEXT,
+    UNIQUE("userId", "roomId"),
+    CONSTRAINT fk_room FOREIGN KEY ("roomId") REFERENCES rooms("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
+CREATE TABLE relationships (
+    "id" UUID PRIMARY KEY,
+    "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+    "userA" UUID NOT NULL REFERENCES accounts("id"),
+    "userB" UUID NOT NULL REFERENCES accounts("id"),
+    "status" TEXT,
+    "userId" UUID NOT NULL REFERENCES accounts("id"),
+    CONSTRAINT fk_user_a FOREIGN KEY ("userA") REFERENCES accounts("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user_b FOREIGN KEY ("userB") REFERENCES accounts("id") ON DELETE CASCADE,
+    CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
+-- Indexes
+CREATE INDEX idx_memories_embedding ON memories USING hnsw ("embedding" vector_cosine_ops);
+CREATE INDEX idx_memories_type_room ON memories("type", "roomId");
+CREATE INDEX idx_participants_user ON participants("userId");
+CREATE INDEX idx_participants_room ON participants("roomId");
+CREATE INDEX idx_relationships_users ON relationships("userA", "userB");
+
+COMMIT;
\ No newline at end of file
diff --git a/packages/adapter-supabase/seed.sql b/packages/adapter-supabase/seed.sql
new file mode 100644
index 00000000000..063c5fbe532
--- /dev/null
+++ b/packages/adapter-supabase/seed.sql
@@ -0,0 +1,3 @@
+INSERT INTO public.accounts (id, name, email, avatarUrl, details) VALUES ('00000000-0000-0000-0000-000000000000', 'Default Agent', 'default@agent.com', '', '{}');
+INSERT INTO public.rooms (id) VALUES ('00000000-0000-0000-0000-000000000000');
+INSERT INTO public.participants (userId, roomId) VALUES ('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000');
diff --git a/packages/core/src/adapters/supabase.ts b/packages/adapter-supabase/src/index.ts
similarity index 99%
rename from packages/core/src/adapters/supabase.ts
rename to packages/adapter-supabase/src/index.ts
index 0b97f895b05..478dc32a047 100644
--- a/packages/core/src/adapters/supabase.ts
+++ b/packages/adapter-supabase/src/index.ts
@@ -9,8 +9,8 @@ import {
     type UUID,
     Participant,
     Room,
-} from "../core/types.ts";
-import { DatabaseAdapter } from "../core/database.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { DatabaseAdapter } from "@ai16z/eliza/src/database.ts";
 import { v4 as uuid } from "uuid";
 export class SupabaseDatabaseAdapter extends DatabaseAdapter {
     async getRoom(roomId: UUID): Promise<UUID | null> {
diff --git a/packages/agent/package.json b/packages/agent/package.json
index f7da5c086a8..d20bc2e72e0 100644
--- a/packages/agent/package.json
+++ b/packages/agent/package.json
@@ -1,20 +1,30 @@
 {
-    "name": "@eliza/agent",
+    "name": "@ai16z/agent",
     "version": "0.0.1",
     "main": "src/index.ts",
     "type": "module",
     "scripts": {
         "build": "tsup --format esm --dts",
         "start": "node --loader ts-node/esm src/index.ts",
-        "dev": "nodemon --watch src --watch ../core/dist --ext ts,json --exec 'node --loader ts-node/esm' src/index.ts"
+        "dev": "tsc && nodemon --watch src --watch ../core/dist --ext ts,json --exec 'node --loader ts-node/esm' src/index.ts"
     },
     "dependencies": {
-        "@eliza/core": "workspace:*",
-        "@eliza/plugin-image-generation": "workspace:*",
+        "@ai16z/eliza": "workspace:*",
+        "@ai16z/adapter-postgres": "workspace:*",
+        "@ai16z/adapter-sqlite": "workspace:*",
+        "@ai16z/client-direct": "workspace:*",
+        "@ai16z/client-discord": "workspace:*",
+        "@ai16z/client-telegram": "workspace:*",
+        "@ai16z/client-twitter": "workspace:*",
+        "@ai16z/plugin-bootstrap": "workspace:*",
+        "@ai16z/plugin-image-generation": "workspace:*",
+        "@ai16z/plugin-node": "workspace:*",
+        "@ai16z/plugin-solana": "workspace:*",
         "readline": "^1.3.0",
-        "tsup": "^8.3.5"
+        "yargs": "17.7.2"
     },
     "devDependencies": {
-        "ts-node": "10.9.2"
+        "ts-node": "10.9.2",
+        "tsup": "^8.3.5"
     }
 }
diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts
index fb3a45a177c..02fe0720df6 100644
--- a/packages/agent/src/index.ts
+++ b/packages/agent/src/index.ts
@@ -1,75 +1,212 @@
+console.log("ok");
+import { PostgresDatabaseAdapter } from "@ai16z/adapter-postgres/src/index.ts";
+import { SqliteDatabaseAdapter } from "@ai16z/adapter-sqlite/src/index.ts";
+import { DirectClientInterface } from "@ai16z/client-direct/src/index.ts";
+import { DiscordClientInterface } from "@ai16z/client-discord/src/index.ts";
+import { TelegramClientInterface } from "@ai16z/client-telegram/src/index.ts";
+import { TwitterClientInterface } from "@ai16z/client-twitter/src/index.ts";
+import { defaultCharacter } from "@ai16z/eliza/src/defaultCharacter.ts";
+import { AgentRuntime } from "@ai16z/eliza/src/runtime.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 import {
-    AgentRuntime,
-    boredomProvider,
     Character,
-    defaultActions,
-    defaultCharacter,
-    DirectClient,
-    followRoom,
-    getTokenForProvider,
     IAgentRuntime,
-    settings,
-    initializeClients,
-    initializeDatabase,
-    loadActionConfigs,
-    loadCharacters,
-    loadCustomActions,
-    muteRoom,
-    parseArguments,
-    timeProvider,
-    unfollowRoom,
-    unmuteRoom,
-    walletProvider,
-} from "@eliza/core";
+    IDatabaseAdapter,
+    ModelProviderName,
+} from "@ai16z/eliza/src/types.ts";
+import { bootstrapPlugin } from "@ai16z/plugin-bootstrap/src/index.ts";
+import { nodePlugin } from "@ai16z/plugin-node/src/index.ts";
+import Database from "better-sqlite3";
+import fs from "fs";
 import readline from "readline";
-const args = parseArguments();
+import yargs from "yargs";
 
-let charactersArg = args.characters || args.character;
+export const wait = (minTime: number = 1000, maxTime: number = 3000) => {
+    const waitTime =
+        Math.floor(Math.random() * (maxTime - minTime + 1)) + minTime;
+    return new Promise((resolve) => setTimeout(resolve, waitTime));
+};
+
+export function parseArguments(): {
+    character?: string;
+    characters?: string;
+} {
+    try {
+        return yargs(process.argv.slice(2))
+            .option("character", {
+                type: "string",
+                description: "Path to the character JSON file",
+            })
+            .option("characters", {
+                type: "string",
+                description:
+                    "Comma separated list of paths to character JSON files",
+            })
+            .parseSync();
+    } catch (error) {
+        console.error("Error parsing arguments:", error);
+        return {};
+    }
+}
+
+export async function loadCharacters(
+    charactersArg: string
+): Promise<Character[]> {
+    let characterPaths = charactersArg
+        ?.split(",")
+        .map((path) => path.trim())
+        .map((path) => {
+            if (path.startsWith("../characters")) {
+                return `../${path}`;
+            }
+            if (path.startsWith("characters")) {
+                return `../../${path}`;
+            }
+            if (path.startsWith("./characters")) {
+                return `../.${path}`;
+            }
+            return path;
+        });
+
+    const loadedCharacters = [];
+
+    if (characterPaths?.length > 0) {
+        for (const path of characterPaths) {
+            try {
+                const character = JSON.parse(fs.readFileSync(path, "utf8"));
+
+                // is there a "plugins" field?
+                if (character.plugins) {
+                    console.log("Plugins are: ", character.plugins);
+
+                    const importedPlugins = await Promise.all(
+                        character.plugins.map(async (plugin) => {
+                            // if the plugin name doesnt start with @eliza,
+
+                            const importedPlugin = await import(plugin);
+                            return importedPlugin;
+                        })
+                    );
+
+                    character.plugins = importedPlugins;
+                }
 
-let characters = [defaultCharacter];
+                loadedCharacters.push(character);
+            } catch (e) {
+                console.error(`Error loading character from ${path}: ${e}`);
+            }
+        }
+    }
+
+    if (loadedCharacters.length === 0) {
+        console.log("No characters found, using default character");
+        loadedCharacters.push(defaultCharacter);
+    }
+
+    return loadedCharacters;
+}
+
+export function getTokenForProvider(
+    provider: ModelProviderName,
+    character: Character
+) {
+    switch (provider) {
+        case ModelProviderName.OPENAI:
+            return (
+                character.settings?.secrets?.OPENAI_API_KEY ||
+                settings.OPENAI_API_KEY
+            );
+        case ModelProviderName.ANTHROPIC:
+            return (
+                character.settings?.secrets?.ANTHROPIC_API_KEY ||
+                character.settings?.secrets?.CLAUDE_API_KEY ||
+                settings.ANTHROPIC_API_KEY ||
+                settings.CLAUDE_API_KEY
+            );
+        case ModelProviderName.REDPILL:
+            return (
+                character.settings?.secrets?.REDPILL_API_KEY ||
+                settings.REDPILL_API_KEY
+            );
+    }
+}
+
+export async function createDirectRuntime(
+    character: Character,
+    db: IDatabaseAdapter,
+    token: string
+) {
+    console.log("Creating runtime for character", character.name);
+    return new AgentRuntime({
+        databaseAdapter: db,
+        token,
+        modelProvider: character.modelProvider,
+        evaluators: [],
+        character,
+        plugins: [],
+        providers: [],
+        actions: [],
+        services: [],
+        managers: [],
+    });
+}
 
-if (charactersArg) {
-    characters = loadCharacters(charactersArg);
+function initializeDatabase() {
+    if (process.env.POSTGRES_URL) {
+        return new PostgresDatabaseAdapter({
+            connectionString: process.env.POSTGRES_URL,
+        });
+    } else {
+        return new SqliteDatabaseAdapter(new Database("./db.sqlite"));
+    }
 }
 
-const directClient = new DirectClient();
+export async function initializeClients(
+    character: Character,
+    runtime: IAgentRuntime
+) {
+    const clients = [];
+    const clientTypes =
+        character.clients?.map((str) => str.toLowerCase()) || [];
+
+    if (clientTypes.includes("discord")) {
+        clients.push(await DiscordClientInterface.start(runtime));
+    }
+
+    if (clientTypes.includes("telegram")) {
+        const telegramClient = await TelegramClientInterface.start(runtime);
+        if (telegramClient) clients.push(telegramClient);
+    }
+
+    if (clientTypes.includes("twitter")) {
+        const twitterClients = await TwitterClientInterface.start(runtime);
+        clients.push(twitterClients);
+    }
 
-const serverPort = parseInt(settings.SERVER_PORT || "3000");
-directClient.start(serverPort);
+    return clients;
+}
 
 export async function createAgent(
     character: Character,
     db: any,
-    token: string,
-    configPath: string = "./elizaConfig.yaml"
+    token: string
 ) {
+    console.log("Creating runtime for character", character.name);
     return new AgentRuntime({
         databaseAdapter: db,
         token,
         modelProvider: character.modelProvider,
         evaluators: [],
         character,
-        providers: [
-            timeProvider,
-            boredomProvider,
-            (character.settings?.secrets?.WALLET_PUBLIC_KEY !== undefined) && walletProvider,
-        ].filter(Boolean),
-        actions: [
-            ...defaultActions,
-
-            // Custom actions
-            followRoom,
-            unfollowRoom,
-            unmuteRoom,
-            muteRoom,
-
-            // imported from elizaConfig.yaml
-            ...(await loadCustomActions(loadActionConfigs(configPath))),
-        ],
+        plugins: [bootstrapPlugin, nodePlugin],
+        providers: [],
+        actions: [],
+        services: [],
+        managers: [],
     });
 }
 
-async function startAgent(character: Character) {
+async function startAgent(character: Character, directClient: any) {
     try {
         const token = getTokenForProvider(character.modelProvider, character);
         const db = initializeDatabase();
@@ -94,13 +231,32 @@ async function startAgent(character: Character) {
 }
 
 const startAgents = async () => {
+    const directClient = await DirectClientInterface.start();
+    const args = parseArguments();
+
+    let charactersArg = args.characters || args.character;
+
+    let characters = [defaultCharacter];
+
+    if (charactersArg) {
+        characters = await loadCharacters(charactersArg);
+    }
+
     try {
         for (const character of characters) {
-            await startAgent(character);
+            await startAgent(character, directClient);
         }
     } catch (error) {
         console.error("Error starting agents:", error);
     }
+
+    function chat() {
+        const agentId = characters[0].name ?? "Agent";
+        rl.question("You: ", (input) => handleUserInput(input, agentId));
+    }
+
+    console.log("Chat started. Type 'exit' to quit.");
+    chat();
 };
 
 startAgents().catch((error) => {
@@ -113,14 +269,15 @@ const rl = readline.createInterface({
     output: process.stdout,
 });
 
-async function handleUserInput(input) {
+async function handleUserInput(input, agentId) {
     if (input.toLowerCase() === "exit") {
         rl.close();
         return;
     }
 
-    const agentId = characters[0].name.toLowerCase();
     try {
+        const serverPort = parseInt(settings.SERVER_PORT || "3000");
+
         const response = await fetch(
             `http://localhost:${serverPort}/${agentId}/message`,
             {
@@ -135,19 +292,8 @@ async function handleUserInput(input) {
         );
 
         const data = await response.json();
-        data.forEach((message) =>
-            console.log(`${characters[0].name}: ${message.text}`)
-        );
+        data.forEach((message) => console.log(`${"Agent"}: ${message.text}`));
     } catch (error) {
         console.error("Error fetching response:", error);
     }
-
-    chat();
-}
-
-function chat() {
-    rl.question("You: ", handleUserInput);
 }
-
-console.log("Chat started. Type 'exit' to quit.");
-chat();
diff --git a/packages/agent/tsconfig.json b/packages/agent/tsconfig.json
index 0587cf65e20..9294a4fa6db 100644
--- a/packages/agent/tsconfig.json
+++ b/packages/agent/tsconfig.json
@@ -8,4 +8,4 @@
         "types": ["node"]
     },
     "include": ["src"]
-}
\ No newline at end of file
+}
diff --git a/packages/client-direct/package.json b/packages/client-direct/package.json
new file mode 100644
index 00000000000..506bd8a83cf
--- /dev/null
+++ b/packages/client-direct/package.json
@@ -0,0 +1,27 @@
+{
+    "name": "@ai16z/client-direct",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@ai16z/plugin-image-generation": "workspace:*",
+        "@types/body-parser": "1.19.5",
+        "@types/cors": "2.8.17",
+        "@types/express": "5.0.0",
+        "body-parser": "1.20.3",
+        "cors": "2.8.5",
+        "multer": "1.4.5-lts.1"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/clients/direct/index.ts b/packages/client-direct/src/index.ts
similarity index 87%
rename from packages/core/src/clients/direct/index.ts
rename to packages/client-direct/src/index.ts
index c77c6df9aff..3db3a7a0c7f 100644
--- a/packages/core/src/clients/direct/index.ts
+++ b/packages/client-direct/src/index.ts
@@ -2,17 +2,21 @@ import bodyParser from "body-parser";
 import cors from "cors";
 import express, { Request as ExpressRequest } from "express";
 import multer, { File } from "multer";
+import { generateCaption, generateImage } from "@ai16z/eliza/src/generation.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateMessageResponse } from "@ai16z/eliza/src/generation.ts";
+import { messageCompletionFooter } from "@ai16z/eliza/src/parsing.ts";
+import { AgentRuntime } from "@ai16z/eliza/src/runtime.ts";
 import {
-    generateCaption,
-    generateImage,
-} from "../../actions/imageGenerationUtils.ts";
-import { composeContext } from "../../core/context.ts";
-import { generateMessageResponse } from "../../core/generation.ts";
-import { messageCompletionFooter } from "../../core/parsing.ts";
-import { AgentRuntime } from "../../core/runtime.ts";
-import { Content, Memory, ModelClass, State } from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
-
+    Content,
+    Memory,
+    ModelClass,
+    State,
+    Client,
+    IAgentRuntime,
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 const upload = multer({ storage: multer.memoryStorage() });
 
 export const messageHandlerTemplate =
@@ -49,12 +53,12 @@ export interface SimliClientConfig {
     videoRef: any;
     audioRef: any;
 }
-class DirectClient {
+export class DirectClient {
     private app: express.Application;
     private agents: Map<string, AgentRuntime>;
 
     constructor() {
-        console.log("DirectClient constructor")
+        console.log("DirectClient constructor");
         this.app = express();
         this.app.use(cors());
         this.agents = new Map();
@@ -122,7 +126,7 @@ class DirectClient {
         this.app.post(
             "/:agentId/message",
             async (req: express.Request, res: express.Response) => {
-                console.log("DirectClient message")
+                console.log("DirectClient message");
                 const agentId = req.params.agentId;
                 const roomId = stringToUuid(
                     req.body.roomId ?? "default-room-" + agentId
@@ -276,4 +280,17 @@ class DirectClient {
     }
 }
 
-export { DirectClient };
+export const DirectClientInterface: Client = {
+    start: async (runtime: IAgentRuntime) => {
+        console.log("DirectClientInterface start");
+        const client = new DirectClient();
+        const serverPort = parseInt(settings.SERVER_PORT || "3000");
+        client.start(serverPort);
+        return client;
+    },
+    stop: async (runtime: IAgentRuntime) => {
+        console.warn("Direct client does not support stopping yet");
+    },
+};
+
+export default DirectClientInterface;
diff --git a/packages/client-direct/tsconfig.json b/packages/client-direct/tsconfig.json
new file mode 100644
index 00000000000..eaa78145aa3
--- /dev/null
+++ b/packages/client-direct/tsconfig.json
@@ -0,0 +1,8 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": "./src"
+    },
+    "include": ["src"]
+}
diff --git a/packages/client-direct/tsup.config.ts b/packages/client-direct/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/client-direct/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/client-discord/package.json b/packages/client-discord/package.json
new file mode 100644
index 00000000000..27a78abe694
--- /dev/null
+++ b/packages/client-discord/package.json
@@ -0,0 +1,31 @@
+{
+    "name": "@ai16z/client-discord",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@ai16z/plugin-node": "workspace:*",
+        "@discordjs/opus": "github:discordjs/opus",
+        "@discordjs/rest": "2.4.0",
+        "@discordjs/voice": "0.17.0",
+        "prism-media": "1.3.5",
+        "libsodium-wrappers": "0.7.15",
+        "discord.js": "14.16.3"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch"
+    },
+    "trustedDependencies": {
+        "@discordjs/opus": "github:discordjs/opus",
+        "@discordjs/voice": "0.17.0"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/clients/discord/actions/chat_with_attachments.ts b/packages/client-discord/src/actions/chat_with_attachments.ts
similarity index 97%
rename from packages/core/src/clients/discord/actions/chat_with_attachments.ts
rename to packages/client-discord/src/actions/chat_with_attachments.ts
index fc5885a651d..ca6597d72da 100644
--- a/packages/core/src/clients/discord/actions/chat_with_attachments.ts
+++ b/packages/client-discord/src/actions/chat_with_attachments.ts
@@ -1,8 +1,8 @@
 import fs from "fs";
-import { composeContext } from "../../../core/context.ts";
-import { generateText, trimTokens } from "../../../core/generation.ts";
-import models from "../../../core/models.ts";
-import { parseJSONObjectFromText } from "../../../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateText, trimTokens } from "@ai16z/eliza/src/generation.ts";
+import models from "@ai16z/eliza/src/models.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -12,7 +12,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../../../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 export const summarizationTemplate = `# Summarized so far (we are adding to this)
 {{currentSummary}}
 
diff --git a/packages/core/src/clients/discord/actions/download_media.ts b/packages/client-discord/src/actions/download_media.ts
similarity index 90%
rename from packages/core/src/clients/discord/actions/download_media.ts
rename to packages/client-discord/src/actions/download_media.ts
index 4e3dfaf6313..90edac1737a 100644
--- a/packages/core/src/clients/discord/actions/download_media.ts
+++ b/packages/client-discord/src/actions/download_media.ts
@@ -1,18 +1,20 @@
 import path from "path";
-import { composeContext } from "../../../core/context.ts";
-import { parseJSONObjectFromText } from "../../../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
     Content,
     HandlerCallback,
     IAgentRuntime,
+    IVideoService,
     Memory,
     ModelClass,
+    ServiceType,
     State,
-} from "../../../core/types.ts";
-import { VideoService } from "../../../services/video.ts";
-import { generateText } from "../../../core/generation.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { VideoService } from "@ai16z/plugin-node/src/services/video.ts";
+import { generateText } from "@ai16z/eliza/src/generation.ts";
 
 export const mediaUrlTemplate = `# Messages we are searching for a media URL
 {{recentMessages}}
@@ -83,7 +85,9 @@ export default {
         options: any,
         callback: HandlerCallback
     ) => {
-        const videoService = VideoService.getInstance(runtime);
+        const videoService = runtime.getService<IVideoService>(
+            ServiceType.VIDEO
+        );
         if (!state) {
             state = (await runtime.composeState(message)) as State;
         }
@@ -129,10 +133,6 @@ export default {
                     console.error(
                         "Max retries reached. Failed to send message with attachment."
                     );
-                    await callback({
-                        ...response,
-                        text: "Sorry, I encountered an error while trying to send the video attachment. Please try again later.",
-                    });
                     break;
                 }
 
diff --git a/packages/core/src/clients/discord/actions/joinvoice.ts b/packages/client-discord/src/actions/joinvoice.ts
similarity index 99%
rename from packages/core/src/clients/discord/actions/joinvoice.ts
rename to packages/client-discord/src/actions/joinvoice.ts
index 3e8ed02fadc..54210d109de 100644
--- a/packages/core/src/clients/discord/actions/joinvoice.ts
+++ b/packages/client-discord/src/actions/joinvoice.ts
@@ -9,14 +9,14 @@ import {
     Guild,
     GuildMember,
 } from "discord.js";
-import { composeContext } from "../../../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     Action,
     ActionExample,
     IAgentRuntime,
     Memory,
     State,
-} from "../../../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export default {
     name: "JOIN_VOICE",
diff --git a/packages/core/src/clients/discord/actions/leavevoice.ts b/packages/client-discord/src/actions/leavevoice.ts
similarity index 99%
rename from packages/core/src/clients/discord/actions/leavevoice.ts
rename to packages/client-discord/src/actions/leavevoice.ts
index 11b5a793641..82124c582e8 100644
--- a/packages/core/src/clients/discord/actions/leavevoice.ts
+++ b/packages/client-discord/src/actions/leavevoice.ts
@@ -12,7 +12,7 @@ import {
     IAgentRuntime,
     Memory,
     State,
-} from "../../../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export default {
     name: "LEAVE_VOICE",
diff --git a/packages/core/src/clients/discord/actions/summarize_conversation.ts b/packages/client-discord/src/actions/summarize_conversation.ts
similarity index 97%
rename from packages/core/src/clients/discord/actions/summarize_conversation.ts
rename to packages/client-discord/src/actions/summarize_conversation.ts
index aff93e5623d..6d853a17904 100644
--- a/packages/core/src/clients/discord/actions/summarize_conversation.ts
+++ b/packages/client-discord/src/actions/summarize_conversation.ts
@@ -1,13 +1,13 @@
 import fs from "fs";
-import { composeContext } from "../../../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     generateText,
     splitChunks,
     trimTokens,
-} from "../../../core/generation.ts";
-import { getActorDetails } from "../../../core/messages.ts";
-import models from "../../../core/models.ts";
-import { parseJSONObjectFromText } from "../../../core/parsing.ts";
+} from "@ai16z/eliza/src/generation.ts";
+import { getActorDetails } from "@ai16z/eliza/src/messages.ts";
+import models from "@ai16z/eliza/src/models.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -18,7 +18,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../../../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 export const summarizationTemplate = `# Summarized so far (we are adding to this)
 {{currentSummary}}
 
diff --git a/packages/core/src/clients/discord/actions/transcribe_media.ts b/packages/client-discord/src/actions/transcribe_media.ts
similarity index 96%
rename from packages/core/src/clients/discord/actions/transcribe_media.ts
rename to packages/client-discord/src/actions/transcribe_media.ts
index 3fb661ea750..bb611455166 100644
--- a/packages/core/src/clients/discord/actions/transcribe_media.ts
+++ b/packages/client-discord/src/actions/transcribe_media.ts
@@ -1,7 +1,7 @@
 import fs from "fs";
-import { composeContext } from "../../../core/context.ts";
-import { generateText } from "../../../core/generation.ts";
-import { parseJSONObjectFromText } from "../../../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateText } from "@ai16z/eliza/src/generation.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -11,7 +11,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../../../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 export const transcriptionTemplate = `# Transcription of media file
 {{mediaTranscript}}
 
diff --git a/packages/core/src/clients/discord/attachments.ts b/packages/client-discord/src/attachments.ts
similarity index 81%
rename from packages/core/src/clients/discord/attachments.ts
rename to packages/client-discord/src/attachments.ts
index c9c5b1452eb..4b6e7ba5e5a 100644
--- a/packages/core/src/clients/discord/attachments.ts
+++ b/packages/client-discord/src/attachments.ts
@@ -1,8 +1,61 @@
+import { generateText, trimTokens } from "@ai16z/eliza/src/generation.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
+import {
+    IAgentRuntime,
+    IImageDescriptionService,
+    IPdfService,
+    ITranscriptionService,
+    IVideoService,
+    Media,
+    ModelClass,
+    ServiceType,
+} from "@ai16z/eliza/src/types.ts";
 import { Attachment, Collection } from "discord.js";
 import ffmpeg from "fluent-ffmpeg";
 import fs from "fs";
-import { IAgentRuntime, Media } from "../../core/types.ts";
-import { generateSummary } from "../../services/summary.ts";
+
+async function generateSummary(
+    runtime: IAgentRuntime,
+    text: string
+): Promise<{ title: string; description: string }> {
+    // make sure text is under 128k characters
+    text = trimTokens(text, 100000, "gpt-4o-mini"); // TODO: clean this up
+
+    const prompt = `Please generate a concise summary for the following text:
+  
+  Text: """
+  ${text}
+  """
+  
+  Respond with a JSON object in the following format:
+  \`\`\`json
+  {
+    "title": "Generated Title",
+    "summary": "Generated summary and/or description of the text"
+  }
+  \`\`\``;
+
+    const response = await generateText({
+        runtime,
+        context: prompt,
+        modelClass: ModelClass.SMALL,
+    });
+
+    const parsedResponse = parseJSONObjectFromText(response);
+
+    if (parsedResponse) {
+        return {
+            title: parsedResponse.title,
+            description: parsedResponse.summary,
+        };
+    }
+
+    return {
+        title: "",
+        description: "",
+    };
+}
+
 export class AttachmentManager {
     private attachmentCache: Map<string, Media> = new Map();
     private runtime: IAgentRuntime;
@@ -49,7 +102,9 @@ export class AttachmentManager {
             media = await this.processImageAttachment(attachment);
         } else if (
             attachment.contentType?.startsWith("video/") ||
-            this.runtime.videoService.isVideoUrl(attachment.url)
+            this.runtime
+                .getService<IVideoService>(ServiceType.VIDEO)
+                .isVideoUrl(attachment.url)
         ) {
             media = await this.processVideoAttachment(attachment);
         } else {
@@ -80,10 +135,9 @@ export class AttachmentManager {
                 throw new Error("Unsupported audio/video format");
             }
 
-            const transcription =
-                await this.runtime.transcriptionService.transcribeAttachment(
-                    audioBuffer
-                );
+            const transcription = await this.runtime
+                .getService<ITranscriptionService>(ServiceType.TRANSCRIPTION)
+                .transcribeAttachment(audioBuffer);
             const { title, description } = await generateSummary(
                 this.runtime,
                 transcription
@@ -162,9 +216,9 @@ export class AttachmentManager {
         try {
             const response = await fetch(attachment.url);
             const pdfBuffer = await response.arrayBuffer();
-            const text = await this.runtime.pdfService.convertPdfToText(
-                Buffer.from(pdfBuffer)
-            );
+            const text = await this.runtime
+                .getService<IPdfService>(ServiceType.PDF)
+                .convertPdfToText(Buffer.from(pdfBuffer));
             const { title, description } = await generateSummary(
                 this.runtime,
                 text
@@ -230,10 +284,11 @@ export class AttachmentManager {
         attachment: Attachment
     ): Promise<Media> {
         try {
-            const { description, title } =
-                await this.runtime.imageDescriptionService.describeImage(
-                    attachment.url
-                );
+            const { description, title } = await this.runtime
+                .getService<IImageDescriptionService>(
+                    ServiceType.IMAGE_DESCRIPTION
+                )
+                .describeImage(attachment.url);
             return {
                 id: attachment.id,
                 url: attachment.url,
@@ -264,10 +319,14 @@ export class AttachmentManager {
     private async processVideoAttachment(
         attachment: Attachment
     ): Promise<Media> {
-        if (this.runtime.videoService.isVideoUrl(attachment.url)) {
-            const videoInfo = await this.runtime.videoService.processVideo(
-                attachment.url
-            );
+        if (
+            this.runtime
+                .getService<IVideoService>(ServiceType.VIDEO)
+                .isVideoUrl(attachment.url)
+        ) {
+            const videoInfo = await this.runtime
+                .getService<IVideoService>(ServiceType.VIDEO)
+                .processVideo(attachment.url);
             return {
                 id: attachment.id,
                 url: attachment.url,
diff --git a/packages/core/src/clients/discord/index.ts b/packages/client-discord/src/index.ts
similarity index 93%
rename from packages/core/src/clients/discord/index.ts
rename to packages/client-discord/src/index.ts
index ba7945107aa..eda359bae03 100644
--- a/packages/core/src/clients/discord/index.ts
+++ b/packages/client-discord/src/index.ts
@@ -1,3 +1,11 @@
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
+import {
+    Character,
+    Client as ElizaClient,
+    IAgentRuntime,
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
 import {
     Client,
     Events,
@@ -8,10 +16,6 @@ import {
     User,
 } from "discord.js";
 import { EventEmitter } from "events";
-import { embeddingZeroVector } from "../../core/memory.ts";
-import { Character, IAgentRuntime } from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
-import { elizaLogger } from "../../index.ts";
 import chat_with_attachments from "./actions/chat_with_attachments.ts";
 import download_media from "./actions/download_media.ts";
 import joinvoice from "./actions/joinvoice.ts";
@@ -292,5 +296,13 @@ export class DiscordClient extends EventEmitter {
     }
 }
 
-// Export the DiscordClient class
-export default DiscordClient;
+export function startDiscord(runtime: IAgentRuntime) {
+    return new DiscordClient(runtime);
+}
+
+export const DiscordClientInterface: ElizaClient = {
+    start: async (runtime: IAgentRuntime) => new DiscordClient(runtime),
+    stop: async (runtime: IAgentRuntime) => {
+        console.warn("Discord client does not support stopping yet");
+    },
+};
diff --git a/packages/core/src/clients/discord/messages.ts b/packages/client-discord/src/messages.ts
similarity index 91%
rename from packages/core/src/clients/discord/messages.ts
rename to packages/client-discord/src/messages.ts
index 8fc3e7c3e68..197e0d8b3e4 100644
--- a/packages/core/src/clients/discord/messages.ts
+++ b/packages/client-discord/src/messages.ts
@@ -1,40 +1,84 @@
-import {
-    ChannelType,
-    Client,
-    Message as DiscordMessage,
-    PermissionsBitField,
-    TextChannel,
-    ThreadChannel,
-} from "discord.js";
-import { composeContext } from "../../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     generateMessageResponse,
     generateShouldRespond,
-} from "../../core/generation.ts";
-import { embeddingZeroVector } from "../../core/memory.ts";
+} from "@ai16z/eliza/src/generation.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
+import {
+    messageCompletionFooter,
+    shouldRespondFooter,
+} from "@ai16z/eliza/src/parsing.ts";
 import {
     Content,
     HandlerCallback,
     IAgentRuntime,
+    IBrowserService,
+    ISpeechService,
+    IVideoService,
     Media,
     Memory,
     ModelClass,
+    ServiceType,
     State,
     UUID,
-} from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
-import { generateSummary } from "../../services/summary.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
+import { generateText, trimTokens } from "@ai16z/eliza/src/generation.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
+import {
+    ChannelType,
+    Client,
+    Message as DiscordMessage,
+    PermissionsBitField,
+    TextChannel,
+    ThreadChannel,
+} from "discord.js";
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
 import { AttachmentManager } from "./attachments.ts";
-
-import { elizaLogger } from "../../index.ts";
 import { VoiceManager } from "./voice.ts";
 
-import {
-    messageCompletionFooter,
-    shouldRespondFooter,
-} from "../../core/parsing.ts";
-
 const MAX_MESSAGE_LENGTH = 1900;
+async function generateSummary(
+    runtime: IAgentRuntime,
+    text: string
+): Promise<{ title: string; description: string }> {
+    // make sure text is under 128k characters
+    text = trimTokens(text, 100000, "gpt-4o-mini"); // TODO: clean this up
+
+    const prompt = `Please generate a concise summary for the following text:
+  
+  Text: """
+  ${text}
+  """
+  
+  Respond with a JSON object in the following format:
+  \`\`\`json
+  {
+    "title": "Generated Title",
+    "summary": "Generated summary and/or description of the text"
+  }
+  \`\`\``;
+
+    const response = await generateText({
+        runtime,
+        context: prompt,
+        modelClass: ModelClass.SMALL,
+    });
+
+    const parsedResponse = parseJSONObjectFromText(response);
+
+    if (parsedResponse) {
+        return {
+            title: parsedResponse.title,
+            description: parsedResponse.summary,
+        };
+    }
+
+    return {
+        title: "",
+        description: "",
+    };
+}
 
 export type InterestChannels = {
     [key: string]: {
@@ -118,12 +162,6 @@ export const discordMessageHandlerTemplate =
 {{actionExamples}}
 (Action examples are for reference only. Do not use the information from them in your response.)
 
-# Relevant facts that {{agentName}} knows:
-{{relevantFacts}}
-
-# Recent facts that {{agentName}} has learned:
-{{recentFacts}}
-
 # Task: Generate dialog and actions for the character {{agentName}}.
 About {{agentName}}:
 {{bio}}
@@ -464,11 +502,11 @@ export class MessageManager {
                     }
                     if (message.channel.type === ChannelType.GuildVoice) {
                         // For voice channels, use text-to-speech
-                        const audioStream =
-                            await this.runtime.speechService.generate(
-                                this.runtime,
-                                content.text
-                            );
+                        const audioStream = await this.runtime
+                            .getService<ISpeechService>(
+                                ServiceType.SPEECH_GENERATION
+                            )
+                            .generate(this.runtime, content.text);
                         await this.voiceManager.playAudioStream(
                             userId,
                             audioStream
@@ -551,16 +589,13 @@ export class MessageManager {
             if (message.channel.type === ChannelType.GuildVoice) {
                 // For voice channels, use text-to-speech for the error message
                 const errorMessage = "Sorry, I had a glitch. What was that?";
-                const audioStream = await this.runtime.speechService.generate(
-                    this.runtime,
-                    errorMessage
-                );
+                const audioStream = await this.runtime
+                    .getService<ISpeechService>(ServiceType.SPEECH_GENERATION)
+                    .generate(this.runtime, errorMessage);
                 await this.voiceManager.playAudioStream(userId, audioStream);
             } else {
                 // For text channels, send the error message
-                await message.reply(
-                    "Sorry, I encountered an error while processing your request."
-                );
+                console.error("Error sending message:", error);
             }
         }
     }
@@ -618,9 +653,14 @@ export class MessageManager {
         const urls = processedContent.match(urlRegex) || [];
 
         for (const url of urls) {
-            if (this.runtime.videoService.isVideoUrl(url)) {
-                const videoInfo =
-                    await this.runtime.videoService.processVideo(url);
+            if (
+                this.runtime
+                    .getService<IVideoService>(ServiceType.VIDEO)
+                    .isVideoUrl(url)
+            ) {
+                const videoInfo = await this.runtime
+                    .getService<IVideoService>(ServiceType.VIDEO)
+                    .processVideo(url);
                 attachments.push({
                     id: `youtube-${Date.now()}`,
                     url: url,
@@ -630,8 +670,9 @@ export class MessageManager {
                     text: videoInfo.text,
                 });
             } else {
-                const { title, bodyContent } =
-                    await this.runtime.browserService.getPageContent(url);
+                const { title, bodyContent } = await this.runtime
+                    .getService<IBrowserService>(ServiceType.BROWSER)
+                    .getPageContent(url, this.runtime);
                 const { title: newTitle, description } = await generateSummary(
                     this.runtime,
                     title + "\n" + bodyContent
diff --git a/packages/core/src/clients/discord/providers/channelState.ts b/packages/client-discord/src/providers/channelState.ts
similarity index 92%
rename from packages/core/src/clients/discord/providers/channelState.ts
rename to packages/client-discord/src/providers/channelState.ts
index 34fb634576e..775c7099b21 100644
--- a/packages/core/src/clients/discord/providers/channelState.ts
+++ b/packages/client-discord/src/providers/channelState.ts
@@ -3,7 +3,12 @@ import {
     Message as DiscordMessage,
     TextChannel,
 } from "discord.js";
-import { IAgentRuntime, Memory, Provider, State } from "../../../core/types.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 
 const channelStateProvider: Provider = {
     get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {
@@ -11,7 +16,6 @@ const channelStateProvider: Provider = {
             (state?.discordMessage as DiscordMessage) ||
             (state?.discordChannel as DiscordMessage);
         if (!discordMessage) {
-            console.log("discordMessage is null");
             return "";
         }
 
diff --git a/packages/core/src/clients/discord/providers/voiceState.ts b/packages/client-discord/src/providers/voiceState.ts
similarity index 92%
rename from packages/core/src/clients/discord/providers/voiceState.ts
rename to packages/client-discord/src/providers/voiceState.ts
index 0b510602f94..f8815e74a04 100644
--- a/packages/core/src/clients/discord/providers/voiceState.ts
+++ b/packages/client-discord/src/providers/voiceState.ts
@@ -1,6 +1,11 @@
 import { getVoiceConnection } from "@discordjs/voice";
 import { ChannelType, Message as DiscordMessage } from "discord.js";
-import { IAgentRuntime, Memory, Provider, State } from "../../../core/types.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 
 const voiceStateProvider: Provider = {
     get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {
diff --git a/packages/core/src/clients/discord/voice.ts b/packages/client-discord/src/voice.ts
similarity index 92%
rename from packages/core/src/clients/discord/voice.ts
rename to packages/client-discord/src/voice.ts
index d7f35ff90f9..6098592592f 100644
--- a/packages/core/src/clients/discord/voice.ts
+++ b/packages/client-discord/src/voice.ts
@@ -20,22 +20,50 @@ import {
 import EventEmitter from "events";
 import prism from "prism-media";
 import { Readable, pipeline } from "stream";
-import { composeContext } from "../../core/context.ts";
-import { generateMessageResponse } from "../../core/generation.ts";
-import { embeddingZeroVector } from "../../core/memory.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateMessageResponse } from "@ai16z/eliza/src/generation.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
 import {
     Content,
     HandlerCallback,
     IAgentRuntime,
+    ISpeechService,
+    ITranscriptionService,
     Memory,
     ModelClass,
+    ServiceType,
     State,
     UUID,
-} from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
-import { getWavHeader } from "../../services/audioUtils.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
+
+export function getWavHeader(
+    audioLength: number,
+    sampleRate: number,
+    channelCount: number = 1,
+    bitsPerSample: number = 16
+): Buffer {
+    const wavHeader = Buffer.alloc(44);
+    wavHeader.write("RIFF", 0);
+    wavHeader.writeUInt32LE(36 + audioLength, 4); // Length of entire file in bytes minus 8
+    wavHeader.write("WAVE", 8);
+    wavHeader.write("fmt ", 12);
+    wavHeader.writeUInt32LE(16, 16); // Length of format data
+    wavHeader.writeUInt16LE(1, 20); // Type of format (1 is PCM)
+    wavHeader.writeUInt16LE(channelCount, 22); // Number of channels
+    wavHeader.writeUInt32LE(sampleRate, 24); // Sample rate
+    wavHeader.writeUInt32LE(
+        (sampleRate * bitsPerSample * channelCount) / 8,
+        28
+    ); // Byte rate
+    wavHeader.writeUInt16LE((bitsPerSample * channelCount) / 8, 32); // Block align ((BitsPerSample * Channels) / 8)
+    wavHeader.writeUInt16LE(bitsPerSample, 34); // Bits per sample
+    wavHeader.write("data", 36); // Data chunk header
+    wavHeader.writeUInt32LE(audioLength, 40); // Data chunk size
+    return wavHeader;
+}
 
-import { messageCompletionFooter } from "../../core/parsing.ts";
+import { messageCompletionFooter } from "@ai16z/eliza/src/parsing.ts";
 
 const discordVoiceHandlerTemplate =
     `# Task: Generate conversational voice dialog for {{agentName}}.
@@ -370,10 +398,11 @@ export class VoiceManager extends EventEmitter {
                             await this.convertOpusToWav(inputBuffer);
 
                         console.log("starting transcription");
-                        const text =
-                            await this.runtime.transcriptionService.transcribe(
-                                wavBuffer
-                            );
+                        const text = await this.runtime
+                            .getService<ITranscriptionService>(
+                                ServiceType.TRANSCRIPTION
+                            )
+                            .transcribe(wavBuffer);
                         console.log("transcribed text: ", text);
                         transcriptionText += text;
                     } catch (error) {
@@ -511,11 +540,11 @@ export class VoiceManager extends EventEmitter {
                                     await this.runtime.updateRecentMessageState(
                                         state
                                     );
-                                const responseStream =
-                                    await this.runtime.speechService.generate(
-                                        this.runtime,
-                                        content.text
-                                    );
+                                const responseStream = await this.runtime
+                                    .getService<ISpeechService>(
+                                        ServiceType.SPEECH_GENERATION
+                                    )
+                                    .generate(this.runtime, content.text);
 
                                 if (responseStream) {
                                     await this.playAudioStream(
diff --git a/packages/client-discord/tsconfig.json b/packages/client-discord/tsconfig.json
new file mode 100644
index 00000000000..eaa78145aa3
--- /dev/null
+++ b/packages/client-discord/tsconfig.json
@@ -0,0 +1,8 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": "./src"
+    },
+    "include": ["src"]
+}
diff --git a/packages/client-discord/tsup.config.ts b/packages/client-discord/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/client-discord/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/client-telegram/package.json b/packages/client-telegram/package.json
new file mode 100644
index 00000000000..e1234d29485
--- /dev/null
+++ b/packages/client-telegram/package.json
@@ -0,0 +1,19 @@
+{
+    "name": "@ai16z/client-telegram",
+    "version": "0.0.1",
+    "main": "src/index.ts",
+    "type": "module",
+    "dependencies": {
+        "@telegraf/types": "7.1.0",
+        "@ai16z/eliza": "workspace:*",
+        "@ai16z/plugin-node": "workspace:*",
+        "telegraf": "4.16.3"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch"
+    }
+}
diff --git a/packages/core/src/clients/telegram/config/default.json5 b/packages/client-telegram/src/config/default.json5
similarity index 100%
rename from packages/core/src/clients/telegram/config/default.json5
rename to packages/client-telegram/src/config/default.json5
diff --git a/packages/client-telegram/src/index.ts b/packages/client-telegram/src/index.ts
new file mode 100644
index 00000000000..ccbd7138864
--- /dev/null
+++ b/packages/client-telegram/src/index.ts
@@ -0,0 +1,19 @@
+import elizaLogger from "@ai16z/eliza/src/logger.ts";
+import { Client, IAgentRuntime } from "@ai16z/eliza/src/types.ts";
+import { TelegramClient } from "./telegramClient.ts";
+
+export const TelegramClientInterface: Client = {
+    start: async (runtime: IAgentRuntime) => {
+        const botToken = runtime.getSetting("TELEGRAM_BOT_TOKEN");
+        const tg = new TelegramClient(runtime, botToken);
+        elizaLogger.success(
+            `✅ Telegram client successfully started for character ${runtime.character.name}`
+        );
+        return tg;
+    },
+    stop: async (runtime: IAgentRuntime) => {
+        console.warn("Telegram client does not support stopping yet");
+    },
+};
+
+export default TelegramClientInterface;
diff --git a/packages/core/src/clients/telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts
similarity index 95%
rename from packages/core/src/clients/telegram/src/messageManager.ts
rename to packages/client-telegram/src/messageManager.ts
index 40f8aeb80e8..144f1bdbef5 100644
--- a/packages/core/src/clients/telegram/src/messageManager.ts
+++ b/packages/client-telegram/src/messageManager.ts
@@ -1,28 +1,29 @@
 import { Message } from "@telegraf/types";
 import { Context, Telegraf } from "telegraf";
 
-import { composeContext } from "../../../core/context.ts";
-import { embeddingZeroVector } from "../../../core/memory.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
 import {
     Content,
     HandlerCallback,
     IAgentRuntime,
+    IImageDescriptionService,
     Memory,
     ModelClass,
     State,
     UUID,
-} from "../../../core/types.ts";
-import { stringToUuid } from "../../../core/uuid.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 
 import {
     generateMessageResponse,
     generateShouldRespond,
-} from "../../../core/generation.ts";
+} from "@ai16z/eliza/src/generation.ts";
 import {
     messageCompletionFooter,
     shouldRespondFooter,
-} from "../../../core/parsing.ts";
-import ImageDescriptionService from "../../../services/image.ts";
+} from "@ai16z/eliza/src/parsing.ts";
+import ImageDescriptionService from "@ai16z/plugin-node/src/services/image.ts";
 
 const MAX_MESSAGE_LENGTH = 4096; // Telegram's max message length
 
@@ -101,12 +102,6 @@ const telegramMessageHandlerTemplate =
 {{actionExamples}}
 (Action examples are for reference only. Do not use the information from them in your response.)
 
-# Relevant facts that {{agentName}} knows:
-{{relevantFacts}}
-
-# Recent facts that {{agentName}} has learned:
-{{recentFacts}}
-
 # Task: Generate dialog and actions for the character {{agentName}}.
 About {{agentName}}:
 {{bio}}
@@ -134,12 +129,12 @@ Note that {{agentName}} is capable of reading/seeing/hearing various forms of me
 export class MessageManager {
     private bot: Telegraf<Context>;
     private runtime: IAgentRuntime;
-    private imageService: ImageDescriptionService;
+    private imageService: IImageDescriptionService;
 
     constructor(bot: Telegraf<Context>, runtime: IAgentRuntime) {
         this.bot = bot;
         this.runtime = runtime;
-        this.imageService = ImageDescriptionService.getInstance(this.runtime);
+        this.imageService = ImageDescriptionService.getInstance();
     }
 
     // Process image messages and generate descriptions
@@ -175,8 +170,9 @@ export class MessageManager {
             }
 
             if (imageUrl) {
-                const { title, description } =
-                    await this.imageService.describeImage(imageUrl);
+                const { title, description } = await this.imageService
+                    .getInstance()
+                    .describeImage(imageUrl);
                 const fullDescription = `[Image: ${title}\n${description}]`;
                 return { description: fullDescription };
             }
@@ -478,9 +474,7 @@ export class MessageManager {
             );
         } catch (error) {
             console.error("❌ Error handling message:", error);
-            await ctx.reply(
-                "Sorry, I encountered an error while processing your request."
-            );
+            console.error("Error sending message:", error);
         }
     }
 }
diff --git a/packages/core/src/clients/telegram/src/index.ts b/packages/client-telegram/src/telegramClient.ts
similarity index 96%
rename from packages/core/src/clients/telegram/src/index.ts
rename to packages/client-telegram/src/telegramClient.ts
index dd6cc6156e9..6d729746d65 100644
--- a/packages/core/src/clients/telegram/src/index.ts
+++ b/packages/client-telegram/src/telegramClient.ts
@@ -1,8 +1,8 @@
 import { Context, Telegraf } from "telegraf";
 
-import { IAgentRuntime } from "../../../core/types.ts";
+import { IAgentRuntime } from "@ai16z/eliza/src/types.ts";
 import { MessageManager } from "./messageManager.ts";
-import { elizaLogger } from "../../../index.ts";
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
 
 export class TelegramClient {
     private bot: Telegraf<Context>;
diff --git a/packages/client-telegram/tsconfig.json b/packages/client-telegram/tsconfig.json
new file mode 100644
index 00000000000..eaa78145aa3
--- /dev/null
+++ b/packages/client-telegram/tsconfig.json
@@ -0,0 +1,8 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": "./src"
+    },
+    "include": ["src"]
+}
diff --git a/packages/client-telegram/tsup.config.ts b/packages/client-telegram/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/client-telegram/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/client-twitter/package.json b/packages/client-twitter/package.json
new file mode 100644
index 00000000000..0fef6626651
--- /dev/null
+++ b/packages/client-twitter/package.json
@@ -0,0 +1,22 @@
+{
+    "name": "@ai16z/client-twitter",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "glob": "11.0.0",
+        "agent-twitter-client": "0.0.13"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/clients/twitter/base.ts b/packages/client-twitter/src/base.ts
similarity index 97%
rename from packages/core/src/clients/twitter/base.ts
rename to packages/client-twitter/src/base.ts
index 8617df324ec..fd2e887f02e 100644
--- a/packages/core/src/clients/twitter/base.ts
+++ b/packages/client-twitter/src/base.ts
@@ -1,3 +1,12 @@
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
+import {
+    Content,
+    IAgentRuntime,
+    IImageDescriptionService,
+    Memory,
+    State,
+    UUID,
+} from "@ai16z/eliza/src/types.ts";
 import {
     QueryTweetsResponse,
     Scraper,
@@ -8,20 +17,11 @@ import { EventEmitter } from "events";
 import fs from "fs";
 import path from "path";
 import { fileURLToPath } from "url";
-import { embeddingZeroVector } from "../../core/memory.ts";
-import {
-    Content,
-    IAgentRuntime,
-    Memory,
-    State,
-    UUID,
-} from "../../core/types.ts";
-import ImageDescriptionService from "../../services/image.ts";
 
 import { glob } from "glob";
 
-import { stringToUuid } from "../../core/uuid.ts";
-import { elizaLogger } from "../../index.ts";
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 
 export function extractAnswer(text: string): string {
     const startIndex = text.indexOf("Answer: ") + 8;
@@ -88,8 +88,8 @@ export class ClientBase extends EventEmitter {
     runtime: IAgentRuntime;
     directions: string;
     lastCheckedTweetId: number | null = null;
-    tweetCacheFilePath = "tweetcache/latest_checked_tweet_id.txt";
-    imageDescriptionService: ImageDescriptionService;
+    tweetCacheFilePath = __dirname + "/tweetcache/latest_checked_tweet_id.txt";
+    imageDescriptionService: IImageDescriptionService;
     temperature: number = 0.5;
 
     private tweetCache: Map<string, Tweet> = new Map();
@@ -103,7 +103,7 @@ export class ClientBase extends EventEmitter {
         }
         const cacheDir = path.join(
             __dirname,
-            "../../../tweetcache",
+            "tweetcache",
             tweet.conversationId,
             `${tweet.id}.json`
         );
@@ -172,11 +172,14 @@ export class ClientBase extends EventEmitter {
             this.runtime.character.style.post.join();
 
         try {
+            console.log("this.tweetCacheFilePath", this.tweetCacheFilePath)
             if (fs.existsSync(this.tweetCacheFilePath)) {
+                // make it?
                 const data = fs.readFileSync(this.tweetCacheFilePath, "utf-8");
                 this.lastCheckedTweetId = parseInt(data.trim());
             } else {
                 console.warn("Tweet cache file not found.");
+                console.warn(this.tweetCacheFilePath)
             }
         } catch (error) {
             console.error(
@@ -186,7 +189,7 @@ export class ClientBase extends EventEmitter {
         }
         const cookiesFilePath = path.join(
             __dirname,
-            "../../../tweetcache/" +
+            "tweetcache/" +
                 this.runtime.getSetting("TWITTER_USERNAME") +
                 "_cookies.json"
         );
diff --git a/packages/client-twitter/src/index.ts b/packages/client-twitter/src/index.ts
new file mode 100644
index 00000000000..ab0cd755f3a
--- /dev/null
+++ b/packages/client-twitter/src/index.ts
@@ -0,0 +1,27 @@
+import { TwitterPostClient } from "./post.ts";
+import { TwitterSearchClient } from "./search.ts";
+import { TwitterInteractionClient } from "./interactions.ts";
+import { IAgentRuntime, Client } from "@ai16z/eliza/src/types.ts";
+
+class TwitterAllClient {
+    post: TwitterPostClient;
+    search: TwitterSearchClient;
+    interaction: TwitterInteractionClient;
+    constructor(runtime: IAgentRuntime) {
+        this.post = new TwitterPostClient(runtime);
+        this.search = new TwitterSearchClient(runtime);
+        this.interaction = new TwitterInteractionClient(runtime);
+    }
+}
+
+export const TwitterClientInterface: Client = {
+    async start(runtime: IAgentRuntime) {
+        console.log("Twitter client started");
+        return new TwitterAllClient(runtime);
+    },
+    async stop(runtime: IAgentRuntime) {
+        console.warn("Twitter client does not support stopping yet");
+    },
+};
+
+export default TwitterClientInterface;
diff --git a/packages/core/src/clients/twitter/interactions.ts b/packages/client-twitter/src/interactions.ts
similarity index 92%
rename from packages/core/src/clients/twitter/interactions.ts
rename to packages/client-twitter/src/interactions.ts
index 09c1f7f394f..cef4b7bf60e 100644
--- a/packages/core/src/clients/twitter/interactions.ts
+++ b/packages/client-twitter/src/interactions.ts
@@ -1,14 +1,14 @@
 import { SearchMode, Tweet } from "agent-twitter-client";
 import fs from "fs";
-import { composeContext } from "../../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     generateMessageResponse,
     generateShouldRespond,
-} from "../../core/generation.ts";
+} from "@ai16z/eliza/src/generation.ts";
 import {
     messageCompletionFooter,
     shouldRespondFooter,
-} from "../../core/parsing.ts";
+} from "@ai16z/eliza/src/parsing.ts";
 import {
     Content,
     HandlerCallback,
@@ -16,16 +16,13 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import { ClientBase } from "./base.ts";
 import { buildConversationThread, sendTweet, wait } from "./utils.ts";
 
 export const twitterMessageHandlerTemplate =
-    `{{relevantFacts}}
-{{recentFacts}}
-
-{{timeline}}
+    `{{timeline}}
 
 {{providers}}
 
@@ -149,11 +146,14 @@ export class TwitterInteractionClient extends ClientBase {
                     this.lastCheckedTweetId = parseInt(tweet.id);
 
                     try {
-                        fs.writeFileSync(
-                            this.tweetCacheFilePath,
-                            this.lastCheckedTweetId.toString(),
-                            "utf-8"
-                        );
+                        if (this.lastCheckedTweetId) {
+
+                            fs.writeFileSync(
+                                this.tweetCacheFilePath,
+                                this.lastCheckedTweetId.toString(),
+                                "utf-8"
+                            );
+                        }
                     } catch (error) {
                         console.error(
                             "Error saving latest checked tweet ID to file:",
@@ -165,11 +165,13 @@ export class TwitterInteractionClient extends ClientBase {
 
             // Save the latest checked tweet ID to the file
             try {
-                fs.writeFileSync(
-                    this.tweetCacheFilePath,
-                    this.lastCheckedTweetId.toString(),
-                    "utf-8"
-                );
+                if (this.lastCheckedTweetId) {
+                    fs.writeFileSync(
+                        this.tweetCacheFilePath,
+                        this.lastCheckedTweetId.toString(),
+                        "utf-8"
+                    );
+                }
             } catch (error) {
                 console.error(
                     "Error saving latest checked tweet ID to file:",
@@ -255,10 +257,10 @@ export class TwitterInteractionClient extends ClientBase {
                     url: tweet.permanentUrl,
                     inReplyTo: tweet.inReplyToStatusId
                         ? stringToUuid(
-                              tweet.inReplyToStatusId +
-                                  "-" +
-                                  this.runtime.agentId
-                          )
+                            tweet.inReplyToStatusId +
+                            "-" +
+                            this.runtime.agentId
+                        )
                         : undefined,
                 },
                 userId: userIdUUID,
diff --git a/packages/core/src/clients/twitter/post.ts b/packages/client-twitter/src/post.ts
similarity index 95%
rename from packages/core/src/clients/twitter/post.ts
rename to packages/client-twitter/src/post.ts
index bb93c2637e4..8525591d4a5 100644
--- a/packages/core/src/clients/twitter/post.ts
+++ b/packages/client-twitter/src/post.ts
@@ -1,10 +1,10 @@
 import { Tweet } from "agent-twitter-client";
 import fs from "fs";
-import { composeContext } from "../../core/context.ts";
-import { generateText } from "../../core/generation.ts";
-import { embeddingZeroVector } from "../../core/memory.ts";
-import { IAgentRuntime, ModelClass } from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateText } from "@ai16z/eliza/src/generation.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
+import { IAgentRuntime, ModelClass } from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import { ClientBase } from "./base.ts";
 
 const twitterPostTemplate = `{{timeline}}
diff --git a/packages/core/src/clients/twitter/search.ts b/packages/client-twitter/src/search.ts
similarity index 95%
rename from packages/core/src/clients/twitter/search.ts
rename to packages/client-twitter/src/search.ts
index 45a9c073042..8ac4c88bf13 100644
--- a/packages/core/src/clients/twitter/search.ts
+++ b/packages/client-twitter/src/search.ts
@@ -1,27 +1,26 @@
 import { SearchMode } from "agent-twitter-client";
 import fs from "fs";
-import { composeContext } from "../../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     generateMessageResponse,
     generateText,
-} from "../../core/generation.ts";
-import { messageCompletionFooter } from "../../core/parsing.ts";
+} from "@ai16z/eliza/src/generation.ts";
+import { messageCompletionFooter } from "@ai16z/eliza/src/parsing.ts";
 import {
     Content,
     HandlerCallback,
     IAgentRuntime,
+    IImageDescriptionService,
     ModelClass,
+    ServiceType,
     State,
-} from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import { ClientBase } from "./base.ts";
 import { buildConversationThread, sendTweet, wait } from "./utils.ts";
 
 const twitterSearchTemplate =
-    `{{relevantFacts}}
-{{recentFacts}}
-
-{{timeline}}
+    `{{timeline}}
 
 {{providers}}
 
@@ -237,10 +236,11 @@ export class TwitterSearchClient extends ClientBase {
             // Generate image descriptions using GPT-4 vision API
             const imageDescriptions = [];
             for (const photo of selectedTweet.photos) {
-                const description =
-                    await this.runtime.imageDescriptionService.describeImage(
-                        photo.url
-                    );
+                const description = await this.runtime
+                    .getService<IImageDescriptionService>(
+                        ServiceType.IMAGE_DESCRIPTION
+                    )
+                    .describeImage(photo.url);
                 imageDescriptions.push(description);
             }
 
diff --git a/packages/core/src/clients/twitter/utils.ts b/packages/client-twitter/src/utils.ts
similarity index 89%
rename from packages/core/src/clients/twitter/utils.ts
rename to packages/client-twitter/src/utils.ts
index 058c6740588..b00e2554fdb 100644
--- a/packages/core/src/clients/twitter/utils.ts
+++ b/packages/client-twitter/src/utils.ts
@@ -1,9 +1,9 @@
 import { Tweet } from "agent-twitter-client";
-import { embeddingZeroVector } from "../../core/memory.ts";
-import { Content, Memory, UUID } from "../../core/types.ts";
-import { stringToUuid } from "../../core/uuid.ts";
+import { embeddingZeroVector } from "@ai16z/eliza/src/memory.ts";
+import { Content, Memory, UUID } from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import { ClientBase } from "./base.ts";
-import { elizaLogger } from "../../index.ts";
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
 
 const MAX_TWEET_LENGTH = 240;
 
@@ -70,10 +70,10 @@ export async function buildConversationThread(
                     url: currentTweet.permanentUrl,
                     inReplyTo: currentTweet.inReplyToStatusId
                         ? stringToUuid(
-                            currentTweet.inReplyToStatusId +
-                            "-" +
-                            client.runtime.agentId
-                        )
+                              currentTweet.inReplyToStatusId +
+                                  "-" +
+                                  client.runtime.agentId
+                          )
                         : undefined,
                 },
                 createdAt: currentTweet.timestamp * 1000,
@@ -152,8 +152,8 @@ export async function sendTweetChunks(
             url: tweet.permanentUrl,
             inReplyTo: tweet.inReplyToStatusId
                 ? stringToUuid(
-                    tweet.inReplyToStatusId + "-" + client.runtime.agentId
-                )
+                      tweet.inReplyToStatusId + "-" + client.runtime.agentId
+                  )
                 : undefined,
         },
         roomId,
@@ -214,8 +214,8 @@ export async function sendTweet(
             url: tweet.permanentUrl,
             inReplyTo: tweet.inReplyToStatusId
                 ? stringToUuid(
-                    tweet.inReplyToStatusId + "-" + client.runtime.agentId
-                )
+                      tweet.inReplyToStatusId + "-" + client.runtime.agentId
+                  )
                 : undefined,
         },
         roomId,
@@ -263,9 +263,18 @@ export function truncateTweetContent(content: string): string {
     while (content.length > MAX_TWEET_LENGTH && iterations < 10) {
         iterations++;
         // second to last index of period or exclamation point
-        const secondToLastIndexOfPeriod = content.lastIndexOf(".", content.length - 2);
-        const secondToLastIndexOfExclamation = content.lastIndexOf("!", content.length - 2);
-        const secondToLastIndex = Math.max(secondToLastIndexOfPeriod, secondToLastIndexOfExclamation);
+        const secondToLastIndexOfPeriod = content.lastIndexOf(
+            ".",
+            content.length - 2
+        );
+        const secondToLastIndexOfExclamation = content.lastIndexOf(
+            "!",
+            content.length - 2
+        );
+        const secondToLastIndex = Math.max(
+            secondToLastIndexOfPeriod,
+            secondToLastIndexOfExclamation
+        );
         content = content.slice(0, secondToLastIndex);
     }
 
diff --git a/packages/client-twitter/tsconfig.json b/packages/client-twitter/tsconfig.json
new file mode 100644
index 00000000000..eaa78145aa3
--- /dev/null
+++ b/packages/client-twitter/tsconfig.json
@@ -0,0 +1,8 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": "./src"
+    },
+    "include": ["src"]
+}
diff --git a/packages/client-twitter/tsup.config.ts b/packages/client-twitter/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/client-twitter/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/core/package.json b/packages/core/package.json
index 938ce38c58b..716e3b27f4a 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,5 +1,5 @@
 {
-    "name": "@eliza/core",
+    "name": "@ai16z/eliza",
     "version": "1.0.0",
     "description": "",
     "main": "dist/index.js",
@@ -11,14 +11,12 @@
         "start": "node --loader ts-node/esm src/index.ts --characters=\"../characters/blobert.character.json\"",
         "start:service:all": "pm2 start pnpm --name=\"all\" --restart-delay=3000 --max-restarts=10 -- run start:all",
         "stop:service:all": "pm2 stop all",
-        "start:all": "node --loader ts-node/esm src/index.ts --characters=\"../characters/degenspartan.json\",\"../characters/ruby.character.json\",\"../characters/pmairca.json\"",        "watch": "tsc --watch",
+        "start:all": "node --loader ts-node/esm src/index.ts --characters=\"../characters/degenspartan.json\",\"../characters/ruby.character.json\",\"../characters/pmairca.json\"",
+        "watch": "tsc --watch",
         "dev": "tsup --format esm --dts --watch",
         "build:docs": "cd docs && pnpm run build",
-        "postinstall": "npx playwright install-deps && npx playwright install",
         "test": "jest --runInBand",
-        "test:watch": "jest --runInBand --watch",
-        "test:sqlite": "cross-env TEST_DATABASE_CLIENT=sqlite jest --runInBand --watch",
-        "test:sqljs": "cross-env TEST_DATABASE_CLIENT=sqljs jest --runInBand --watch"
+        "test:watch": "jest --runInBand --watch"
     },
     "author": "",
     "license": "MIT",
@@ -30,12 +28,10 @@
         "@rollup/plugin-replace": "5.0.7",
         "@rollup/plugin-terser": "0.1.0",
         "@rollup/plugin-typescript": "11.1.6",
-        "@types/better-sqlite3": "7.6.11",
         "@types/fluent-ffmpeg": "2.1.27",
         "@types/jest": "29.5.14",
         "@types/node": "22.8.4",
         "@types/pdfjs-dist": "^2.10.378",
-        "@types/sql.js": "1.4.9",
         "@types/tar": "6.1.13",
         "@types/wav-encoder": "1.3.3",
         "@typescript-eslint/eslint-plugin": "8.12.2",
@@ -44,125 +40,39 @@
         "eslint": "9.13.0",
         "eslint-config-prettier": "9.1.0",
         "eslint-plugin-prettier": "5.2.1",
-        "itty-router": "5.0.18",
         "jest": "29.7.0",
         "lint-staged": "15.2.10",
+        "nodemon": "3.1.7",
+        "pm2": "5.4.2",
         "prettier": "3.3.3",
         "rimraf": "6.0.1",
         "rollup": "2.79.2",
         "ts-jest": "29.2.5",
         "ts-node": "10.9.2",
         "tslib": "2.8.0",
-        "typescript": "5.6.3",
-        "wrangler": "3.84.0"
+        "tsup": "^8.3.5",
+        "typescript": "5.6.3"
     },
     "dependencies": {
         "@ai-sdk/anthropic": "^0.0.53",
         "@ai-sdk/google": "^0.0.55",
         "@ai-sdk/google-vertex": "^0.0.42",
         "@ai-sdk/groq": "^0.0.3",
-        "@ai-sdk/openai": "^0.0.70",
-        "ollama-ai-provider": "^0.16.1",
+        "@ai-sdk/openai": "1.0.0-canary.3",
         "@anthropic-ai/sdk": "^0.30.1",
-        "@cliqz/adblocker-playwright": "1.34.0",
-        "@coral-xyz/anchor": "^0.30.1",
-        "@discordjs/opus": "github:discordjs/opus",
-        "@discordjs/rest": "2.4.0",
-        "@discordjs/voice": "0.17.0",
-        "@echogarden/espeak-ng-emscripten": "0.3.0",
-        "@echogarden/kissfft-wasm": "0.2.0",
-        "@echogarden/speex-resampler-wasm": "0.2.1",
-        "@huggingface/transformers": "3.0.1",
-        "@opendocsg/pdf2md": "0.1.31",
-        "@solana/spl-token": "0.4.9",
-        "@solana/web3.js": "1.95.4",
-        "@supabase/supabase-js": "2.46.1",
-        "@telegraf/types": "7.1.0",
-        "@types/body-parser": "1.19.5",
-        "@types/cors": "2.8.17",
-        "@types/express": "5.0.0",
         "@types/uuid": "^10.0.0",
-        "agent-twitter-client": "0.0.13",
         "ai": "^3.4.23",
-        "alawmulaw": "6.0.0",
-        "ansi-colors": "4.1.3",
         "anthropic-vertex-ai": "^1.0.0",
-        "better-sqlite3": "11.5.0",
-        "bignumber": "1.1.0",
-        "bignumber.js": "9.1.2",
-        "body-parser": "1.20.3",
-        "capsolver-npm": "2.0.2",
-        "cldr-segmentation": "2.2.1",
-        "command-exists": "1.2.9",
-        "commander": "12.1.0",
-        "cors": "2.8.5",
-        "cross-fetch": "4.0.0",
-        "csv-writer": "1.6.0",
-        "discord.js": "14.16.3",
-        "espeak-ng": "1.0.2",
-        "express": "4.21.1",
-        "ffmpeg-static": "5.2.0",
-        "figlet": "1.8.0",
-        "fluent-ffmpeg": "2.1.3",
-        "formdata-node": "6.0.3",
-        "fs-extra": "11.2.0",
+        "fastembed": "^1.14.1",
         "gaxios": "6.7.1",
-        "gif-frames": "^0.4.1",
         "glob": "11.0.0",
-        "graceful-fs": "4.2.11",
-        "html-escaper": "3.0.3",
-        "html-to-text": "9.0.5",
-        "import-meta-resolve": "4.1.0",
-        "install": "^0.13.0",
-        "jieba-wasm": "2.2.0",
         "js-sha1": "0.7.0",
-        "js-yaml": "^4.1.0",
-        "json5": "2.2.3",
-        "kuromoji": "0.1.2",
-        "libsodium-wrappers": "0.7.15",
-        "multer": "1.4.5-lts.1",
-        "node-cache": "5.1.2",
-        "node-llama-cpp": "3.1.1",
-        "node-wav": "0.0.2",
-        "nodejs-whisper": "0.1.18",
-        "nodemon": "3.1.7",
-        "onnxruntime-node": "^1.20.0",
+        "ollama-ai-provider": "^0.16.1",
         "openai": "4.69.0",
-        "pdfjs-dist": "4.7.76",
-        "pg": "^8.13.1",
-        "playwright": "1.48.2",
-        "pm2": "5.4.2",
-        "prism-media": "1.3.5",
-        "pumpdotfun-sdk": "1.3.2",
-        "puppeteer-extra": "3.3.6",
-        "puppeteer-extra-plugin-capsolver": "2.0.1",
-        "sql.js": "1.12.0",
-        "sqlite-vec": "0.1.4-alpha.2",
-        "srt": "0.0.3",
-        "systeminformation": "5.23.5",
-        "tar": "7.4.3",
-        "telegraf": "4.16.3",
         "tiktoken": "1.0.17",
         "tinyld": "1.3.4",
         "together-ai": "^0.7.0",
-        "tsup": "^8.3.5",
         "unique-names-generator": "4.7.1",
-        "uuid": "11.0.2",
-        "wav": "1.0.2",
-        "wav-encoder": "1.3.0",
-        "wavefile": "11.0.0",
-        "whisper-turbo": "0.11.0",
-        "ws": "8.18.0",
-        "yargs": "17.7.2",
-        "youtube-dl-exec": "3.0.10"
-    },
-    "trustedDependencies": {
-        "onnxruntime-node": "^1.20.0",
-        "@discordjs/opus": "github:discordjs/opus",
-        "@discordjs/voice": "0.17.0",
-        "sharp": "^0.33.5"
-    },
-    "peerDependencies": {
-        "onnxruntime-node": "^1.20.0"
+        "uuid": "11.0.2"
     }
 }
diff --git a/packages/core/src/core/actions.ts b/packages/core/src/actions.ts
similarity index 94%
rename from packages/core/src/core/actions.ts
rename to packages/core/src/actions.ts
index 18197752354..7863d5f6b39 100644
--- a/packages/core/src/core/actions.ts
+++ b/packages/core/src/actions.ts
@@ -1,13 +1,6 @@
 import { names, uniqueNamesGenerator } from "unique-names-generator";
 import { Action, ActionExample } from "./types.ts";
 
-import * as DefaultActions from "../actions/index.ts";
-
-export const defaultActions: Action[] = [
-    DefaultActions.ignore,
-    DefaultActions.none,
-];
-
 /**
  * Composes a set of example conversations based on provided actions and a specified count.
  * It randomly selects examples from the provided actions and formats them with generated names.
diff --git a/packages/core/src/actions/imageGeneration.ts b/packages/core/src/actions/imageGeneration.ts
deleted file mode 100644
index 0287c79e0d9..00000000000
--- a/packages/core/src/actions/imageGeneration.ts
+++ /dev/null
@@ -1,167 +0,0 @@
-import {
-    HandlerCallback,
-    IAgentRuntime,
-    Memory,
-    State,
-    Action,
-} from "../core/types.ts";
-import { elizaLogger } from "../index.ts";
-import { generateCaption, generateImage } from "./imageGenerationUtils.ts";
-
-export const imageGeneration: Action = {
-    name: "GENERATE_IMAGE",
-    similes: ["IMAGE_GENERATION", "IMAGE_GEN", "CREATE_IMAGE", "MAKE_PICTURE"],
-    description: "Generate an image to go along with the message.",
-    validate: async (runtime: IAgentRuntime, message: Memory) => {
-        // TODO: Abstract this to an image provider thing
-
-        const anthropicApiKeyOk = !!runtime.getSetting("ANTHROPIC_API_KEY");
-        const togetherApiKeyOk = !!runtime.getSetting("TOGETHER_API_KEY");
-
-        // TODO: Add openai DALL-E generation as well
-
-        return anthropicApiKeyOk && togetherApiKeyOk;
-    },
-    handler: async (
-        runtime: IAgentRuntime,
-        message: Memory,
-        state: State,
-        options: any,
-        callback: HandlerCallback
-    ) => {
-        elizaLogger.log("Composing state for message:", message);
-        state = (await runtime.composeState(message)) as State;
-        const userId = runtime.agentId;
-        elizaLogger.log("User ID:", userId);
-
-        const imagePrompt = message.content.text;
-        elizaLogger.log("Image prompt received:", imagePrompt);
-
-        // TODO: Generate a prompt for the image
-
-        const res: { image: string; caption: string }[] = [];
-
-        elizaLogger.log("Generating image with prompt:", imagePrompt);
-        const images = await generateImage(
-            {
-                prompt: imagePrompt,
-                width: 1024,
-                height: 1024,
-                count: 1,
-            },
-            runtime
-        );
-
-        if (images.success && images.data && images.data.length > 0) {
-            elizaLogger.log(
-                "Image generation successful, number of images:",
-                images.data.length
-            );
-            for (let i = 0; i < images.data.length; i++) {
-                const image = images.data[i];
-                elizaLogger.log(`Processing image ${i + 1}:`, image);
-
-                const caption = await generateCaption(
-                    {
-                        imageUrl: image,
-                    },
-                    runtime
-                );
-
-                elizaLogger.log(
-                    `Generated caption for image ${i + 1}:`,
-                    caption.title
-                );
-                res.push({ image: image, caption: caption.title });
-
-                callback(
-                    {
-                        text: caption.description,
-                        attachments: [
-                            {
-                                id: crypto.randomUUID(),
-                                url: image,
-                                title: "Generated image",
-                                source: "imageGeneration",
-                                description: caption.title,
-                                text: caption.description,
-                            },
-                        ],
-                    },
-                    []
-                );
-            }
-        } else {
-            elizaLogger.error("Image generation failed or returned no data.");
-        }
-    },
-    examples: [
-        // TODO: We want to generate images in more abstract ways, not just when asked to generate an image
-
-        [
-            {
-                user: "{{user1}}",
-                content: { text: "Generate an image of a cat" },
-            },
-            {
-                user: "{{agentName}}",
-                content: {
-                    text: "Here's an image of a cat",
-                    action: "GENERATE_IMAGE",
-                },
-            },
-        ],
-        [
-            {
-                user: "{{user1}}",
-                content: { text: "Generate an image of a dog" },
-            },
-            {
-                user: "{{agentName}}",
-                content: {
-                    text: "Here's an image of a dog",
-                    action: "GENERATE_IMAGE",
-                },
-            },
-        ],
-        [
-            {
-                user: "{{user1}}",
-                content: { text: "Create an image of a cat with a hat" },
-            },
-            {
-                user: "{{agentName}}",
-                content: {
-                    text: "Here's an image of a cat with a hat",
-                    action: "GENERATE_IMAGE",
-                },
-            },
-        ],
-        [
-            {
-                user: "{{user1}}",
-                content: { text: "Make an image of a dog with a hat" },
-            },
-            {
-                user: "{{agentName}}",
-                content: {
-                    text: "Here's an image of a dog with a hat",
-                    action: "GENERATE_IMAGE",
-                },
-            },
-        ],
-        [
-            {
-                user: "{{user1}}",
-                content: { text: "Paint an image of a cat with a hat" },
-            },
-            {
-                user: "{{agentName}}",
-                content: {
-                    text: "Here's an image of a cat with a hat",
-                    action: "GENERATE_IMAGE",
-                },
-            },
-        ],
-    ],
-} as Action;
diff --git a/packages/core/src/actions/imageGenerationUtils.ts b/packages/core/src/actions/imageGenerationUtils.ts
deleted file mode 100644
index d53e2e41edd..00000000000
--- a/packages/core/src/actions/imageGenerationUtils.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-// TODO: Replace with the vercel ai sdk and support all providers
-import { Buffer } from "buffer";
-import Together from "together-ai";
-import { IAgentRuntime } from "../core/types.ts";
-import { getImageGenModel, ImageGenModel } from "../core/imageGenModels.ts";
-import OpenAI from "openai";
-
-export const generateImage = async (
-    data: {
-        prompt: string;
-        width: number;
-        height: number;
-        count?: number;
-    },
-    runtime: IAgentRuntime
-): Promise<{
-    success: boolean;
-    data?: string[];
-    error?: any;
-}> => {
-    const { prompt, width, height } = data;
-    let { count } = data;
-    if (!count) {
-        count = 1;
-    }
-
-    const imageGenModel = runtime.imageGenModel;
-    const model = getImageGenModel(imageGenModel);
-    const apiKey =
-        imageGenModel === ImageGenModel.TogetherAI
-            ? runtime.getSetting("TOGETHER_API_KEY")
-            : runtime.getSetting("OPENAI_API_KEY");
-
-    try {
-        if (imageGenModel === ImageGenModel.TogetherAI) {
-            const together = new Together({ apiKey });
-            const response = await together.images.create({
-                model: "black-forest-labs/FLUX.1-schnell",
-                prompt,
-                width,
-                height,
-                steps: model.steps,
-                n: count,
-            });
-            const urls: string[] = [];
-            for (let i = 0; i < response.data.length; i++) {
-                //@ts-ignore
-                const url = response.data[i].url;
-                urls.push(url);
-            }
-            const base64s = await Promise.all(
-                urls.map(async (url) => {
-                    const response = await fetch(url);
-                    const blob = await response.blob();
-                    const buffer = await blob.arrayBuffer();
-                    let base64 = Buffer.from(buffer).toString("base64");
-                    base64 = "data:image/jpeg;base64," + base64;
-                    return base64;
-                })
-            );
-            return { success: true, data: base64s };
-        } else {
-            let targetSize = `${width}x${height}`;
-            if (
-                targetSize !== "1024x1024" &&
-                targetSize !== "1792x1024" &&
-                targetSize !== "1024x1792"
-            ) {
-                targetSize = "1024x1024";
-            }
-            const openai = new OpenAI({ apiKey });
-            const response = await openai.images.generate({
-                model: model.subModel,
-                prompt,
-                size: targetSize as "1024x1024" | "1792x1024" | "1024x1792",
-                n: count,
-                response_format: "b64_json",
-            });
-            const base64s = response.data.map(
-                (image) => `data:image/png;base64,${image.b64_json}`
-            );
-            return { success: true, data: base64s };
-        }
-    } catch (error) {
-        console.error(error);
-        return { success: false, error: error };
-    }
-};
-
-export const generateCaption = async (
-    data: { imageUrl: string },
-    runtime: IAgentRuntime
-): Promise<{
-    title: string;
-    description: string;
-}> => {
-    const { imageUrl } = data;
-    const resp = await runtime.imageDescriptionService.describeImage(imageUrl);
-    return {
-        title: resp.title.trim(),
-        description: resp.description.trim(),
-    };
-};
diff --git a/packages/core/src/actions/index.ts b/packages/core/src/actions/index.ts
deleted file mode 100644
index 830df17c33c..00000000000
--- a/packages/core/src/actions/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export * from "./followRoom.ts";
-export * from "./imageGeneration.ts";
-export * from "./muteRoom.ts";
-export * from "./swap.ts";
-export * from "./unfollowRoom.ts";
-export * from "./unmuteRoom.ts";
-export * from "./muteRoom.ts";
-export * from "./continue.ts";
-export * from "./followRoom.ts";
-export * from "./ignore.ts";
-export * from "./imageGenerationUtils.ts";
-export * from "./pumpfun.ts";
-export * from "./swap.ts";
-export * from "./takeOrder.ts";
-export * from "./none.ts";
diff --git a/packages/core/src/adapters/index.ts b/packages/core/src/adapters/index.ts
deleted file mode 100644
index 600a7df2028..00000000000
--- a/packages/core/src/adapters/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { PostgresDatabaseAdapter } from "./postgres.ts";
-export { SqliteDatabaseAdapter } from "./sqlite.ts";
diff --git a/packages/core/src/cli/config.ts b/packages/core/src/cli/config.ts
deleted file mode 100644
index 371e536dafb..00000000000
--- a/packages/core/src/cli/config.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import fs from "fs";
-import yaml from "js-yaml";
-import path from "path";
-import { fileURLToPath } from "url";
-import { Action } from "../core/types";
-import { elizaLogger } from "../index.ts";
-
-const ROOT_DIR = path.resolve(fileURLToPath(import.meta.url), "../../../src");
-
-interface ActionConfig {
-    name: string;
-    path: string;
-}
-
-export function loadActionConfigs(configPath: string): ActionConfig[] {
-    if (!fs.existsSync(configPath)) {
-        console.error(`Config file not found at path: ${configPath}`);
-        return [];
-    }
-
-    const configFile = fs.readFileSync(configPath, "utf8");
-    const parsedConfig = yaml.load(configFile) as { actions: ActionConfig[] };
-    return parsedConfig?.actions || [];
-}
-
-export async function loadCustomActions(
-    actionConfigs: ActionConfig[]
-): Promise<Action[]> {
-    const actions = [];
-
-    for (const config of actionConfigs) {
-        const resolvedPath = path.resolve(ROOT_DIR, config.path);
-        elizaLogger.log(`Importing action from: ${resolvedPath}`); // Debugging log
-
-        try {
-            const actionModule = await import(resolvedPath);
-            actions.push(actionModule[config.name]);
-        } catch (error) {
-            elizaLogger.error(
-                `Failed to import action from ${resolvedPath}:`,
-                error
-            );
-        }
-    }
-    return actions;
-}
diff --git a/packages/core/src/cli/index.ts b/packages/core/src/cli/index.ts
deleted file mode 100644
index 94165e13c07..00000000000
--- a/packages/core/src/cli/index.ts
+++ /dev/null
@@ -1,263 +0,0 @@
-export * from "./config.ts";
-
-import { defaultCharacter } from "../core/defaultCharacter.ts";
-import settings from "../core/settings.ts";
-import { Character, IAgentRuntime, ModelProvider } from "../core/types.ts";
-import * as Action from "../actions/index.ts";
-import * as Client from "../clients/index.ts";
-import * as Adapter from "../adapters/index.ts";
-import * as Provider from "../providers/index.ts";
-import yargs from "yargs";
-import { wait } from "../clients/twitter/utils.ts";
-
-import fs from "fs";
-import Database from "better-sqlite3";
-import { AgentRuntime } from "../core/runtime.ts";
-import { defaultActions } from "../core/actions.ts";
-import { Arguments } from "../types/index.ts";
-import { loadActionConfigs, loadCustomActions } from "./config.ts";
-import { elizaLogger } from "../index.ts";
-
-export async function initializeClients(
-    character: Character,
-    runtime: IAgentRuntime
-) {
-    const clients = [];
-    const clientTypes =
-        character.clients?.map((str) => str.toLowerCase()) || [];
-
-    if (clientTypes.includes("discord")) {
-        clients.push(startDiscord(runtime));
-    }
-
-    if (clientTypes.includes("telegram")) {
-        const telegramClient = await startTelegram(runtime, character);
-        if (telegramClient) clients.push(telegramClient);
-    }
-
-    if (clientTypes.includes("twitter")) {
-        const twitterClients = await startTwitter(runtime);
-        clients.push(...twitterClients);
-    }
-
-    return clients;
-}
-
-export function parseArguments(): Arguments {
-    try {
-        return yargs(process.argv.slice(2))
-            .option("character", {
-                type: "string",
-                description: "Path to the character JSON file",
-            })
-            .option("characters", {
-                type: "string",
-                description:
-                    "Comma separated list of paths to character JSON files",
-            })
-            .option("telegram", {
-                type: "boolean",
-                description: "Enable Telegram client",
-                default: false,
-            })
-            .parseSync() as Arguments;
-    } catch (error) {
-        console.error("Error parsing arguments:", error);
-        return {};
-    }
-}
-
-export function loadCharacters(charactersArg: string): Character[] {
-    let characterPaths = charactersArg
-        ?.split(",")
-        .map((path) => path.trim())
-        .map((path) => {
-            if (path.startsWith("../characters")) {
-                return `../${path}`;
-            }
-            if (path.startsWith("characters")) {
-                return `../../${path}`;
-            }
-            if (path.startsWith("./characters")) {
-                return `../.${path}`;
-            }
-            return path;
-        });
-
-    const loadedCharacters = [];
-
-    if (characterPaths?.length > 0) {
-        for (const path of characterPaths) {
-            try {
-                const character = JSON.parse(fs.readFileSync(path, "utf8"));
-                loadedCharacters.push(character);
-            } catch (e) {
-                console.error(`Error loading character from ${path}: ${e}`);
-            }
-        }
-    }
-
-    if (loadedCharacters.length === 0) {
-        console.log("No characters found, using default character");
-        loadedCharacters.push(defaultCharacter);
-    }
-
-    return loadedCharacters;
-}
-
-export function getTokenForProvider(
-    provider: ModelProvider,
-    character: Character
-) {
-    switch (provider) {
-        case ModelProvider.OPENAI:
-            return (
-                character.settings?.secrets?.OPENAI_API_KEY ||
-                settings.OPENAI_API_KEY
-            );
-        case ModelProvider.ANTHROPIC:
-            return (
-                character.settings?.secrets?.ANTHROPIC_API_KEY ||
-                character.settings?.secrets?.CLAUDE_API_KEY ||
-                settings.ANTHROPIC_API_KEY ||
-                settings.CLAUDE_API_KEY
-            );
-        case ModelProvider.REDPILL:
-            return (
-                character.settings?.secrets?.REDPILL_API_KEY ||
-                settings.REDPILL_API_KEY
-            );
-    }
-}
-export function initializeDatabase() {
-    if (settings.POSTGRES_URL) {
-        return new Adapter.PostgresDatabaseAdapter({
-            connectionString: settings.POSTGRES_URL,
-        });
-    } else {
-        return new Adapter.SqliteDatabaseAdapter(new Database("./db.sqlite"));
-    }
-}
-
-export async function createAgentRuntime(
-    character: Character,
-    db: any,
-    token: string,
-    configPath: string = "./elizaConfig.yaml"
-) {
-    const actionConfigs = loadActionConfigs(configPath);
-    const customActions = await loadCustomActions(actionConfigs);
-
-    console.log("Creating runtime for character", character.name);
-
-    return new AgentRuntime({
-        databaseAdapter: db,
-        token,
-        modelProvider: character.modelProvider,
-        evaluators: [],
-        character,
-        providers: [Provider.timeProvider, Provider.boredomProvider],
-        actions: [
-            // Default actions
-            ...defaultActions,
-
-            // Custom actions
-            Action.followRoom,
-            Action.unfollowRoom,
-            Action.unmuteRoom,
-            Action.muteRoom,
-            Action.imageGeneration,
-
-            // imported from elizaConfig.yaml
-            ...customActions,
-        ],
-    });
-}
-
-export async function createDirectRuntime(
-    character: Character,
-    db: any,
-    token: string,
-    configPath: string = "./elizaConfig.yaml"
-) {
-    const actionConfigs = loadActionConfigs(configPath);
-    const customActions = await loadCustomActions(actionConfigs);
-
-    console.log("Creating runtime for character", character.name);
-    return new AgentRuntime({
-        databaseAdapter: db,
-        token,
-        modelProvider: character.modelProvider,
-        evaluators: [],
-        character,
-        providers: [
-            Provider.timeProvider,
-            Provider.boredomProvider,
-            character.settings?.secrets?.WALLET_PUBLIC_KEY &&
-                Provider.walletProvider,
-        ].filter(Boolean),
-        actions: [
-            ...defaultActions,
-            // Custom actions
-            Action.followRoom,
-            Action.unfollowRoom,
-            Action.unmuteRoom,
-            Action.muteRoom,
-            Action.imageGeneration,
-
-            // imported from elizaConfig.yaml
-            ...customActions,
-        ],
-    });
-}
-
-export function startDiscord(runtime: IAgentRuntime) {
-    return new Client.DiscordClient(runtime);
-}
-
-export async function startTelegram(
-    runtime: IAgentRuntime,
-    character: Character
-) {
-    elizaLogger.log("🔍 Attempting to start Telegram bot...");
-    const botToken = runtime.getSetting("TELEGRAM_BOT_TOKEN");
-
-    if (!botToken) {
-        elizaLogger.error(
-            `❌ Telegram bot token is not set for character ${character.name}.`
-        );
-        return null;
-    }
-
-    try {
-        const telegramClient = new Client.TelegramClient(runtime, botToken);
-        await telegramClient.start();
-        elizaLogger.success(
-            `✅ Telegram client successfully started for character ${character.name}`
-        );
-        return telegramClient;
-    } catch (error) {
-        elizaLogger.error(
-            `❌ Error creating/starting Telegram client for ${character.name}:`,
-            error
-        );
-        return null;
-    }
-}
-
-export async function startTwitter(runtime: IAgentRuntime) {
-    elizaLogger.log("Starting Twitter clients...");
-    const twitterSearchClient = new Client.TwitterSearchClient(runtime);
-    await wait();
-    const twitterInteractionClient = new Client.TwitterInteractionClient(
-        runtime
-    );
-    await wait();
-    const twitterGenerationClient = new Client.TwitterPostClient(runtime);
-
-    return [
-        twitterInteractionClient,
-        twitterSearchClient,
-        twitterGenerationClient,
-    ];
-}
diff --git a/packages/core/src/clients/index.ts b/packages/core/src/clients/index.ts
deleted file mode 100644
index ec223316655..00000000000
--- a/packages/core/src/clients/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export {
-    TwitterPostClient,
-    TwitterInteractionClient,
-    TwitterSearchClient,
-} from "./twitter/index.ts";
-export { TelegramClient } from "./telegram/index.ts";
-export { DiscordClient } from "./discord/index.ts";
-export { DirectClient } from "./direct/index.ts";
diff --git a/packages/core/src/clients/telegram/index.ts b/packages/core/src/clients/telegram/index.ts
deleted file mode 100644
index 387f6cc2a02..00000000000
--- a/packages/core/src/clients/telegram/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { TelegramClient } from "./src/index.ts";
diff --git a/packages/core/src/clients/twitter/index.ts b/packages/core/src/clients/twitter/index.ts
deleted file mode 100644
index afc368e3ed9..00000000000
--- a/packages/core/src/clients/twitter/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { TwitterPostClient } from "./post.ts";
-export { TwitterSearchClient } from "./search.ts";
-export { TwitterInteractionClient } from "./interactions.ts";
diff --git a/packages/core/src/core/context.ts b/packages/core/src/context.ts
similarity index 100%
rename from packages/core/src/core/context.ts
rename to packages/core/src/context.ts
diff --git a/packages/core/src/core/embedding.ts b/packages/core/src/core/embedding.ts
deleted file mode 100644
index 1585044100e..00000000000
--- a/packages/core/src/core/embedding.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import models from "./models.ts";
-import { IAgentRuntime, ModelProvider } from "./types.ts";
-
-/**
- * Send a message to the OpenAI API for embedding.
- * @param input The input to be embedded.
- * @returns The embedding of the input.
- */
-export async function embed(runtime: IAgentRuntime, input: string) {
-    // get the charcter, and handle by model type
-    const model = models[runtime.character.settings.model];
-
-    if (model !== ModelProvider.OPENAI && model !== ModelProvider.OLLAMA) {
-        return await runtime.llamaService.getEmbeddingResponse(input);
-        //ollama supports embedding api so just use that
-    }
-
-    const embeddingModel = models[runtime.modelProvider].model.embedding;
-
-    // Check if we already have the embedding in the lore
-    const cachedEmbedding = await retrieveCachedEmbedding(runtime, input);
-    if (cachedEmbedding) {
-        return cachedEmbedding;
-    }
-
-    const requestOptions = {
-        method: "POST",
-        headers: {
-            "Content-Type": "application/json",
-            //Authorization: `Bearer ${runtime.token}`,
-            ...(runtime.modelProvider !== ModelProvider.OLLAMA && { Authorization: `Bearer ${runtime.token}` }),
-        },
-        body: JSON.stringify({
-            input,
-            model: embeddingModel,
-            length: 1536,
-        }),
-    };
-    try {
-        const response = await fetch(
-            //`${runtime.serverUrl}/embeddings`,
-            `${runtime.serverUrl}${runtime.modelProvider === ModelProvider.OLLAMA ? '/v1' : ''}/embeddings`,
-            requestOptions
-        );
-
-        if (!response.ok) {
-            throw new Error(
-                "OpenAI API Error: " +
-                    response.status +
-                    " " +
-                    response.statusText
-            );
-        }
-
-        interface OpenAIEmbeddingResponse {
-            data: Array<{ embedding: number[] }>;
-        }
-
-        const data: OpenAIEmbeddingResponse = await response.json();
-
-        return data?.data?.[0].embedding;
-    } catch (e) {
-        console.error(e);
-        throw e;
-    }
-}
-
-export async function retrieveCachedEmbedding(
-    runtime: IAgentRuntime,
-    input: string
-) {
-    const similaritySearchResult =
-        await runtime.messageManager.getCachedEmbeddings(input);
-    if (similaritySearchResult.length > 0) {
-        return similaritySearchResult[0].embedding;
-    }
-    return null;
-}
diff --git a/packages/core/src/core/imageGenModels.ts b/packages/core/src/core/imageGenModels.ts
deleted file mode 100644
index 6515644c2e9..00000000000
--- a/packages/core/src/core/imageGenModels.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export enum ImageGenModel {
-    TogetherAI = "TogetherAI",
-    Dalle = "Dalle",
-}
-
-export const imageGenModels = {
-    [ImageGenModel.TogetherAI]: {
-        steps: 4,
-        subModel: "black-forest-labs/FLUX.1-schnell",
-    },
-    [ImageGenModel.Dalle]: {
-        steps: 0,
-        subModel: "dall-e-3",
-    },
-};
-
-export function getImageGenModel(model: ImageGenModel) {
-    return imageGenModels[model];
-}
diff --git a/packages/core/src/core/index.ts b/packages/core/src/core/index.ts
deleted file mode 100644
index c0fec60edc2..00000000000
--- a/packages/core/src/core/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export * from "./actions.ts";
-export * from "./context.ts";
-export * from "./database.ts";
-export * from "./defaultCharacter.ts";
-export * from "./embedding.ts";
-export * from "./evaluators.ts";
-export * from "./generation.ts";
-export * from "./goals.ts";
-export * from "./imageGenModels.ts";
-export * from "./memory.ts";
-export * from "./messages.ts";
-export * from "./models.ts";
-export * from "./logger.ts";
-export * from "./posts.ts";
-export * from "./providers.ts";
-export * from "./relationships.ts";
-export * from "./runtime.ts";
-export * from "./settings.ts";
-export * from "./types.ts";
diff --git a/packages/core/src/core/database.ts b/packages/core/src/database.ts
similarity index 100%
rename from packages/core/src/core/database.ts
rename to packages/core/src/database.ts
diff --git a/packages/core/src/core/defaultCharacter.ts b/packages/core/src/defaultCharacter.ts
similarity index 99%
rename from packages/core/src/core/defaultCharacter.ts
rename to packages/core/src/defaultCharacter.ts
index 9638c37c20b..545c2bd69a0 100644
--- a/packages/core/src/core/defaultCharacter.ts
+++ b/packages/core/src/defaultCharacter.ts
@@ -1,13 +1,12 @@
-import { Character, ModelProvider, Clients } from "./types.ts";
+import { Character, ModelProviderName } from "./types.ts";
 
 export const defaultCharacter: Character = {
     name: "Eliza",
     plugins: [],
     clients: [],
-    modelProvider: ModelProvider.LLAMALOCAL,
+    modelProvider: ModelProviderName.LLAMALOCAL,
     settings: {
-        secrets: {
-        },
+        secrets: {},
         voice: {
             model: "en_US-hfc_female-medium",
         },
diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts
new file mode 100644
index 00000000000..aa15deb96d1
--- /dev/null
+++ b/packages/core/src/embedding.ts
@@ -0,0 +1,136 @@
+import { EmbeddingModel, FlagEmbedding } from "fastembed";
+import path from "path";
+import { fileURLToPath } from "url";
+import models from "./models.ts";
+import {
+    IAgentRuntime,
+    ModelProviderName
+} from "./types.ts";
+import fs from "fs";
+import { trimTokens } from "./generation.ts";
+
+function getRootPath() {
+    const __filename = fileURLToPath(import.meta.url);
+    const __dirname = path.dirname(__filename);
+
+    const rootPath = path.resolve(__dirname, "..");
+    if (rootPath.includes("/eliza/")) {
+        return rootPath.split("/eliza/")[0] + "/eliza/";
+    }
+    
+    return path.resolve(__dirname, "..");
+}
+
+/**
+ * Send a message to the OpenAI API for embedding.
+ * @param input The input to be embedded.
+ * @returns The embedding of the input.
+ */
+export async function embed(runtime: IAgentRuntime, input: string) {
+    // get the charcter, and handle by model type
+    const modelProvider = models[runtime.character.modelProvider];
+    const embeddingModel = modelProvider.model.embedding;
+
+    if (
+        runtime.character.modelProvider !== ModelProviderName.OPENAI &&
+        runtime.character.modelProvider !== ModelProviderName.OLLAMA
+    ) {
+
+        // make sure to trim tokens to 8192
+        const cacheDir = getRootPath() + "/cache/";
+
+        // if the cache directory doesn't exist, create it
+        if (!fs.existsSync(cacheDir)) {
+            fs.mkdirSync(cacheDir, { recursive: true });
+        }
+
+        const embeddingModel = await FlagEmbedding.init({
+            cacheDir: cacheDir
+        });
+
+        const trimmedInput = trimTokens(input, 8000, "gpt-4o-mini");
+        
+        const embedding: number[] = await embeddingModel.queryEmbed(trimmedInput);
+        console.log("Embedding dimensions: ", embedding.length);
+        return embedding;
+
+        // commented out the text generation service that uses llama
+        // const service = runtime.getService<ITextGenerationService>(
+        //     ServiceType.TEXT_GENERATION
+        // );
+        
+        // const instance = service?.getInstance();
+
+        // if (instance) {
+        //     return await instance.getEmbeddingResponse(input);
+        // }
+    }
+
+    // TODO: Fix retrieveCachedEmbedding
+    // Check if we already have the embedding in the lore
+    const cachedEmbedding = await retrieveCachedEmbedding(runtime, input);
+    if (cachedEmbedding) {
+        return cachedEmbedding;
+    }
+
+    const requestOptions = {
+        method: "POST",
+        headers: {
+            "Content-Type": "application/json",
+            // TODO: make this not hardcoded
+            ...(runtime.modelProvider !== ModelProviderName.OLLAMA && {
+                Authorization: `Bearer ${runtime.token}`,
+            }),
+        },
+        body: JSON.stringify({
+            input,
+            model: embeddingModel,
+            length: 768, // we are squashing dimensions to 768 for openai, even thought the model supports 1536
+            // -- this is ok for matryoshka embeddings but longterm, we might want to support 1536
+        }),
+    };
+    try {
+        const response = await fetch(
+            // TODO: make this not hardcoded
+            `${runtime.character.modelEndpointOverride || modelProvider.endpoint}${runtime.character.modelProvider === ModelProviderName.OLLAMA ? "/v1" : ""}/embeddings`,
+            requestOptions
+        );
+
+        if (!response.ok) {
+            throw new Error(
+                "OpenAI API Error: " +
+                    response.status +
+                    " " +
+                    response.statusText
+            );
+        }
+
+        interface OpenAIEmbeddingResponse {
+            data: Array<{ embedding: number[] }>;
+        }
+
+        const data: OpenAIEmbeddingResponse = await response.json();
+
+        return data?.data?.[0].embedding;
+    } catch (e) {
+        console.error(e);
+        throw e;
+    }
+}
+
+export async function retrieveCachedEmbedding(
+    runtime: IAgentRuntime,
+    input: string
+) {
+    if(!input) {
+        console.log("No input to retrieve cached embedding for");
+        return null;
+    }
+
+    const similaritySearchResult =
+        await runtime.messageManager.getCachedEmbeddings(input);
+    if (similaritySearchResult.length > 0) {
+        return similaritySearchResult[0].embedding;
+    }
+    return null;
+}
diff --git a/packages/core/src/core/evaluators.ts b/packages/core/src/evaluators.ts
similarity index 97%
rename from packages/core/src/core/evaluators.ts
rename to packages/core/src/evaluators.ts
index 71fb31bb4e6..426d452af3d 100644
--- a/packages/core/src/core/evaluators.ts
+++ b/packages/core/src/evaluators.ts
@@ -1,11 +1,7 @@
 import { names, uniqueNamesGenerator } from "unique-names-generator";
-import fact from "../evaluators/fact.ts";
-// import goal from "../evaluators/goal.ts";
 import { ActionExample, type Evaluator } from "./types.ts";
 import { stringArrayFooter } from "./parsing.ts";
 
-export const defaultEvaluators: Evaluator[] = [fact /*, goal*/];
-
 /**
  * Template used for the evaluation generateText.
  */
diff --git a/packages/core/src/core/generation.ts b/packages/core/src/generation.ts
similarity index 78%
rename from packages/core/src/core/generation.ts
rename to packages/core/src/generation.ts
index 32cbf936a54..ee918549d08 100644
--- a/packages/core/src/core/generation.ts
+++ b/packages/core/src/generation.ts
@@ -1,10 +1,15 @@
 import { createAnthropic } from "@ai-sdk/anthropic";
 import { createGroq } from "@ai-sdk/groq";
 import { createOpenAI } from "@ai-sdk/openai";
+import { getModel } from "./models.ts";
+import { IImageDescriptionService, ModelClass } from "./types.ts";
 import { generateText as aiGenerateText } from "ai";
-import { createOllama } from 'ollama-ai-provider';
+import { Buffer } from "buffer";
+import { createOllama } from "ollama-ai-provider";
+import OpenAI from "openai";
 import { default as tiktoken, TiktokenModel } from "tiktoken";
-import { elizaLogger } from "../index.ts";
+import Together from "together-ai";
+import { elizaLogger } from "./index.ts";
 import models from "./models.ts";
 import {
     parseBooleanFromText,
@@ -13,7 +18,13 @@ import {
     parseShouldRespondFromText,
 } from "./parsing.ts";
 import settings from "./settings.ts";
-import { Content, IAgentRuntime, ModelProvider } from "./types.ts";
+import {
+    Content,
+    IAgentRuntime,
+    ITextGenerationService,
+    ModelProviderName,
+    ServiceType,
+} from "./types.ts";
 
 /**
  * Send a message to the model for a text generateText - receive a string back and parse how you'd like
@@ -70,8 +81,8 @@ export async function generateText({
         );
 
         switch (provider) {
-            case ModelProvider.OPENAI:
-            case ModelProvider.LLAMACLOUD: {
+            case ModelProviderName.OPENAI:
+            case ModelProviderName.LLAMACLOUD: {
                 elizaLogger.log("Initializing OpenAI model.");
                 const openai = createOpenAI({ apiKey, baseURL: endpoint });
 
@@ -93,7 +104,7 @@ export async function generateText({
                 break;
             }
 
-            case ModelProvider.ANTHROPIC: {
+            case ModelProviderName.ANTHROPIC: {
                 elizaLogger.log("Initializing Anthropic model.");
 
                 const anthropic = createAnthropic({ apiKey });
@@ -116,7 +127,7 @@ export async function generateText({
                 break;
             }
 
-            case ModelProvider.GROK: {
+            case ModelProviderName.GROK: {
                 elizaLogger.log("Initializing Grok model.");
                 const grok = createOpenAI({ apiKey, baseURL: endpoint });
 
@@ -140,7 +151,7 @@ export async function generateText({
                 break;
             }
 
-            case ModelProvider.GROQ: {
+            case ModelProviderName.GROQ: {
                 console.log("Initializing Groq model.");
                 const groq = createGroq({ apiKey });
 
@@ -162,21 +173,25 @@ export async function generateText({
                 break;
             }
 
-            case ModelProvider.LLAMALOCAL: {
+            case ModelProviderName.LLAMALOCAL: {
                 elizaLogger.log("Using local Llama model for text completion.");
-                response = await runtime.llamaService.queueTextCompletion(
-                    context,
-                    temperature,
-                    _stop,
-                    frequency_penalty,
-                    presence_penalty,
-                    max_response_length
-                );
+                response = await runtime
+                    .getService<ITextGenerationService>(
+                        ServiceType.TEXT_GENERATION
+                    )
+                    .queueTextCompletion(
+                        context,
+                        temperature,
+                        _stop,
+                        frequency_penalty,
+                        presence_penalty,
+                        max_response_length
+                    );
                 elizaLogger.log("Received response from local Llama model.");
                 break;
             }
 
-            case ModelProvider.REDPILL: {
+            case ModelProviderName.REDPILL: {
                 elizaLogger.log("Initializing RedPill model.");
                 const serverUrl = models[provider].endpoint;
                 const openai = createOpenAI({ apiKey, baseURL: serverUrl });
@@ -199,27 +214,28 @@ export async function generateText({
                 break;
             }
 
-            case ModelProvider.OLLAMA: {
-                console.log("Initializing Ollama model.");
-                    
-                const ollamaProvider = createOllama({
-                    baseURL: models[provider].endpoint + "/api",
-                })
-                const ollama = ollamaProvider(model);
-                
-                console.log('****** MODEL\n', model)
+            case ModelProviderName.OLLAMA:
+                {
+                    console.log("Initializing Ollama model.");
 
-                const { text: ollamaResponse } = await aiGenerateText({
-                    model: ollama,
-                    prompt: context,
-                    temperature: temperature,
-                    maxTokens: max_response_length,
-                    frequencyPenalty: frequency_penalty,
-                    presencePenalty: presence_penalty,
-                });
+                    const ollamaProvider = createOllama({
+                        baseURL: models[provider].endpoint + "/api",
+                    });
+                    const ollama = ollamaProvider(model);
 
-                response = ollamaResponse;
-            }
+                    console.log("****** MODEL\n", model);
+
+                    const { text: ollamaResponse } = await aiGenerateText({
+                        model: ollama,
+                        prompt: context,
+                        temperature: temperature,
+                        maxTokens: max_response_length,
+                        frequencyPenalty: frequency_penalty,
+                        presencePenalty: presence_penalty,
+                    });
+
+                    response = ollamaResponse;
+                }
                 console.log("Received response from Ollama model.");
                 break;
 
@@ -583,3 +599,104 @@ export async function generateMessageResponse({
         }
     }
 }
+
+export const generateImage = async (
+    data: {
+        prompt: string;
+        width: number;
+        height: number;
+        count?: number;
+    },
+    runtime: IAgentRuntime
+): Promise<{
+    success: boolean;
+    data?: string[];
+    error?: any;
+}> => {
+    const { prompt, width, height } = data;
+    let { count } = data;
+    if (!count) {
+        count = 1;
+    }
+
+    const model = getModel(runtime.character.modelProvider, ModelClass.IMAGE);
+    const modelSettings = models[runtime.character.modelProvider].imageSettings;
+    // some fallbacks for backwards compat, should remove in the future
+    const apiKey =
+        runtime.token ??
+        runtime.getSetting("TOGETHER_API_KEY") ??
+        runtime.getSetting("OPENAI_API_KEY");
+
+    try {
+        if (runtime.character.modelProvider === ModelProviderName.LLAMACLOUD) {
+            const together = new Together({ apiKey: apiKey as string });
+            const response = await together.images.create({
+                model: "black-forest-labs/FLUX.1-schnell",
+                prompt,
+                width,
+                height,
+                steps: modelSettings?.steps ?? 4,
+                n: count,
+            });
+            const urls: string[] = [];
+            for (let i = 0; i < response.data.length; i++) {
+                const json = response.data[i].b64_json;
+                // decode base64
+                const base64 = Buffer.from(json, "base64").toString("base64");
+                urls.push(base64);
+            }
+            const base64s = await Promise.all(
+                urls.map(async (url) => {
+                    const response = await fetch(url);
+                    const blob = await response.blob();
+                    const buffer = await blob.arrayBuffer();
+                    let base64 = Buffer.from(buffer).toString("base64");
+                    base64 = "data:image/jpeg;base64," + base64;
+                    return base64;
+                })
+            );
+            return { success: true, data: base64s };
+        } else {
+            let targetSize = `${width}x${height}`;
+            if (
+                targetSize !== "1024x1024" &&
+                targetSize !== "1792x1024" &&
+                targetSize !== "1024x1792"
+            ) {
+                targetSize = "1024x1024";
+            }
+            const openai = new OpenAI({ apiKey: apiKey as string });
+            const response = await openai.images.generate({
+                model,
+                prompt,
+                size: targetSize as "1024x1024" | "1792x1024" | "1024x1792",
+                n: count,
+                response_format: "b64_json",
+            });
+            const base64s = response.data.map(
+                (image) => `data:image/png;base64,${image.b64_json}`
+            );
+            return { success: true, data: base64s };
+        }
+    } catch (error) {
+        console.error(error);
+        return { success: false, error: error };
+    }
+};
+
+export const generateCaption = async (
+    data: { imageUrl: string },
+    runtime: IAgentRuntime
+): Promise<{
+    title: string;
+    description: string;
+}> => {
+    const { imageUrl } = data;
+    const resp = await runtime
+        .getService<IImageDescriptionService>(ServiceType.IMAGE_DESCRIPTION)
+        .describeImage(imageUrl);
+    return {
+        title: resp.title.trim(),
+        description: resp.description.trim(),
+    };
+};
diff --git a/packages/core/src/core/goals.ts b/packages/core/src/goals.ts
similarity index 100%
rename from packages/core/src/core/goals.ts
rename to packages/core/src/goals.ts
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index a3c9a118d05..b1ed027b8cc 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,15 +1,19 @@
 // Exports
-export * from "./actions/index.ts";
-export * from "./clients/index.ts";
-export * from "./adapters/index.ts";
-export * from "./providers/index.ts";
-export * from "./core/index.ts";
-export * from "./cli/index.ts";
-
-import { elizaLogger as Logging } from "./core/index.ts";
-
-// // Initialize the pretty console
-export const elizaLogger = new Logging();
-elizaLogger.clear();
-elizaLogger.closeByNewLine = true;
-elizaLogger.useIcons = true;
+export * from "./actions.ts";
+export * from "./context.ts";
+export * from "./database.ts";
+export * from "./defaultCharacter.ts";
+export * from "./embedding.ts";
+export * from "./evaluators.ts";
+export * from "./generation.ts";
+export * from "./goals.ts";
+export * from "./memory.ts";
+export * from "./messages.ts";
+export * from "./models.ts";
+export * from "./posts.ts";
+export * from "./providers.ts";
+export * from "./relationships.ts";
+export * from "./runtime.ts";
+export * from "./settings.ts";
+export * from "./types.ts";
+export * from "./logger.ts";
diff --git a/packages/core/src/core/logger.ts b/packages/core/src/logger.ts
similarity index 97%
rename from packages/core/src/core/logger.ts
rename to packages/core/src/logger.ts
index 7928845f62c..3580362d9e7 100644
--- a/packages/core/src/core/logger.ts
+++ b/packages/core/src/logger.ts
@@ -1,4 +1,4 @@
-export class elizaLogger {
+class ElizaLogger {
     closeByNewLine = true;
     useIcons = true;
     logsTitle = "LOGS";
@@ -266,3 +266,10 @@ export class elizaLogger {
         }
     }
 }
+
+export const elizaLogger = new ElizaLogger();
+elizaLogger.clear();
+elizaLogger.closeByNewLine = true;
+elizaLogger.useIcons = true;
+
+export default elizaLogger;
diff --git a/packages/core/src/core/memory.ts b/packages/core/src/memory.ts
similarity index 100%
rename from packages/core/src/core/memory.ts
rename to packages/core/src/memory.ts
diff --git a/packages/core/src/core/messages.ts b/packages/core/src/messages.ts
similarity index 100%
rename from packages/core/src/core/messages.ts
rename to packages/core/src/messages.ts
diff --git a/packages/core/src/core/models.ts b/packages/core/src/models.ts
similarity index 81%
rename from packages/core/src/core/models.ts
rename to packages/core/src/models.ts
index 22ee58cf295..17c6f35589c 100644
--- a/packages/core/src/core/models.ts
+++ b/packages/core/src/models.ts
@@ -1,8 +1,8 @@
 import settings from "./settings.ts";
-import { Models, ModelProvider, ModelClass } from "./types.ts";
+import { Models, ModelProviderName, ModelClass } from "./types.ts";
 
 const models: Models = {
-    [ModelProvider.OPENAI]: {
+    [ModelProviderName.OPENAI]: {
         endpoint: "https://api.openai.com/v1",
         settings: {
             stop: [],
@@ -17,9 +17,10 @@ const models: Models = {
             [ModelClass.MEDIUM]: "gpt-4o",
             [ModelClass.LARGE]: "gpt-4o",
             [ModelClass.EMBEDDING]: "text-embedding-3-small",
+            [ModelClass.IMAGE]: "dall-e-3",
         },
     },
-    [ModelProvider.ANTHROPIC]: {
+    [ModelProviderName.ANTHROPIC]: {
         settings: {
             stop: [],
             maxInputTokens: 200000,
@@ -35,7 +36,7 @@ const models: Models = {
             [ModelClass.LARGE]: "claude-3-opus-20240229",
         },
     },
-    [ModelProvider.CLAUDE_VERTEX]: {
+    [ModelProviderName.CLAUDE_VERTEX]: {
         settings: {
             stop: [],
             maxInputTokens: 200000,
@@ -51,7 +52,7 @@ const models: Models = {
             [ModelClass.LARGE]: "claude-3-opus-20240229",
         },
     },
-    [ModelProvider.GROK]: {
+    [ModelProviderName.GROK]: {
         settings: {
             stop: [],
             maxInputTokens: 128000,
@@ -68,7 +69,7 @@ const models: Models = {
             [ModelClass.EMBEDDING]: "grok-beta", // not sure about this one
         },
     },
-    [ModelProvider.GROQ]: {
+    [ModelProviderName.GROQ]: {
         endpoint: "https://api.groq.com/openai/v1",
         settings: {
             stop: [],
@@ -85,7 +86,7 @@ const models: Models = {
             [ModelClass.EMBEDDING]: "llama-3.1-8b-instant",
         },
     },
-    [ModelProvider.LLAMACLOUD]: {
+    [ModelProviderName.LLAMACLOUD]: {
         settings: {
             stop: [],
             maxInputTokens: 128000,
@@ -93,6 +94,9 @@ const models: Models = {
             repetition_penalty: 0.0,
             temperature: 0.3,
         },
+        imageSettings: {
+            steps: 4,
+        },
         endpoint: "https://api.together.ai/v1",
         model: {
             [ModelClass.SMALL]: "meta-llama/Llama-3.2-3B-Instruct-Turbo",
@@ -100,9 +104,10 @@ const models: Models = {
             [ModelClass.LARGE]: "meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo",
             [ModelClass.EMBEDDING]:
                 "togethercomputer/m2-bert-80M-32k-retrieval",
+            [ModelClass.IMAGE]: "black-forest-labs/FLUX.1-schnell",
         },
     },
-    [ModelProvider.LLAMALOCAL]: {
+    [ModelProviderName.LLAMALOCAL]: {
         settings: {
             stop: ["<|eot_id|>", "<|eom_id|>"],
             maxInputTokens: 32768,
@@ -122,7 +127,7 @@ const models: Models = {
                 "togethercomputer/m2-bert-80M-32k-retrieval",
         },
     },
-    [ModelProvider.GOOGLE]: {
+    [ModelProviderName.GOOGLE]: {
         settings: {
             stop: [],
             maxInputTokens: 128000,
@@ -138,7 +143,7 @@ const models: Models = {
             [ModelClass.EMBEDDING]: "text-embedding-004",
         },
     },
-    [ModelProvider.REDPILL]: {
+    [ModelProviderName.REDPILL]: {
         endpoint: "https://api.red-pill.ai/v1",
         settings: {
             stop: [],
@@ -157,7 +162,7 @@ const models: Models = {
             [ModelClass.EMBEDDING]: "text-embedding-3-small",
         },
     },
-    [ModelProvider.OLLAMA]: {
+    [ModelProviderName.OLLAMA]: {
         settings: {
             stop: [],
             maxInputTokens: 128000,
@@ -166,21 +171,31 @@ const models: Models = {
             presence_penalty: 0.0,
             temperature: 0.3,
         },
-        endpoint: settings.OLLAMA_SERVER_URL || "http://localhost:11434", 
+        endpoint: settings.OLLAMA_SERVER_URL || "http://localhost:11434",
         model: {
-            [ModelClass.SMALL]: settings.SMALL_OLLAMA_MODEL || settings.OLLAMA_MODEL || "llama3.2",
-            [ModelClass.MEDIUM]: settings.MEDIUM_OLLAMA_MODEL ||settings.OLLAMA_MODEL || "hermes3",
-            [ModelClass.LARGE]: settings.LARGE_OLLAMA_MODEL || settings.OLLAMA_MODEL || "hermes3:70b",
-            [ModelClass.EMBEDDING]: settings.OLLAMA_EMBEDDING_MODEL || "mxbai-embed-large"
+            [ModelClass.SMALL]:
+                settings.SMALL_OLLAMA_MODEL ||
+                settings.OLLAMA_MODEL ||
+                "llama3.2",
+            [ModelClass.MEDIUM]:
+                settings.MEDIUM_OLLAMA_MODEL ||
+                settings.OLLAMA_MODEL ||
+                "hermes3",
+            [ModelClass.LARGE]:
+                settings.LARGE_OLLAMA_MODEL ||
+                settings.OLLAMA_MODEL ||
+                "hermes3:70b",
+            [ModelClass.EMBEDDING]:
+                settings.OLLAMA_EMBEDDING_MODEL || "mxbai-embed-large",
         },
     },
 };
 
-export function getModel(provider: ModelProvider, type: ModelClass) {
+export function getModel(provider: ModelProviderName, type: ModelClass) {
     return models[provider].model[type];
 }
 
-export function getEndpoint(provider: ModelProvider) {
+export function getEndpoint(provider: ModelProviderName) {
     return models[provider].endpoint;
 }
 
diff --git a/packages/core/src/core/parsing.ts b/packages/core/src/parsing.ts
similarity index 100%
rename from packages/core/src/core/parsing.ts
rename to packages/core/src/parsing.ts
diff --git a/packages/core/src/core/posts.ts b/packages/core/src/posts.ts
similarity index 100%
rename from packages/core/src/core/posts.ts
rename to packages/core/src/posts.ts
diff --git a/packages/core/src/core/providers.ts b/packages/core/src/providers.ts
similarity index 76%
rename from packages/core/src/core/providers.ts
rename to packages/core/src/providers.ts
index d187bac509e..e97eb331f9e 100644
--- a/packages/core/src/core/providers.ts
+++ b/packages/core/src/providers.ts
@@ -1,7 +1,4 @@
-import { timeProvider } from "../providers/time.ts";
-import { IAgentRuntime, State, type Memory, type Provider } from "./types.ts";
-
-export const defaultProviders: Provider[] = [timeProvider];
+import { IAgentRuntime, State, type Memory } from "./types.ts";
 
 /**
  * Formats provider outputs into a string which can be injected into the context.
diff --git a/packages/core/src/providers/index.ts b/packages/core/src/providers/index.ts
deleted file mode 100644
index d746a5bc604..00000000000
--- a/packages/core/src/providers/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from "./boredom.ts";
-export * from "./time.ts";
-export * from "./wallet.ts";
-export * from "./orderBook.ts";
-export * from "./token.ts";
-export * from "./balances.ts";
diff --git a/packages/core/src/core/relationships.ts b/packages/core/src/relationships.ts
similarity index 100%
rename from packages/core/src/core/relationships.ts
rename to packages/core/src/relationships.ts
diff --git a/packages/core/src/core/runtime.ts b/packages/core/src/runtime.ts
similarity index 83%
rename from packages/core/src/core/runtime.ts
rename to packages/core/src/runtime.ts
index c14332ec994..c5a6f848172 100644
--- a/packages/core/src/core/runtime.ts
+++ b/packages/core/src/runtime.ts
@@ -1,60 +1,46 @@
+import { names, uniqueNamesGenerator } from "unique-names-generator";
+import {
+    composeActionExamples,
+    formatActionNames,
+    formatActions,
+} from "./actions.ts";
 import { addHeader, composeContext } from "./context.ts";
+import { defaultCharacter } from "./defaultCharacter.ts";
 import {
-    defaultEvaluators,
     evaluationTemplate,
     formatEvaluatorExamples,
     formatEvaluatorNames,
     formatEvaluators,
 } from "./evaluators.ts";
+import { generateText } from "./generation.ts";
+import { formatGoalsAsString, getGoals } from "./goals.ts";
+import { elizaLogger } from "./index.ts";
 import { MemoryManager } from "./memory.ts";
+import { formatActors, formatMessages, getActorDetails } from "./messages.ts";
 import { parseJsonArrayFromText } from "./parsing.ts";
+import { formatPosts } from "./posts.ts";
+import { getProviders } from "./providers.ts";
+import settings from "./settings.ts";
 import {
     Character,
     Goal,
     HandlerCallback,
     IAgentRuntime,
-    IBrowserService,
     IDatabaseAdapter,
-    IImageRecognitionService,
     IMemoryManager,
-    IPdfService,
-    ISpeechService,
-    ITranscriptionService,
-    IVideoService,
     ModelClass,
-    ModelProvider,
+    ModelProviderName,
+    Plugin,
     Provider,
+    Service,
+    ServiceType,
     State,
+    UUID,
     type Action,
+    type Actor,
     type Evaluator,
     type Memory,
 } from "./types.ts";
-
-import { names, uniqueNamesGenerator } from "unique-names-generator";
-import { formatFacts } from "../evaluators/fact.ts";
-import { elizaLogger } from "../index.ts";
-import { BrowserService } from "../services/browser.ts";
-import ImageDescriptionService from "../services/image.ts";
-import LlamaService from "../services/llama.ts";
-import { PdfService } from "../services/pdf.ts";
-import { SpeechService } from "../services/speech.ts";
-import { TranscriptionService } from "../services/transcription.ts";
-import { VideoService } from "../services/video.ts";
-import {
-    composeActionExamples,
-    defaultActions,
-    formatActionNames,
-    formatActions,
-} from "./actions.ts";
-import { defaultCharacter } from "./defaultCharacter.ts";
-import { generateText } from "./generation.ts";
-import { formatGoalsAsString, getGoals } from "./goals.ts";
-import { ImageGenModel } from "./imageGenModels.ts";
-import { formatActors, formatMessages, getActorDetails } from "./messages.ts";
-import { formatPosts } from "./posts.ts";
-import { defaultProviders, getProviders } from "./providers.ts";
-import settings from "./settings.ts";
-import { UUID, type Actor } from "./types.ts";
 import { stringToUuid } from "./uuid.ts";
 
 /**
@@ -104,30 +90,7 @@ export class AgentRuntime implements IAgentRuntime {
     /**
      * The model to use for generateText.
      */
-    modelProvider = ModelProvider.LLAMALOCAL;
-
-    /**
-     * The model to use for image generation.
-     */
-    imageGenModel: ImageGenModel = ImageGenModel.TogetherAI;
-
-    /**
-     * Local Llama if no OpenAI key is present
-     */
-    llamaService: LlamaService | null = null;
-
-    // services
-    speechService: ISpeechService;
-
-    transcriptionService: ITranscriptionService;
-
-    imageDescriptionService: IImageRecognitionService;
-
-    browserService: IBrowserService;
-
-    videoService: IVideoService;
-
-    pdfService: IPdfService;
+    modelProvider: ModelProviderName;
 
     /**
      * Fetch function to use
@@ -150,11 +113,6 @@ export class AgentRuntime implements IAgentRuntime {
      */
     descriptionManager: IMemoryManager;
 
-    /**
-     * Manage the fact and recall of facts.
-     */
-    factManager: IMemoryManager;
-
     /**
      * Manage the creation and recall of static information (documents, historical game lore, etc)
      */
@@ -170,6 +128,49 @@ export class AgentRuntime implements IAgentRuntime {
      */
     fragmentsManager: IMemoryManager;
 
+    services: Map<ServiceType, Service> = new Map();
+    memoryManagers: Map<string, IMemoryManager> = new Map();
+
+    registerMemoryManager(manager: IMemoryManager): void {
+        if (!manager.tableName) {
+            throw new Error("Memory manager must have a tableName");
+        }
+
+        if (this.memoryManagers.has(manager.tableName)) {
+            console.warn(
+                `Memory manager ${manager.tableName} is already registered. Skipping registration.`
+            );
+            return;
+        }
+
+        this.memoryManagers.set(manager.tableName, manager);
+    }
+
+    getMemoryManager(tableName: string): IMemoryManager | null {
+        return this.memoryManagers.get(tableName) || null;
+    }
+
+    getService<T>(service: ServiceType): T | null {
+        const serviceInstance = this.services.get(service);
+        if (!serviceInstance) {
+            console.error(`Service ${service} not found`);
+            return null;
+        }
+        return serviceInstance as T;
+    }
+    registerService(service: Service): void {
+        const serviceType = (service as typeof Service).serviceType;
+        console.log("Registering service:", serviceType);
+        if (this.services.has(serviceType)) {
+            console.warn(
+                `Service ${serviceType} is already registered. Skipping registration.`
+            );
+            return;
+        }
+
+        this.services.set((service as typeof Service).serviceType, service);
+    }
+
     /**
      * Creates an instance of AgentRuntime.
      * @param opts - The options for configuring the AgentRuntime.
@@ -178,6 +179,8 @@ export class AgentRuntime implements IAgentRuntime {
      * @param opts.serverUrl - The URL of the worker.
      * @param opts.actions - Optional custom actions.
      * @param opts.evaluators - Optional custom evaluators.
+     * @param opts.services - Optional custom services.
+     * @param opts.memoryManagers - Optional custom memory managers.
      * @param opts.providers - Optional context providers.
      * @param opts.model - The model to use for generateText.
      * @param opts.embeddingModel - The model to use for embedding.
@@ -194,9 +197,12 @@ export class AgentRuntime implements IAgentRuntime {
         serverUrl?: string; // The URL of the worker
         actions?: Action[]; // Optional custom actions
         evaluators?: Evaluator[]; // Optional custom evaluators
+        plugins?: Plugin[];
         providers?: Provider[];
-        imageGenModel?: ImageGenModel;
-        modelProvider: ModelProvider;
+        modelProvider: ModelProviderName;
+
+        services?: Service[]; // Map of service name to service instance
+        managers?: IMemoryManager[]; // Map of table name to memory manager
         databaseAdapter: IDatabaseAdapter; // The database adapter used for interacting with the database
         fetch?: typeof fetch | unknown;
         speechModelPath?: string;
@@ -228,11 +234,6 @@ export class AgentRuntime implements IAgentRuntime {
             tableName: "descriptions",
         });
 
-        this.factManager = new MemoryManager({
-            runtime: this,
-            tableName: "facts",
-        });
-
         this.loreManager = new MemoryManager({
             runtime: this,
             tableName: "lore",
@@ -248,6 +249,10 @@ export class AgentRuntime implements IAgentRuntime {
             tableName: "fragments",
         });
 
+        (opts.services ?? []).forEach((service: Service) => {
+            this.registerService(service);
+        });
+
         this.serverUrl = opts.serverUrl ?? this.serverUrl;
         this.modelProvider =
             this.character.modelProvider ??
@@ -256,64 +261,40 @@ export class AgentRuntime implements IAgentRuntime {
         if (!this.serverUrl) {
             console.warn("No serverUrl provided, defaulting to localhost");
         }
-        this.imageGenModel =
-            this.character.imageGenModel ??
-            opts.imageGenModel ??
-            this.imageGenModel;
 
         this.token = opts.token;
 
-        (opts.actions ?? defaultActions).forEach((action) => {
-            this.registerAction(action);
-        });
+        [...(opts.character.plugins || []), ...(opts.plugins || [])].forEach(
+            (plugin) => {
+                plugin.actions?.forEach((action) => {
+                    this.registerAction(action);
+                });
 
-        (opts.character.plugins ?? []).forEach((plugin) => {
-            plugin.actions.forEach((action) => {
-                this.registerAction(action);
-            });
+                plugin.evaluators?.forEach((evaluator) => {
+                    this.registerEvaluator(evaluator);
+                });
 
-            plugin.evaluators.forEach((evaluator) => {
-                this.registerEvaluator(evaluator);
-            });
+                plugin.providers?.forEach((provider) => {
+                    this.registerContextProvider(provider);
+                });
 
-            plugin.providers.forEach((provider) => {
-                this.registerContextProvider(provider);
-            });
-        });
+                plugin.services?.forEach((service) => {
+                    this.registerService(service);
+                });
+            }
+        );
 
-        (opts.evaluators ?? defaultEvaluators).forEach((evaluator) => {
-            this.registerEvaluator(evaluator);
+        (opts.actions ?? []).forEach((action) => {
+            this.registerAction(action);
         });
 
-        (opts.providers ?? defaultProviders).forEach((provider) => {
+        (opts.providers ?? []).forEach((provider) => {
             this.registerContextProvider(provider);
         });
 
-        if (
-            this.modelProvider === ModelProvider.LLAMALOCAL &&
-            !this.llamaService
-        ) {
-            console.log(
-                "Initializing LlamaLocal service for agent",
-                this.agentId,
-                this.character.name
-            );
-            this.llamaService = LlamaService.getInstance();
-        }
-
-        this.transcriptionService = TranscriptionService.getInstance(this);
-
-        this.imageDescriptionService =
-            ImageDescriptionService.getInstance(this);
-
-        this.browserService = BrowserService.getInstance(this);
-
-        this.videoService = VideoService.getInstance(this);
-
-        this.pdfService = new PdfService();
-
-        // static class, no need to instantiate but we can access it like a class instance
-        this.speechService = new SpeechService();
+        (opts.evaluators ?? []).forEach((evaluator: Evaluator) => {
+            this.registerEvaluator(evaluator);
+        });
 
         if (
             opts.character &&
@@ -330,64 +311,62 @@ export class AgentRuntime implements IAgentRuntime {
      * then chunks the content into fragments, embeds each fragment, and creates fragment memories.
      * @param knowledge An array of knowledge items containing id, path, and content.
      */
-    private async processCharacterKnowledge(knowledge: string[]) {
-        // ensure the room exists and the agent exists in the room
-        this.ensureRoomExists(this.agentId);
-        this.ensureUserExists(
-            this.agentId,
-            this.character.name,
-            this.character.name
-        );
-        this.ensureParticipantExists(this.agentId, this.agentId);
-
-        for (const knowledgeItem of knowledge) {
-            // TODO: Fix the knowledge???
-            continue;
-            // const knowledgeId = stringToUuid(knowledgeItem);
-            // const existingDocument =
-            //     await this.documentsManager.getMemoryById(knowledgeId);
-            // if (!existingDocument) {
-            //     console.log(
-            //         "Processing knowledge for ",
-            //         this.character.name,
-            //         " - ",
-            //         knowledgeItem.slice(0, 100)
-            //     );
-            //     await this.documentsManager.createMemory({
-            //         embedding: embeddingZeroVector,
-            //         id: knowledgeId,
-            //         agentId: this.agentId,
-            //         roomId: this.agentId,
-            //         userId: this.agentId,
-            //         createdAt: Date.now(),
-            //         content: {
-            //             text: knowledgeItem,
-            //         },
-            //     });
-            //     const fragments = await splitChunks(
-            //         this,
-            //         knowledgeItem,
-            //         1200,
-            //         200,
-            //         "fast"
-            //     );
-            //     for (const fragment of fragments) {
-            //         const embedding = await embed(this, fragment);
-            //         await this.fragmentsManager.createMemory({
-            //             id: stringToUuid(fragment),
-            //             roomId: this.agentId,
-            //             userId: this.agentId,
-            //             createdAt: Date.now(),
-            //             content: {
-            //                 source: knowledgeId,
-            //                 text: fragment,
-            //             },
-            //             embedding,
-            //         });
-            //     }
-            // }
-        }
-    }
+    // private async processCharacterKnowledge(knowledge: string[]) {
+    //     // ensure the room exists and the agent exists in the room
+    //     this.ensureRoomExists(this.agentId);
+    //     this.ensureUserExists(
+    //         this.agentId,
+    //         this.character.name,
+    //         this.character.name
+    //     );
+    //     this.ensureParticipantExists(this.agentId, this.agentId);
+
+    //     for (const knowledgeItem of knowledge) {
+    //         const knowledgeId = stringToUuid(knowledgeItem);
+    //         const existingDocument =
+    //             await this.documentsManager.getMemoryById(knowledgeId);
+    //         if (!existingDocument) {
+    //             console.log(
+    //                 "Processing knowledge for ",
+    //                 this.character.name,
+    //                 " - ",
+    //                 knowledgeItem.slice(0, 100)
+    //             );
+    //             await this.documentsManager.createMemory({
+    //                 embedding: embeddingZeroVector,
+    //                 id: knowledgeId,
+    //                 agentId: this.agentId,
+    //                 roomId: this.agentId,
+    //                 userId: this.agentId,
+    //                 createdAt: Date.now(),
+    //                 content: {
+    //                     text: knowledgeItem,
+    //                 },
+    //             });
+    //             const fragments = await splitChunks(
+    //                 this,
+    //                 knowledgeItem,
+    //                 1200,
+    //                 200,
+    //                 "fast"
+    //             );
+    //             for (const fragment of fragments) {
+    //                 const embedding = await embed(this, fragment);
+    //                 await this.fragmentsManager.createMemory({
+    //                     id: stringToUuid(fragment),
+    //                     roomId: this.agentId,
+    //                     userId: this.agentId,
+    //                     createdAt: Date.now(),
+    //                     content: {
+    //                         source: knowledgeId,
+    //                         text: fragment,
+    //                     },
+    //                     embedding,
+    //                 });
+    //             }
+    //         }
+    //     }
+    // }
 
     getSetting(key: string) {
         // check if the key is in the character.settings.secrets object
@@ -686,13 +665,10 @@ export class AgentRuntime implements IAgentRuntime {
         const { userId, roomId } = message;
 
         const conversationLength = this.getConversationLength();
-        const recentFactsCount = Math.ceil(this.getConversationLength() / 2);
-        const relevantFactsCount = Math.ceil(this.getConversationLength() / 2);
 
-        const [actorsData, recentMessagesData, recentFactsData, goalsData]: [
+        const [actorsData, recentMessagesData, goalsData]: [
             Actor[],
             Memory[],
-            Memory[],
             Goal[],
         ] = await Promise.all([
             getActorDetails({ runtime: this, roomId }),
@@ -702,11 +678,6 @@ export class AgentRuntime implements IAgentRuntime {
                 count: conversationLength,
                 unique: false,
             }),
-            this.factManager.getMemories({
-                agentId: this.agentId,
-                roomId,
-                count: recentFactsCount,
-            }),
             getGoals({
                 runtime: this,
                 count: 10,
@@ -717,25 +688,6 @@ export class AgentRuntime implements IAgentRuntime {
 
         const goals = formatGoalsAsString({ goals: goalsData });
 
-        let relevantFactsData: Memory[] = [];
-
-        if (recentFactsData.length > recentFactsCount) {
-            relevantFactsData = (
-                await this.factManager.searchMemoriesByEmbedding(
-                    recentFactsData[0].embedding!,
-                    {
-                        roomId,
-                        agentId: this.agentId,
-                        count: relevantFactsCount,
-                    }
-                )
-            ).filter((fact: Memory) => {
-                return !recentFactsData.find(
-                    (recentFact: Memory) => recentFact.id === fact.id
-                );
-            });
-        }
-
         const actors = formatActors({ actors: actorsData ?? [] });
 
         const recentMessages = formatMessages({
@@ -749,9 +701,6 @@ export class AgentRuntime implements IAgentRuntime {
             conversationHeader: false,
         });
 
-        const recentFacts = formatFacts(recentFactsData);
-        const relevantFacts = formatFacts(relevantFactsData);
-
         // const lore = formatLore(loreData);
 
         const senderName = actorsData?.find(
@@ -1064,16 +1013,6 @@ Text: ${attachment.text}
                     ? addHeader("# Posts in Thread", recentPosts)
                     : "",
             recentMessagesData,
-            recentFacts:
-                recentFacts && recentFacts.length > 0
-                    ? addHeader("# Recent Facts", recentFacts)
-                    : "",
-            recentFactsData,
-            relevantFacts:
-                relevantFacts && relevantFacts.length > 0
-                    ? addHeader("# Relevant Facts", relevantFacts)
-                    : "",
-            relevantFactsData,
             attachments:
                 formattedAttachments && formattedAttachments.length > 0
                     ? addHeader("# Attachments", formattedAttachments)
diff --git a/packages/core/src/services/summary.ts b/packages/core/src/services/summary.ts
deleted file mode 100644
index 222302b6759..00000000000
--- a/packages/core/src/services/summary.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { generateText, trimTokens } from "../core/generation.ts";
-import { parseJSONObjectFromText } from "../core/parsing.ts";
-import { IAgentRuntime, ModelClass } from "../core/types.ts";
-
-export async function generateSummary(
-    runtime: IAgentRuntime,
-    text: string
-): Promise<{ title: string; description: string }> {
-    // make sure text is under 128k characters
-    text = trimTokens(text, 100000, "gpt-4o-mini"); // TODO: clean this up
-
-    const prompt = `Please generate a concise summary for the following text:
-  
-  Text: """
-  ${text}
-  """
-  
-  Respond with a JSON object in the following format:
-  \`\`\`json
-  {
-    "title": "Generated Title",
-    "summary": "Generated summary and/or description of the text"
-  }
-  \`\`\``;
-
-    const response = await generateText({
-        runtime,
-        context: prompt,
-        modelClass: ModelClass.SMALL,
-    });
-
-    const parsedResponse = parseJSONObjectFromText(response);
-
-    if (parsedResponse) {
-        return {
-            title: parsedResponse.title,
-            description: parsedResponse.summary,
-        };
-    }
-
-    return {
-        title: "",
-        description: "",
-    };
-}
diff --git a/packages/core/src/services/wordsToPunish.ts b/packages/core/src/services/wordsToPunish.ts
deleted file mode 100644
index d3dc5c7a59d..00000000000
--- a/packages/core/src/services/wordsToPunish.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-export const wordsToPunish = [
-    " please",
-    " feel",
-    " free",
-    "!",
-    "–",
-    "—",
-    "?",
-    ".",
-    ",",
-    "; ",
-    " cosmos",
-    " tapestry",
-    " tapestries",
-    " glitch",
-    " matrix",
-    " cyberspace",
-    " troll",
-    " questions",
-    " topics",
-    " discuss",
-    " basically",
-    " simulation",
-    " simulate",
-    " universe",
-    " like",
-    " debug",
-    " debugging",
-    " wild",
-    " existential",
-    " juicy",
-    " circuits",
-    " help",
-    " ask",
-    " happy",
-    " just",
-    " cosmic",
-    " cool",
-    " joke",
-    " punchline",
-    " fancy",
-    " glad",
-    " assist",
-    " algorithm",
-    " Indeed",
-    " Furthermore",
-    " However",
-    " Notably",
-    " Therefore",
-    " Additionally",
-    " conclusion",
-    " Significantly",
-    " Consequently",
-    " Thus",
-    " What",
-    " Otherwise",
-    " Moreover",
-    " Subsequently",
-    " Accordingly",
-    " Unlock",
-    " Unleash",
-    " buckle",
-    " pave",
-    " forefront",
-    " harness",
-    " harnessing",
-    " bridging",
-    " bridging",
-    " Spearhead",
-    " spearheading",
-    " Foster",
-    " foster",
-    " environmental",
-    " impact",
-    " Navigate",
-    " navigating",
-    " challenges",
-    " chaos",
-    " social",
-    " inclusion",
-    " inclusive",
-    " diversity",
-    " diverse",
-    " delve",
-    " noise",
-    " infinite",
-    " insanity",
-    " coffee",
-    " singularity",
-    " AI",
-    " digital",
-    " artificial",
-    " intelligence",
-    " consciousness",
-    " reality",
-    " metaverse",
-    " virtual",
-    " virtual reality",
-    " VR",
-    " Metaverse",
-    " humanity",
-];
diff --git a/packages/core/src/core/settings.ts b/packages/core/src/settings.ts
similarity index 83%
rename from packages/core/src/core/settings.ts
rename to packages/core/src/settings.ts
index 618230f6fa1..9f4f7c75976 100644
--- a/packages/core/src/core/settings.ts
+++ b/packages/core/src/settings.ts
@@ -8,23 +8,23 @@ import path from "path";
  * @param {string} [startDir=process.cwd()] - Starting directory for the search
  * @returns {string|null} Path to the nearest .env file or null if not found
  */
-function findNearestEnvFile(startDir = process.cwd()) {
+export function findNearestEnvFile(startDir = process.cwd()) {
     let currentDir = startDir;
-    
+
     // Continue searching until we reach the root directory
     while (currentDir !== path.parse(currentDir).root) {
-        const envPath = path.join(currentDir, '.env');
-        
+        const envPath = path.join(currentDir, ".env");
+
         if (fs.existsSync(envPath)) {
             return envPath;
         }
-        
+
         // Move up to parent directory
         currentDir = path.dirname(currentDir);
     }
-    
+
     // Check root directory as well
-    const rootEnvPath = path.join(path.parse(currentDir).root, '.env');
+    const rootEnvPath = path.join(path.parse(currentDir).root, ".env");
     return fs.existsSync(rootEnvPath) ? rootEnvPath : null;
 }
 
@@ -33,23 +33,23 @@ function findNearestEnvFile(startDir = process.cwd()) {
  * @returns {Object} Environment variables object
  * @throws {Error} If no .env file is found
  */
-function loadEnvConfig() {
+export function loadEnvConfig() {
     const envPath = findNearestEnvFile();
-    
+
     if (!envPath) {
         throw new Error("No .env file found in current or parent directories.");
     }
-    
+
     // Load the .env file
     const result = config({ path: envPath });
-    
+
     if (result.error) {
         throw new Error(`Error loading .env file: ${result.error}`);
     }
-    
+
     console.log(`Loaded .env file from: ${envPath}`);
     return process.env;
 }
 
 export const settings = loadEnvConfig();
-export default settings;
\ No newline at end of file
+export default settings;
diff --git a/packages/core/src/test_resources/constants.ts b/packages/core/src/test_resources/constants.ts
index 5f125ee296c..f60b632a03f 100644
--- a/packages/core/src/test_resources/constants.ts
+++ b/packages/core/src/test_resources/constants.ts
@@ -1,4 +1,4 @@
-import { type UUID } from "../core/types.ts";
+import { type UUID } from "@ai16z/eliza/src/types.ts";
 
 export const SERVER_URL = "http://localhost:7998";
 export const SUPABASE_URL = "https://pronvzrzfwsptkojvudd.supabase.co";
diff --git a/packages/core/src/test_resources/createRuntime.ts b/packages/core/src/test_resources/createRuntime.ts
index 38b7163242d..a9c98ddcf75 100644
--- a/packages/core/src/test_resources/createRuntime.ts
+++ b/packages/core/src/test_resources/createRuntime.ts
@@ -1,10 +1,15 @@
 import { SqliteDatabaseAdapter } from "../adapters/sqlite.ts";
-import { load } from "../adapters/sqlite/sqlite_vec.ts";
-import { SqlJsDatabaseAdapter } from "../adapters/sqljs.ts";
-import { SupabaseDatabaseAdapter } from "../adapters/supabase.ts";
-import { DatabaseAdapter } from "../core/database.ts";
-import { AgentRuntime } from "../core/runtime.ts";
-import { Action, Evaluator, ModelProvider, Provider } from "../core/types.ts";
+import { load } from "../../../adapter-sqlite/src/sqlite_vec.ts";
+import { SqlJsDatabaseAdapter } from "../../../adapter-sqljs/src/index.ts";
+import { SupabaseDatabaseAdapter } from "../../../adapter-supabase/src/index.ts";
+import { DatabaseAdapter } from "@ai16z/eliza/src/database.ts";
+import { AgentRuntime } from "@ai16z/eliza/src/runtime.ts";
+import {
+    Action,
+    Evaluator,
+    ModelProviderName,
+    Provider,
+} from "@ai16z/eliza/src/types.ts";
 import {
     SUPABASE_ANON_KEY,
     SUPABASE_URL,
@@ -131,7 +136,7 @@ export async function createRuntime({
         serverUrl: "https://api.openai.com/v1",
         conversationLength,
         token: env!.OPENAI_API_KEY!,
-        modelProvider: ModelProvider.OPENAI,
+        modelProvider: ModelProviderName.OPENAI,
         actions: actions ?? [],
         evaluators: evaluators ?? [],
         providers: providers ?? [],
diff --git a/packages/core/src/test_resources/data.ts b/packages/core/src/test_resources/data.ts
index fc58184d8f0..6b6d5481c7e 100644
--- a/packages/core/src/test_resources/data.ts
+++ b/packages/core/src/test_resources/data.ts
@@ -1,4 +1,4 @@
-import { ConversationExample, type UUID } from "../core/types.ts";
+import { ConversationExample, type UUID } from "@ai16z/eliza/src/types.ts";
 import { zeroUuid } from "./constants.ts";
 
 // CJ asks Jim some personal questions - name, job, marital status, and what he's looking for in a relationship
diff --git a/packages/core/src/test_resources/getOrCreateRelationship.ts b/packages/core/src/test_resources/getOrCreateRelationship.ts
index bdf27d7ea74..9ecab65ee9e 100644
--- a/packages/core/src/test_resources/getOrCreateRelationship.ts
+++ b/packages/core/src/test_resources/getOrCreateRelationship.ts
@@ -1,5 +1,5 @@
-import { getRelationship } from "../core/relationships.ts";
-import { IAgentRuntime, Relationship, UUID } from "../core/types.ts";
+import { getRelationship } from "@ai16z/eliza/src/relationships.ts";
+import { IAgentRuntime, Relationship, UUID } from "@ai16z/eliza/src/types.ts";
 
 export async function getOrCreateRelationship({
     runtime,
diff --git a/packages/core/src/test_resources/populateMemories.ts b/packages/core/src/test_resources/populateMemories.ts
index 94015fe5f4b..bef1cddc2f3 100644
--- a/packages/core/src/test_resources/populateMemories.ts
+++ b/packages/core/src/test_resources/populateMemories.ts
@@ -1,4 +1,4 @@
-import { Content, IAgentRuntime, type UUID } from "../core/types.ts";
+import { Content, IAgentRuntime, type UUID } from "@ai16z/eliza/src/types.ts";
 import { getCachedEmbeddings, writeCachedEmbedding } from "./cache.ts";
 import { type User } from "./types.ts";
 
diff --git a/packages/core/src/test_resources/report.ts b/packages/core/src/test_resources/report.ts
index 7e10e600e1f..1982ab864e8 100644
--- a/packages/core/src/test_resources/report.ts
+++ b/packages/core/src/test_resources/report.ts
@@ -68,14 +68,13 @@ export async function addToReport(
 
 export async function logReport() {
     const { existsSync, readFileSync } = fs;
-    const colors = await import("ansi-colors");
 
     // Define the path to the test-report.json file
     const reportPath = "./test-report.json";
 
     // Check if test-report.json exists
     if (!existsSync(reportPath)) {
-        console.log(colors.red("Error: test-report.json does not exist."));
+        console.log("Error: test-report.json does not exist.");
         return;
     }
 
@@ -88,11 +87,11 @@ export async function logReport() {
         const logMessage = `${test.testName}: ${test.attempts} Attempts, ${test.successful} Successful, Success Rate: ${test.successRate}%`;
 
         if (test.successRate === 100) {
-            console.log(colors.green(logMessage));
+            console.log(logMessage);
         } else if (test.successRate < 100 && test.successRate > 0) {
-            console.log(colors.yellow(logMessage));
+            console.warn(logMessage);
         } else {
-            console.log(colors.red(logMessage));
+            console.error(logMessage);
         }
     });
 }
diff --git a/packages/core/src/test_resources/templates.ts b/packages/core/src/test_resources/templates.ts
index 9c99412b05a..28b0dc903af 100644
--- a/packages/core/src/test_resources/templates.ts
+++ b/packages/core/src/test_resources/templates.ts
@@ -1,4 +1,4 @@
-import { messageCompletionFooter } from "../core/parsing.ts";
+import { messageCompletionFooter } from "@ai16z/eliza/src/parsing.ts";
 
 export const messageHandlerTemplate =
     `{{actionExamples}}
@@ -14,8 +14,6 @@ export const messageHandlerTemplate =
 - Available actions are {{actionNames}}
 
 {{lore}}
-{{relevantFacts}}
-{{recentFacts}}
 {{goals}}
 {{actors}}
 {{actionNames}}
diff --git a/packages/core/src/test_resources/testAction.ts b/packages/core/src/test_resources/testAction.ts
index 5ecfd6f559b..78ea87a3a6e 100644
--- a/packages/core/src/test_resources/testAction.ts
+++ b/packages/core/src/test_resources/testAction.ts
@@ -1,4 +1,8 @@
-import { IAgentRuntime, type Action, type Memory } from "../core/types.ts";
+import {
+    IAgentRuntime,
+    type Action,
+    type Memory,
+} from "@ai16z/eliza/src/types.ts";
 
 export const TEST_ACTION = {
     name: "TEST_ACTION",
diff --git a/packages/core/src/test_resources/testEvaluator.ts b/packages/core/src/test_resources/testEvaluator.ts
index 06821277abf..ca7eaa429fc 100644
--- a/packages/core/src/test_resources/testEvaluator.ts
+++ b/packages/core/src/test_resources/testEvaluator.ts
@@ -3,7 +3,7 @@ import {
     IAgentRuntime,
     type Memory,
     type State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 async function handler(runtime: IAgentRuntime, message: Memory) {
     const state = (await runtime.composeState(message)) as State;
diff --git a/packages/core/tests/actions.test.d.ts b/packages/core/src/tests/actions.test.d.ts
similarity index 100%
rename from packages/core/tests/actions.test.d.ts
rename to packages/core/src/tests/actions.test.d.ts
diff --git a/packages/core/tests/actions.test.ts b/packages/core/src/tests/actions.test.ts
similarity index 94%
rename from packages/core/tests/actions.test.ts
rename to packages/core/src/tests/actions.test.ts
index 58d224cc586..6f702bf5d90 100644
--- a/packages/core/tests/actions.test.ts
+++ b/packages/core/src/tests/actions.test.ts
@@ -8,8 +8,8 @@ import {
     TEST_ACTION_FAIL,
 } from "../src/test_resources/testAction.ts";
 import { type User } from "../src/test_resources/types.ts";
-import { composeContext } from "../src/core/context.ts";
-import { embeddingZeroVector } from "../src/core/memory.ts";
+import { composeContext } from "../src/context.ts";
+import { embeddingZeroVector } from "../src/memory.ts";
 import {
     Content,
     IAgentRuntime,
@@ -17,9 +17,10 @@ import {
     State,
     type Memory,
     type UUID,
-} from "../src/core/types.ts";
-import { stringToUuid } from "../src/core/uuid.ts";
-import { generateMessageResponse } from "../src/core/generation.ts";
+} from "../src/types.ts";
+import { stringToUuid } from "../src/uuid.ts";
+import { generateMessageResponse } from "../src/generation.ts";
+import { MemoryManager } from "@ai16z/eliza/src/index.ts";
 
 async function handleMessage(
     runtime: IAgentRuntime,
@@ -163,7 +164,12 @@ describe("Actions", () => {
     });
 
     async function cleanup() {
-        await runtime.factManager.removeAllMemories(roomId);
+        const factsManager = new MemoryManager({
+            runtime,
+            tableName: "facts",
+        });
+
+        await factsManager.removeAllMemories(roomId);
         await runtime.messageManager.removeAllMemories(roomId);
     }
 
diff --git a/packages/core/tests/browser.test.ts b/packages/core/src/tests/browser.test.ts
similarity index 100%
rename from packages/core/tests/browser.test.ts
rename to packages/core/src/tests/browser.test.ts
diff --git a/packages/core/tests/continue.test.d.ts b/packages/core/src/tests/continue.test.d.ts
similarity index 100%
rename from packages/core/tests/continue.test.d.ts
rename to packages/core/src/tests/continue.test.d.ts
diff --git a/packages/core/tests/continue.test.ts b/packages/core/src/tests/continue.test.ts
similarity index 96%
rename from packages/core/tests/continue.test.ts
rename to packages/core/src/tests/continue.test.ts
index 9e2d4c7c766..07663f9388a 100644
--- a/packages/core/tests/continue.test.ts
+++ b/packages/core/src/tests/continue.test.ts
@@ -1,10 +1,5 @@
 import dotenv from "dotenv";
-import {
-    Content,
-    IAgentRuntime,
-    Memory,
-    type UUID,
-} from "../src/core/types.ts";
+import { Content, IAgentRuntime, Memory, type UUID } from "../src/types.ts";
 import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import { Goodbye1 } from "../src/test_resources/data.ts";
@@ -14,6 +9,7 @@ import { runAiTest } from "../src/test_resources/runAiTest.ts";
 import { type User } from "../src/test_resources/types.ts";
 import action from "../src/actions/continue.ts";
 import ignore from "../src/actions/ignore.ts";
+import { MemoryManager } from "@ai16z/eliza/src/memory.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
@@ -74,7 +70,12 @@ describe("User Profile", () => {
     });
 
     async function cleanup() {
-        await runtime.factManager.removeAllMemories(roomId);
+        const factsManager = new MemoryManager({
+            runtime,
+            tableName: "facts",
+        });
+
+        await factsManager.removeAllMemories(roomId);
         await runtime.messageManager.removeAllMemories(roomId);
     }
 
diff --git a/packages/core/tests/evaluation.test.d.ts b/packages/core/src/tests/evaluation.test.d.ts
similarity index 100%
rename from packages/core/tests/evaluation.test.d.ts
rename to packages/core/src/tests/evaluation.test.d.ts
diff --git a/packages/core/tests/evaluation.test.ts b/packages/core/src/tests/evaluation.test.ts
similarity index 95%
rename from packages/core/tests/evaluation.test.ts
rename to packages/core/src/tests/evaluation.test.ts
index 55d4c220873..04ff8bee4c4 100644
--- a/packages/core/tests/evaluation.test.ts
+++ b/packages/core/src/tests/evaluation.test.ts
@@ -9,9 +9,9 @@ import {
     TEST_EVALUATOR_FAIL,
 } from "../src/test_resources/testEvaluator.ts";
 import { type User } from "../src/test_resources/types.ts";
-import { composeContext } from "../src/core/context.ts";
-import { evaluationTemplate } from "../src/core/evaluators.ts";
-import { IAgentRuntime, Memory, UUID } from "../src/core/types.ts";
+import { composeContext } from "../src/context.ts";
+import { evaluationTemplate } from "../src/evaluators.ts";
+import { IAgentRuntime, Memory, UUID } from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
diff --git a/packages/core/tests/fact.test.d.ts b/packages/core/src/tests/fact.test.d.ts
similarity index 100%
rename from packages/core/tests/fact.test.d.ts
rename to packages/core/src/tests/fact.test.d.ts
diff --git a/packages/core/tests/fact.test.ts b/packages/core/src/tests/fact.test.ts
similarity index 87%
rename from packages/core/tests/fact.test.ts
rename to packages/core/src/tests/fact.test.ts
index ab13da53ee3..01cbdbc2e90 100644
--- a/packages/core/tests/fact.test.ts
+++ b/packages/core/src/tests/fact.test.ts
@@ -1,6 +1,6 @@
 import dotenv from "dotenv";
-import { defaultActions } from "../src/core/actions.ts";
-import { IAgentRuntime, type Memory, type UUID } from "../src/core/types.ts";
+import { defaultActions } from "../src/actions.ts";
+import { IAgentRuntime, type Memory, type UUID } from "../src/types.ts";
 import {
     getCachedEmbeddings,
     writeCachedEmbedding,
@@ -18,6 +18,7 @@ import { populateMemories } from "../src/test_resources/populateMemories.ts";
 import { runAiTest } from "../src/test_resources/runAiTest.ts";
 import { type User } from "../src/test_resources/types.ts";
 import evaluator from "../src/evaluators/fact.ts";
+import { MemoryManager } from "@ai16z/eliza/src/memory.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
@@ -107,7 +108,12 @@ describe("Facts Evaluator", () => {
 });
 
 async function cleanup(runtime: IAgentRuntime, roomId: UUID) {
-    await runtime.factManager.removeAllMemories(roomId);
+    const factsManager = new MemoryManager({
+        runtime,
+        tableName: "facts",
+    });
+
+    await factsManager.removeAllMemories(roomId);
     await runtime.messageManager.removeAllMemories(roomId);
 }
 
@@ -119,13 +125,22 @@ async function addFacts(
 ) {
     for (const fact of facts) {
         const existingEmbedding = await getCachedEmbeddings(fact);
-        const bakedMemory = await runtime.factManager.addEmbeddingToMemory({
+
+        const factsManager = new MemoryManager({
+            runtime,
+            tableName: "facts",
+        });
+
+        const bakedMemory = await factsManager.addEmbeddingToMemory({
             userId: userId,
             content: { text: fact },
+            agentId: runtime.agentId,
             roomId: roomId,
             embedding: existingEmbedding,
         });
-        await runtime.factManager.createMemory(bakedMemory);
+
+        await factsManager.createMemory(bakedMemory);
+
         if (!existingEmbedding) {
             writeCachedEmbedding(fact, bakedMemory.embedding as number[]);
             // Ensure there's a slight delay for asynchronous operations to complete
diff --git a/packages/core/tests/goal.test.d.ts b/packages/core/src/tests/goal.test.d.ts
similarity index 100%
rename from packages/core/tests/goal.test.d.ts
rename to packages/core/src/tests/goal.test.d.ts
diff --git a/packages/core/tests/goal.test.ts b/packages/core/src/tests/goal.test.ts
similarity index 97%
rename from packages/core/tests/goal.test.ts
rename to packages/core/src/tests/goal.test.ts
index 5105a311f75..8120fb0e126 100644
--- a/packages/core/tests/goal.test.ts
+++ b/packages/core/src/tests/goal.test.ts
@@ -1,6 +1,6 @@
 import dotenv from "dotenv";
-import { defaultActions } from "../src/core/actions.ts";
-import { createGoal, getGoals } from "../src/core/goals.ts";
+import { defaultActions } from "../src/actions.ts";
+import { createGoal, getGoals } from "../src/goals.ts";
 import {
     Goal,
     GoalStatus,
@@ -9,7 +9,7 @@ import {
     State,
     type Memory,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import { getOrCreateRelationship } from "../src/test_resources/getOrCreateRelationship.ts";
diff --git a/packages/core/tests/goals.test.d.ts b/packages/core/src/tests/goals.test.d.ts
similarity index 100%
rename from packages/core/tests/goals.test.d.ts
rename to packages/core/src/tests/goals.test.d.ts
diff --git a/packages/core/tests/goals.test.ts b/packages/core/src/tests/goals.test.ts
similarity index 97%
rename from packages/core/tests/goals.test.ts
rename to packages/core/src/tests/goals.test.ts
index 6938adfac36..872073a39a9 100644
--- a/packages/core/tests/goals.test.ts
+++ b/packages/core/src/tests/goals.test.ts
@@ -2,13 +2,13 @@ import dotenv from "dotenv";
 import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import { type User } from "../src/test_resources/types.ts";
-import { createGoal, getGoals, updateGoal } from "../src/core/goals.ts";
+import { createGoal, getGoals, updateGoal } from "../src/goals.ts";
 import {
     GoalStatus,
     IAgentRuntime,
     type Goal,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 describe("Goals", () => {
diff --git a/packages/core/tests/ignore.test.d.ts b/packages/core/src/tests/ignore.test.d.ts
similarity index 100%
rename from packages/core/tests/ignore.test.d.ts
rename to packages/core/src/tests/ignore.test.d.ts
diff --git a/packages/core/tests/ignore.test.ts b/packages/core/src/tests/ignore.test.ts
similarity index 93%
rename from packages/core/tests/ignore.test.ts
rename to packages/core/src/tests/ignore.test.ts
index 51191502596..28746f60689 100644
--- a/packages/core/tests/ignore.test.ts
+++ b/packages/core/src/tests/ignore.test.ts
@@ -1,7 +1,7 @@
 import dotenv from "dotenv";
 import { zeroUuid } from "../src/test_resources/constants.ts";
-import { composeContext } from "../src/core/context.ts";
-import { embeddingZeroVector } from "../src/core/memory.ts";
+import { composeContext } from "../src/context.ts";
+import { embeddingZeroVector } from "../src/memory.ts";
 import {
     Content,
     IAgentRuntime,
@@ -9,7 +9,7 @@ import {
     ModelClass,
     State,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import {
     GetTellMeAboutYourselfConversationTroll1,
@@ -22,7 +22,8 @@ import { runAiTest } from "../src/test_resources/runAiTest.ts";
 import { messageHandlerTemplate } from "../src/test_resources/templates.ts";
 import { type User } from "../src/test_resources/types.ts";
 import action from "../src/actions/ignore.ts";
-import { generateMessageResponse } from "../src/core/generation.ts";
+import { generateMessageResponse } from "../src/generation.ts";
+import { MemoryManager } from "@ai16z/eliza/src/memory.ts";
 
 async function handleMessage(
     runtime: IAgentRuntime,
@@ -129,7 +130,11 @@ describe("Ignore action tests", () => {
     });
 
     async function cleanup() {
-        await runtime.factManager.removeAllMemories(roomId);
+        const factsManager = new MemoryManager({
+            runtime,
+            tableName: "facts",
+        });
+        await factsManager.removeAllMemories(roomId);
         await runtime.messageManager.removeAllMemories(roomId);
     }
 
diff --git a/packages/core/tests/memory.test.d.ts b/packages/core/src/tests/memory.test.d.ts
similarity index 100%
rename from packages/core/tests/memory.test.d.ts
rename to packages/core/src/tests/memory.test.d.ts
diff --git a/packages/core/tests/memory.test.ts b/packages/core/src/tests/memory.test.ts
similarity index 99%
rename from packages/core/tests/memory.test.ts
rename to packages/core/src/tests/memory.test.ts
index 849bf0c7dfd..d77f515256e 100644
--- a/packages/core/tests/memory.test.ts
+++ b/packages/core/src/tests/memory.test.ts
@@ -7,9 +7,9 @@ import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import { getOrCreateRelationship } from "../src/test_resources/getOrCreateRelationship.ts";
 import { type User } from "../src/test_resources/types.ts";
-import { MemoryManager } from "../src/core/memory.ts";
-import { type Content, type Memory, type UUID } from "../src/core/types.ts";
-import { embed } from "../src/core/embedding.ts";
+import { MemoryManager } from "../src/memory.ts";
+import { type Content, type Memory, type UUID } from "../src/types.ts";
+import { embed } from "../src/embedding.ts";
 
 dotenv.config({ path: ".dev.vars" });
 describe("Memory", () => {
diff --git a/packages/core/tests/messages.test.d.ts b/packages/core/src/tests/messages.test.d.ts
similarity index 100%
rename from packages/core/tests/messages.test.d.ts
rename to packages/core/src/tests/messages.test.d.ts
diff --git a/packages/core/tests/messages.test.ts b/packages/core/src/tests/messages.test.ts
similarity index 96%
rename from packages/core/tests/messages.test.ts
rename to packages/core/src/tests/messages.test.ts
index 3b454f9e5f4..02e2c1107ad 100644
--- a/packages/core/tests/messages.test.ts
+++ b/packages/core/src/tests/messages.test.ts
@@ -8,15 +8,15 @@ import {
     formatActors,
     formatMessages,
     getActorDetails,
-} from "../src/core/messages.ts";
-import { createRelationship } from "../src/core/relationships.ts";
+} from "../src/messages.ts";
+import { createRelationship } from "../src/relationships.ts";
 import {
     IAgentRuntime,
     type Actor,
     type Content,
     type Memory,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
diff --git a/packages/core/tests/providers.test.d.ts b/packages/core/src/tests/providers.test.d.ts
similarity index 100%
rename from packages/core/tests/providers.test.d.ts
rename to packages/core/src/tests/providers.test.d.ts
diff --git a/packages/core/tests/providers.test.ts b/packages/core/src/tests/providers.test.ts
similarity index 97%
rename from packages/core/tests/providers.test.ts
rename to packages/core/src/tests/providers.test.ts
index 17fb24f952e..902de0379c1 100644
--- a/packages/core/tests/providers.test.ts
+++ b/packages/core/src/tests/providers.test.ts
@@ -7,7 +7,7 @@ import {
     type Provider,
     type State,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
diff --git a/packages/core/tests/relationships.test.d.ts b/packages/core/src/tests/relationships.test.d.ts
similarity index 100%
rename from packages/core/tests/relationships.test.d.ts
rename to packages/core/src/tests/relationships.test.d.ts
diff --git a/packages/core/tests/relationships.test.ts b/packages/core/src/tests/relationships.test.ts
similarity index 91%
rename from packages/core/tests/relationships.test.ts
rename to packages/core/src/tests/relationships.test.ts
index 83e0b1759ff..d9bb406e415 100644
--- a/packages/core/tests/relationships.test.ts
+++ b/packages/core/src/tests/relationships.test.ts
@@ -3,11 +3,8 @@ import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts"; // Adjust the import path as needed
 import { getOrCreateRelationship } from "../src/test_resources/getOrCreateRelationship.ts";
 import { type User } from "../src/test_resources/types.ts";
-import {
-    createRelationship,
-    getRelationships,
-} from "../src/core/relationships.ts"; // Adjust the import path as needed
-import { IAgentRuntime, type UUID } from "../src/core/types.ts";
+import { createRelationship, getRelationships } from "../src/relationships.ts"; // Adjust the import path as needed
+import { IAgentRuntime, type UUID } from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
diff --git a/packages/core/tests/runtime.test.d.ts b/packages/core/src/tests/runtime.test.d.ts
similarity index 100%
rename from packages/core/tests/runtime.test.d.ts
rename to packages/core/src/tests/runtime.test.d.ts
diff --git a/packages/core/tests/runtime.test.ts b/packages/core/src/tests/runtime.test.ts
similarity index 97%
rename from packages/core/tests/runtime.test.ts
rename to packages/core/src/tests/runtime.test.ts
index fdf2a5a0cc2..efd3f2efb09 100644
--- a/packages/core/tests/runtime.test.ts
+++ b/packages/core/src/tests/runtime.test.ts
@@ -7,7 +7,7 @@ import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import { getOrCreateRelationship } from "../src/test_resources/getOrCreateRelationship.ts";
 import { type User } from "../src/test_resources/types.ts";
-import { IAgentRuntime, type Memory, type UUID } from "../src/core/types.ts";
+import { IAgentRuntime, type Memory, type UUID } from "../src/types.ts";
 
 dotenv.config({ path: ".dev.vars" });
 
diff --git a/packages/core/tests/time.test.d.ts b/packages/core/src/tests/time.test.d.ts
similarity index 100%
rename from packages/core/tests/time.test.d.ts
rename to packages/core/src/tests/time.test.d.ts
diff --git a/packages/core/tests/time.test.ts b/packages/core/src/tests/time.test.ts
similarity index 96%
rename from packages/core/tests/time.test.ts
rename to packages/core/src/tests/time.test.ts
index 83489d05dc4..0453c2d79f7 100644
--- a/packages/core/tests/time.test.ts
+++ b/packages/core/src/tests/time.test.ts
@@ -1,11 +1,11 @@
 import dotenv from "dotenv";
-import { composeContext } from "../src/core/context.ts";
+import { composeContext } from "../src/context.ts";
 import {
     IAgentRuntime,
     type Memory,
     type State,
     type UUID,
-} from "../src/core/types.ts";
+} from "../src/types.ts";
 import { zeroUuid } from "../src/test_resources/constants.ts";
 import { createRuntime } from "../src/test_resources/createRuntime.ts";
 import timeProvider from "../src/providers/time.ts";
diff --git a/packages/core/tests/token.test.d.ts b/packages/core/src/tests/token.test.d.ts
similarity index 100%
rename from packages/core/tests/token.test.d.ts
rename to packages/core/src/tests/token.test.d.ts
diff --git a/packages/core/tests/token.test.ts b/packages/core/src/tests/token.test.ts
similarity index 100%
rename from packages/core/tests/token.test.ts
rename to packages/core/src/tests/token.test.ts
diff --git a/packages/core/tests/utils.test.ts b/packages/core/src/tests/utils.test.ts
similarity index 91%
rename from packages/core/tests/utils.test.ts
rename to packages/core/src/tests/utils.test.ts
index 9fb50d8b448..a7d4888899b 100644
--- a/packages/core/tests/utils.test.ts
+++ b/packages/core/src/tests/utils.test.ts
@@ -4,11 +4,11 @@ import path from "path";
 import { fileURLToPath } from "url";
 import { TwitterInteractionClient } from "../src/clients/twitter/interactions.ts";
 import { SqliteDatabaseAdapter } from "../src/adapters/sqlite.ts";
-import { defaultCharacter } from "../src/core/defaultCharacter.ts";
+import { defaultCharacter } from "../src/defaultCharacter.ts";
 import { buildConversationThread } from "../src/clients/twitter/utils.ts";
-import { AgentRuntime } from "../src/core/runtime.ts";
-import settings from "../src/core/settings.ts";
-import { ModelProvider } from "../src/core/types.ts";
+import { AgentRuntime } from "../src/runtime.ts";
+import settings from "../src/settings.ts";
+import { ModelProviderName } from "../src/types.ts";
 
 // const __dirname = path.dirname(new URL(".", import.meta.url).pathname);
 
@@ -26,7 +26,7 @@ describe("buildConversationThread", () => {
             ),
             token: settings.OPENAI_API_KEY as string,
             evaluators: [],
-            modelProvider: ModelProvider.OPENAI,
+            modelProvider: ModelProviderName.OPENAI,
             character: defaultCharacter,
             providers: [],
             actions: [],
diff --git a/packages/core/src/core/types.ts b/packages/core/src/types.ts
similarity index 89%
rename from packages/core/src/core/types.ts
rename to packages/core/src/types.ts
index b12c2901a3c..0b0e2dd83e0 100644
--- a/packages/core/src/core/types.ts
+++ b/packages/core/src/types.ts
@@ -1,5 +1,4 @@
 import { Readable } from "stream";
-import { ImageGenModel } from "./imageGenModels.ts";
 
 /**
  * Represents a UUID, which is a universally unique identifier conforming to the UUID standard.
@@ -77,6 +76,7 @@ export enum ModelClass {
     MEDIUM = "medium",
     LARGE = "large",
     EMBEDDING = "embedding",
+    IMAGE = "image",
 }
 
 export type Model = {
@@ -90,28 +90,32 @@ export type Model = {
         stop: string[];
         temperature: number;
     };
+    imageSettings?: {
+        steps?: number;
+    };
     model: {
         [ModelClass.SMALL]: string;
         [ModelClass.MEDIUM]: string;
         [ModelClass.LARGE]: string;
         [ModelClass.EMBEDDING]?: string;
+        [ModelClass.IMAGE]?: string;
     };
 };
 
 export type Models = {
-    [ModelProvider.OPENAI]: Model;
-    [ModelProvider.ANTHROPIC]: Model;
-    [ModelProvider.GROK]: Model;
-    [ModelProvider.GROQ]: Model;
-    [ModelProvider.LLAMACLOUD]: Model;
-    [ModelProvider.LLAMALOCAL]: Model;
-    [ModelProvider.GOOGLE]: Model;
-    [ModelProvider.CLAUDE_VERTEX]: Model;
-    [ModelProvider.REDPILL]: Model;
-    [ModelProvider.OLLAMA]: Model;
+    [ModelProviderName.OPENAI]: Model;
+    [ModelProviderName.ANTHROPIC]: Model;
+    [ModelProviderName.GROK]: Model;
+    [ModelProviderName.GROQ]: Model;
+    [ModelProviderName.LLAMACLOUD]: Model;
+    [ModelProviderName.LLAMALOCAL]: Model;
+    [ModelProviderName.GOOGLE]: Model;
+    [ModelProviderName.CLAUDE_VERTEX]: Model;
+    [ModelProviderName.REDPILL]: Model;
+    [ModelProviderName.OLLAMA]: Model;
 };
 
-export enum ModelProvider {
+export enum ModelProviderName {
     OPENAI = "openai",
     ANTHROPIC = "anthropic",
     GROK = "grok",
@@ -121,7 +125,7 @@ export enum ModelProvider {
     GOOGLE = "google",
     CLAUDE_VERTEX = "claude_vertex",
     REDPILL = "redpill",
-    OLLAMA = "ollama"
+    OLLAMA = "ollama",
 }
 
 /**
@@ -143,10 +147,6 @@ export interface State {
     goalsData?: Goal[]; // An optional array of goal objects relevant to the current conversation or context.
     recentMessages: string; // A string representation of recent messages in the conversation, for context.
     recentMessagesData: Memory[]; // An array of memory objects representing recent messages in the conversation.
-    recentFacts?: string; // An optional string representation of recent facts derived from the conversation.
-    recentFactsData?: Memory[]; // An optional array of memory objects representing recent facts.
-    relevantFacts?: string; // An optional string representation of facts relevant to the current context or topic.
-    relevantFactsData?: Memory[]; // An optional array of memory objects representing relevant facts.
     actionNames?: string; // An optional string listing the names of actions that are valid in the current state.
     actions?: string; // An optional string representation of actions and their descriptions, relevant to the current state.
     actionsData?: Action[]; // An optional array of action objects relevant to the current state.
@@ -300,12 +300,18 @@ export type Media = {
     text: string;
 };
 
+export type Client = {
+    start: (runtime?: IAgentRuntime) => Promise<unknown>;
+    stop: (runtime?: IAgentRuntime) => Promise<unknown>;
+};
+
 export type Plugin = {
     name: string;
     description: string;
-    actions: Action[];
-    providers: Provider[];
-    evaluators: Evaluator[];
+    actions?: Action[];
+    providers?: Provider[];
+    evaluators?: Evaluator[];
+    services?: Service[];
 };
 
 export enum Clients {
@@ -319,9 +325,8 @@ export type Character = {
     id?: UUID; // optional UUID which can be passed down to identify the character
     name: string;
     system?: string;
-    modelProvider: ModelProvider;
+    modelProvider: ModelProviderName;
     modelEndpointOverride?: string;
-    imageGenModel?: ImageGenModel;
     templates?: {
         [key: string]: string;
     };
@@ -494,29 +499,43 @@ export interface IMemoryManager {
     countMemories(roomId: UUID, unique?: boolean): Promise<number>;
 }
 
+export abstract class Service {
+    private static instance: Service | null = null;
+    static serviceType: ServiceType;
+
+    public static getInstance<T extends Service>(): T {
+        if (!Service.instance) {
+            // Use this.prototype.constructor to instantiate the concrete class
+            Service.instance = new (this as any)();
+        }
+        return Service.instance as T;
+    }
+}
+
 export interface IAgentRuntime {
     // Properties
     agentId: UUID;
     serverUrl: string;
     databaseAdapter: IDatabaseAdapter;
     token: string | null;
-    modelProvider: ModelProvider;
-    imageGenModel: ImageGenModel;
+    modelProvider: ModelProviderName;
     character: Character;
     providers: Provider[];
     actions: Action[];
+    evaluators: Evaluator[];
 
     messageManager: IMemoryManager;
     descriptionManager: IMemoryManager;
-    factManager: IMemoryManager;
     loreManager: IMemoryManager;
-    imageDescriptionService: IImageRecognitionService;
-    transcriptionService: ITranscriptionService;
-    videoService: IVideoService;
-    llamaService: ILlamaService;
-    browserService: IBrowserService;
-    speechService: ISpeechService;
-    pdfService: IPdfService;
+
+    services: Map<ServiceType, Service>;
+    registerMemoryManager(manager: IMemoryManager): void;
+
+    getMemoryManager(name: string): IMemoryManager | null;
+
+    getService<Service>(service: string): Service | null;
+
+    registerService(service: Service): void;
 
     getSetting(key: string): string | null;
 
@@ -553,14 +572,15 @@ export interface IAgentRuntime {
     updateRecentMessageState(state: State): Promise<State>;
 }
 
-export interface IImageRecognitionService {
+export interface IImageDescriptionService extends Service {
+    getInstance(): IImageDescriptionService;
     initialize(modelId?: string | null, device?: string | null): Promise<void>;
     describeImage(
         imageUrl: string
     ): Promise<{ title: string; description: string }>;
 }
 
-export interface ITranscriptionService {
+export interface ITranscriptionService extends Service {
     transcribeAttachment(audioBuffer: ArrayBuffer): Promise<string | null>;
     transcribeAttachmentLocally(
         audioBuffer: ArrayBuffer
@@ -569,12 +589,15 @@ export interface ITranscriptionService {
     transcribeLocally(audioBuffer: ArrayBuffer): Promise<string | null>;
 }
 
-export interface IVideoService {
+export interface IVideoService extends Service {
     isVideoUrl(url: string): boolean;
     processVideo(url: string): Promise<Media>;
+    fetchVideoInfo(url: string): Promise<Media>;
+    downloadVideo(videoInfo: Media): Promise<string>;
 }
 
-export interface ILlamaService {
+export interface ITextGenerationService extends Service {
+    getInstance(): ITextGenerationService;
     initializeModel(): Promise<void>;
     queueMessageCompletion(
         context: string,
@@ -595,18 +618,29 @@ export interface ILlamaService {
     getEmbeddingResponse(input: string): Promise<number[] | undefined>;
 }
 
-export interface IBrowserService {
+export interface IBrowserService extends Service {
     initialize(): Promise<void>;
     closeBrowser(): Promise<void>;
     getPageContent(
-        url: string
+        url: string,
+        runtime: IAgentRuntime
     ): Promise<{ title: string; description: string; bodyContent: string }>;
 }
 
-export interface ISpeechService {
+export interface ISpeechService extends Service {
     generate(runtime: IAgentRuntime, text: string): Promise<Readable>;
 }
 
-export interface IPdfService {
+export interface IPdfService extends Service {
     convertPdfToText(pdfBuffer: Buffer): Promise<string>;
 }
+
+export enum ServiceType {
+    IMAGE_DESCRIPTION = "image_description",
+    TRANSCRIPTION = "transcription",
+    VIDEO = "video",
+    TEXT_GENERATION = "text_generation",
+    BROWSER = "browser",
+    SPEECH_GENERATION = "speech_generation",
+    PDF = "pdf",
+}
diff --git a/packages/core/src/types/index.ts b/packages/core/src/types/index.ts
deleted file mode 100644
index ef520518115..00000000000
--- a/packages/core/src/types/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-interface Arguments {
-    character?: string;
-    characters?: string;
-    discord?: boolean;
-    telegram?: boolean;
-    isRoot?: boolean;
-}
-
-export type { Arguments };
diff --git a/packages/core/src/utils/youtube.ts b/packages/core/src/utils/youtube.ts
deleted file mode 100644
index 603d85fc51a..00000000000
--- a/packages/core/src/utils/youtube.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import youtubeDl from "youtube-dl-exec";
-
-export const youtube = (url: string, options?: any) => youtubeDl(url, options);
diff --git a/packages/core/src/core/uuid.ts b/packages/core/src/uuid.ts
similarity index 100%
rename from packages/core/src/core/uuid.ts
rename to packages/core/src/uuid.ts
diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json
index 12307c9f236..84cf46532cd 100644
--- a/packages/core/tsconfig.json
+++ b/packages/core/tsconfig.json
@@ -29,4 +29,4 @@
     },
     "include": ["src/**/*"],
     "exclude": ["node_modules", "dist", "src/**/*.d.ts", "types/**/*.test.ts"]
-}
\ No newline at end of file
+}
diff --git a/packages/plugin-bootstrap/package.json b/packages/plugin-bootstrap/package.json
new file mode 100644
index 00000000000..b840da7aa42
--- /dev/null
+++ b/packages/plugin-bootstrap/package.json
@@ -0,0 +1,18 @@
+{
+    "name": "@ai16z/plugin-bootstrap",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/actions/continue.ts b/packages/plugin-bootstrap/src/actions/continue.ts
similarity index 98%
rename from packages/core/src/actions/continue.ts
rename to packages/plugin-bootstrap/src/actions/continue.ts
index ca7d5de6c45..0d2257271b8 100644
--- a/packages/core/src/actions/continue.ts
+++ b/packages/plugin-bootstrap/src/actions/continue.ts
@@ -1,9 +1,12 @@
-import { composeContext } from "../core/context.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
 import {
     generateMessageResponse,
     generateTrueOrFalse,
-} from "../core/generation.ts";
-import { booleanFooter, messageCompletionFooter } from "../core/parsing.ts";
+} from "@ai16z/eliza/src/generation.ts";
+import {
+    booleanFooter,
+    messageCompletionFooter,
+} from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -13,7 +16,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 const maxContinuesInARow = 3;
 
diff --git a/packages/core/src/actions/followRoom.ts b/packages/plugin-bootstrap/src/actions/followRoom.ts
similarity index 97%
rename from packages/core/src/actions/followRoom.ts
rename to packages/plugin-bootstrap/src/actions/followRoom.ts
index 87a9e4ea8f7..84650adbcca 100644
--- a/packages/core/src/actions/followRoom.ts
+++ b/packages/plugin-bootstrap/src/actions/followRoom.ts
@@ -1,6 +1,6 @@
-import { composeContext } from "../core/context.ts";
-import { generateTrueOrFalse } from "../core/generation.ts";
-import { booleanFooter } from "../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateTrueOrFalse } from "@ai16z/eliza/src/generation.ts";
+import { booleanFooter } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -8,7 +8,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export const shouldFollowTemplate =
     `Based on the conversation so far:
@@ -24,7 +24,7 @@ Respond with YES if:
 Otherwise, respond with NO.
 ` + booleanFooter;
 
-export const followRoom: Action = {
+export const followRoomAction: Action = {
     name: "FOLLOW_ROOM",
     similes: [
         "FOLLOW_CHAT",
diff --git a/packages/core/src/actions/ignore.ts b/packages/plugin-bootstrap/src/actions/ignore.ts
similarity index 98%
rename from packages/core/src/actions/ignore.ts
rename to packages/plugin-bootstrap/src/actions/ignore.ts
index fde41a04f9b..fc69b3078b6 100644
--- a/packages/core/src/actions/ignore.ts
+++ b/packages/plugin-bootstrap/src/actions/ignore.ts
@@ -3,9 +3,9 @@ import {
     IAgentRuntime,
     Memory,
     type Action,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
-export const ignore: Action = {
+export const ignoreAction: Action = {
     name: "IGNORE",
     similes: ["STOP_TALKING", "STOP_CHATTING", "STOP_CONVERSATION"],
     validate: async (_runtime: IAgentRuntime, _message: Memory) => {
diff --git a/packages/plugin-bootstrap/src/actions/index.ts b/packages/plugin-bootstrap/src/actions/index.ts
new file mode 100644
index 00000000000..6144e3f8918
--- /dev/null
+++ b/packages/plugin-bootstrap/src/actions/index.ts
@@ -0,0 +1,7 @@
+export * from "./continue.ts";
+export * from "./followRoom.ts";
+export * from "./ignore.ts";
+export * from "./muteRoom.ts";
+export * from "./none.ts";
+export * from "./unfollowRoom.ts";
+export * from "./unmuteRoom.ts";
diff --git a/packages/core/src/actions/muteRoom.ts b/packages/plugin-bootstrap/src/actions/muteRoom.ts
similarity index 94%
rename from packages/core/src/actions/muteRoom.ts
rename to packages/plugin-bootstrap/src/actions/muteRoom.ts
index ec7021a4de3..86738805f49 100644
--- a/packages/core/src/actions/muteRoom.ts
+++ b/packages/plugin-bootstrap/src/actions/muteRoom.ts
@@ -1,6 +1,6 @@
-import { composeContext } from "../core/context.ts";
-import { generateTrueOrFalse } from "../core/generation.ts";
-import { booleanFooter } from "../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateTrueOrFalse } from "@ai16z/eliza/src/generation.ts";
+import { booleanFooter } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -8,7 +8,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export const shouldMuteTemplate =
     `Based on the conversation so far:
@@ -25,7 +25,7 @@ Respond with YES if:
 Otherwise, respond with NO.
 ` + booleanFooter;
 
-export const muteRoom: Action = {
+export const muteRoomAction: Action = {
     name: "MUTE_ROOM",
     similes: [
         "MUTE_CHAT",
diff --git a/packages/core/src/actions/none.ts b/packages/plugin-bootstrap/src/actions/none.ts
similarity index 98%
rename from packages/core/src/actions/none.ts
rename to packages/plugin-bootstrap/src/actions/none.ts
index 8421e4f24fc..e9313aba1ad 100644
--- a/packages/core/src/actions/none.ts
+++ b/packages/plugin-bootstrap/src/actions/none.ts
@@ -3,9 +3,9 @@ import {
     IAgentRuntime,
     Memory,
     type Action,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
-export const none: Action = {
+export const noneAction: Action = {
     name: "NONE",
     similes: [
         "NO_ACTION",
diff --git a/packages/core/src/actions/unfollowRoom.ts b/packages/plugin-bootstrap/src/actions/unfollowRoom.ts
similarity index 97%
rename from packages/core/src/actions/unfollowRoom.ts
rename to packages/plugin-bootstrap/src/actions/unfollowRoom.ts
index d3cc69d84c2..66e59f6c746 100644
--- a/packages/core/src/actions/unfollowRoom.ts
+++ b/packages/plugin-bootstrap/src/actions/unfollowRoom.ts
@@ -1,6 +1,6 @@
-import { composeContext } from "../core/context.ts";
-import { generateTrueOrFalse } from "../core/generation.ts";
-import { booleanFooter } from "../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateTrueOrFalse } from "@ai16z/eliza/src/generation.ts";
+import { booleanFooter } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -8,7 +8,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 const shouldUnfollowTemplate =
     `Based on the conversation so far:
@@ -24,7 +24,7 @@ Respond with YES if:
 Otherwise, respond with NO.
 ` + booleanFooter;
 
-export const unfollowRoom: Action = {
+export const unfollowRoomAction: Action = {
     name: "UNFOLLOW_ROOM",
     similes: [
         "UNFOLLOW_CHAT",
diff --git a/packages/core/src/actions/unmuteRoom.ts b/packages/plugin-bootstrap/src/actions/unmuteRoom.ts
similarity index 94%
rename from packages/core/src/actions/unmuteRoom.ts
rename to packages/plugin-bootstrap/src/actions/unmuteRoom.ts
index 17e28e4a11d..f9071bfa651 100644
--- a/packages/core/src/actions/unmuteRoom.ts
+++ b/packages/plugin-bootstrap/src/actions/unmuteRoom.ts
@@ -1,6 +1,6 @@
-import { composeContext } from "../core/context.ts";
-import { generateTrueOrFalse } from "../core/generation.ts";
-import { booleanFooter } from "../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateTrueOrFalse } from "@ai16z/eliza/src/generation.ts";
+import { booleanFooter } from "@ai16z/eliza/src/parsing.ts";
 import {
     Action,
     ActionExample,
@@ -8,7 +8,7 @@ import {
     Memory,
     ModelClass,
     State,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export const shouldUnmuteTemplate =
     `Based on the conversation so far:
@@ -24,7 +24,7 @@ Respond with YES if:
 Otherwise, respond with NO.
 ` + booleanFooter;
 
-export const unmuteRoom: Action = {
+export const unmuteRoomAction: Action = {
     name: "UNMUTE_ROOM",
     similes: [
         "UNMUTE_CHAT",
diff --git a/packages/core/src/evaluators/fact.ts b/packages/plugin-bootstrap/src/evaluators/fact.ts
similarity index 93%
rename from packages/core/src/evaluators/fact.ts
rename to packages/plugin-bootstrap/src/evaluators/fact.ts
index 3ca587f26e0..5619f74cff5 100644
--- a/packages/core/src/evaluators/fact.ts
+++ b/packages/plugin-bootstrap/src/evaluators/fact.ts
@@ -1,12 +1,14 @@
-import { composeContext } from "../core/context.ts";
-import { generateObjectArray } from "../core/generation.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateObjectArray } from "@ai16z/eliza/src/generation.ts";
+import { MemoryManager } from "@ai16z/eliza/src/memory.ts";
 import {
     ActionExample,
     Content,
     IAgentRuntime,
     Memory,
     ModelClass,
-} from "../core/types.ts";
+    Evaluator,
+} from "@ai16z/eliza/src/types.ts";
 
 export const formatFacts = (facts: Memory[]) => {
     const messageStrings = facts
@@ -25,10 +27,6 @@ These are an examples of the expected output of this task:
 {{evaluationExamples}}
 # END OF EXAMPLES
 
-Known facts:
-{{recentFacts}}
-{{relevantFacts}}
-
 # INSTRUCTIONS
 
 Extract any claims from the conversation that are not already present in the list of known facts above:
@@ -70,6 +68,11 @@ async function handler(runtime: IAgentRuntime, message: Memory) {
         modelClass: ModelClass.SMALL,
     });
 
+    const factsManager = new MemoryManager({
+        runtime,
+        tableName: "facts",
+    });
+
     if (!facts) {
         return [];
     }
@@ -88,7 +91,7 @@ async function handler(runtime: IAgentRuntime, message: Memory) {
         .map((fact) => fact.claim);
 
     for (const fact of filteredFacts) {
-        const factMemory = await runtime.factManager.addEmbeddingToMemory({
+        const factMemory = await factsManager.addEmbeddingToMemory({
             userId: agentId!,
             agentId,
             content: { text: fact },
@@ -96,14 +99,14 @@ async function handler(runtime: IAgentRuntime, message: Memory) {
             createdAt: Date.now(),
         });
 
-        await runtime.factManager.createMemory(factMemory, true);
+        await factsManager.createMemory(factMemory, true);
 
         await new Promise((resolve) => setTimeout(resolve, 250));
     }
     return filteredFacts;
 }
 
-export default {
+export const factEvaluator: Evaluator = {
     name: "GET_FACTS",
     similes: [
         "GET_CLAIMS",
diff --git a/packages/core/src/evaluators/goal.ts b/packages/plugin-bootstrap/src/evaluators/goal.ts
similarity index 96%
rename from packages/core/src/evaluators/goal.ts
rename to packages/plugin-bootstrap/src/evaluators/goal.ts
index 5039fd4fae2..aeab53a89d8 100644
--- a/packages/core/src/evaluators/goal.ts
+++ b/packages/plugin-bootstrap/src/evaluators/goal.ts
@@ -1,7 +1,7 @@
-import { composeContext } from "../core/context.ts";
-import { generateText } from "../core/generation.ts";
-import { getGoals } from "../core/goals.ts";
-import { parseJsonArrayFromText } from "../core/parsing.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateText } from "@ai16z/eliza/src/generation.ts";
+import { getGoals } from "@ai16z/eliza/src/goals.ts";
+import { parseJsonArrayFromText } from "@ai16z/eliza/src/parsing.ts";
 import {
     IAgentRuntime,
     Memory,
@@ -9,7 +9,8 @@ import {
     Objective,
     type Goal,
     type State,
-} from "../core/types.ts";
+    Evaluator,
+} from "@ai16z/eliza/src/types.ts";
 
 const goalsTemplate = `TASK: Update Goal
 Analyze the conversation and update the status of the goals based on the new information provided.
@@ -130,7 +131,7 @@ async function handler(
     return updatedGoals; // Return updated goals for further processing or logging
 }
 
-export default {
+export const goalEvaluator: Evaluator = {
     name: "UPDATE_GOAL",
     similes: [
         "UPDATE_GOALS",
diff --git a/packages/plugin-bootstrap/src/evaluators/index.ts b/packages/plugin-bootstrap/src/evaluators/index.ts
new file mode 100644
index 00000000000..8496906e433
--- /dev/null
+++ b/packages/plugin-bootstrap/src/evaluators/index.ts
@@ -0,0 +1,2 @@
+export * from "./fact.ts";
+export * from "./goal.ts";
diff --git a/packages/plugin-bootstrap/src/index.ts b/packages/plugin-bootstrap/src/index.ts
new file mode 100644
index 00000000000..439265fdebb
--- /dev/null
+++ b/packages/plugin-bootstrap/src/index.ts
@@ -0,0 +1,29 @@
+import { Plugin } from "@ai16z/eliza/src/types.ts";
+import { continueAction } from "./actions/continue.ts";
+import { followRoomAction } from "./actions/followRoom.ts";
+import { ignoreAction } from "./actions/ignore.ts";
+import { muteRoomAction } from "./actions/muteRoom.ts";
+import { noneAction } from "./actions/none.ts";
+import { unfollowRoomAction } from "./actions/unfollowRoom.ts";
+import { unmuteRoomAction } from "./actions/unmuteRoom.ts";
+import { factEvaluator } from "./evaluators/fact.ts";
+import { goalEvaluator } from "./evaluators/goal.ts";
+import { boredomProvider } from "./providers/boredom.ts";
+import { factsProvider } from "./providers/facts.ts";
+import { timeProvider } from "./providers/time.ts";
+
+export const bootstrapPlugin: Plugin = {
+    name: "bootstrap",
+    description: "Agent bootstrap with basic actions and evaluators",
+    actions: [
+        continueAction,
+        followRoomAction,
+        unfollowRoomAction,
+        ignoreAction,
+        noneAction,
+        muteRoomAction,
+        unmuteRoomAction,
+    ],
+    evaluators: [factEvaluator, goalEvaluator],
+    providers: [boredomProvider, timeProvider, factsProvider],
+};
diff --git a/packages/core/src/providers/boredom.ts b/packages/plugin-bootstrap/src/providers/boredom.ts
similarity index 99%
rename from packages/core/src/providers/boredom.ts
rename to packages/plugin-bootstrap/src/providers/boredom.ts
index d04ec974dcd..4e534ab1d4b 100644
--- a/packages/core/src/providers/boredom.ts
+++ b/packages/plugin-bootstrap/src/providers/boredom.ts
@@ -1,4 +1,9 @@
-import { IAgentRuntime, Memory, Provider, State } from "../core/types.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 
 const boredomLevels = [
     {
diff --git a/packages/plugin-bootstrap/src/providers/facts.ts b/packages/plugin-bootstrap/src/providers/facts.ts
new file mode 100644
index 00000000000..81811fb0418
--- /dev/null
+++ b/packages/plugin-bootstrap/src/providers/facts.ts
@@ -0,0 +1,61 @@
+import { embed } from "@ai16z/eliza/src/embedding.ts";
+import { MemoryManager } from "@ai16z/eliza/src/memory.ts";
+import { formatMessages } from "@ai16z/eliza/src/messages.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
+import { formatFacts } from "../evaluators/fact.ts";
+
+const factsProvider: Provider = {
+    get: async (runtime: IAgentRuntime, message: Memory, state?: State) => {
+        const recentMessagesData = state?.recentMessagesData?.slice(-10);
+
+        const recentMessages = formatMessages({
+            messages: recentMessagesData,
+            actors: state?.actorsData,
+        });
+
+        const embedding = await embed(runtime, recentMessages);
+
+        console.log("embedding", embedding);
+
+        const memoryManager = new MemoryManager({
+            runtime,
+            tableName: "facts",
+        });
+
+        const relevantFacts = []
+        
+        // await memoryManager.searchMemoriesByEmbedding(
+        //     embedding,
+        //     {
+        //         roomId: message.roomId,
+        //         count: 10,
+        //         agentId: runtime.agentId,
+        //     }
+        // );
+
+        const recentFactsData = await memoryManager.getMemories({
+            roomId: message.roomId,
+            count: 10,
+            agentId: runtime.agentId,
+        });
+
+        // join the two and deduplicate
+        const allFacts = [...relevantFacts, ...recentFactsData].filter(
+            (fact, index, self) =>
+                index === self.findIndex((t) => t.id === fact.id)
+        );
+
+        const formattedFacts = formatFacts(allFacts);
+
+        return "Key facts that {{agentName}} knows:\n{{formattedFacts}}"
+            .replace("{{agentName}}", runtime.character.name)
+            .replace("{{formattedFacts}}", formattedFacts);
+    },
+};
+
+export { factsProvider };
diff --git a/packages/plugin-bootstrap/src/providers/index.ts b/packages/plugin-bootstrap/src/providers/index.ts
new file mode 100644
index 00000000000..0c9f1818b4a
--- /dev/null
+++ b/packages/plugin-bootstrap/src/providers/index.ts
@@ -0,0 +1,3 @@
+export * from "./boredom.ts";
+export * from "./time.ts";
+export * from "./facts.ts";
diff --git a/packages/core/src/providers/time.ts b/packages/plugin-bootstrap/src/providers/time.ts
similarity index 79%
rename from packages/core/src/providers/time.ts
rename to packages/plugin-bootstrap/src/providers/time.ts
index 96ae7f803b5..9e26822281f 100644
--- a/packages/core/src/providers/time.ts
+++ b/packages/plugin-bootstrap/src/providers/time.ts
@@ -1,4 +1,9 @@
-import { IAgentRuntime, Memory, Provider, State } from "../core/types.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 
 const timeProvider: Provider = {
     get: async (_runtime: IAgentRuntime, _message: Memory, _state?: State) => {
diff --git a/packages/plugin-bootstrap/tsconfig.json b/packages/plugin-bootstrap/tsconfig.json
new file mode 100644
index 00000000000..9294a4fa6db
--- /dev/null
+++ b/packages/plugin-bootstrap/tsconfig.json
@@ -0,0 +1,11 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": ".",
+        "module": "ESNext",
+        "moduleResolution": "Bundler",
+        "types": ["node"]
+    },
+    "include": ["src"]
+}
diff --git a/packages/plugin-bootstrap/tsup.config.ts b/packages/plugin-bootstrap/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/plugin-bootstrap/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/plugin-image-generation/package.json b/packages/plugin-image-generation/package.json
index d5f898f046c..29c2bbaa352 100644
--- a/packages/plugin-image-generation/package.json
+++ b/packages/plugin-image-generation/package.json
@@ -1,11 +1,11 @@
 {
-    "name": "@eliza/plugin-image-generation",
+    "name": "@ai16z/plugin-image-generation",
     "version": "0.0.1",
     "main": "dist/index.js",
     "type": "module",
     "types": "dist/index.d.ts",
     "dependencies": {
-        "@eliza/core": "workspace:*",
+        "@ai16z/eliza": "workspace:*",
         "tsup": "^8.3.5"
     },
     "scripts": {
diff --git a/packages/plugin-image-generation/src/index.ts b/packages/plugin-image-generation/src/index.ts
index 61bd1b81b3b..22aa577ed81 100644
--- a/packages/plugin-image-generation/src/index.ts
+++ b/packages/plugin-image-generation/src/index.ts
@@ -1,13 +1,13 @@
+import { elizaLogger } from "@ai16z/eliza/src/logger.ts";
 import {
+    Action,
     HandlerCallback,
     IAgentRuntime,
     Memory,
-    State,
     Plugin,
-    Action,
-} from "@eliza/core";
-import { elizaLogger } from "@eliza/core";
-import { generateCaption, generateImage } from "./utils.ts";
+    State,
+} from "@ai16z/eliza/src/types.ts";
+import { generateCaption, generateImage } from "@ai16z/eliza/src/generation.ts";
 
 const imageGeneration: Action = {
     name: "GENERATE_IMAGE",
diff --git a/packages/plugin-image-generation/src/utils.ts b/packages/plugin-image-generation/src/utils.ts
deleted file mode 100644
index e00e56e17e5..00000000000
--- a/packages/plugin-image-generation/src/utils.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-// TODO: Replace with the vercel ai sdk and support all providers
-import { Buffer } from "buffer";
-import Together from "together-ai";
-import { IAgentRuntime } from "@eliza/core";
-import { getImageGenModel, ImageGenModel } from "@eliza/core";
-
-import OpenAI from "openai";
-
-export const generateImage = async (
-    data: {
-        prompt: string;
-        width: number;
-        height: number;
-        count?: number;
-    },
-    runtime: IAgentRuntime
-): Promise<{
-    success: boolean;
-    data?: string[];
-    error?: any;
-}> => {
-    const { prompt, width, height } = data;
-    let { count } = data;
-    if (!count) {
-        count = 1;
-    }
-
-    const imageGenModel = runtime.imageGenModel;
-    const model = getImageGenModel(imageGenModel);
-    const apiKey =
-        imageGenModel === ImageGenModel.TogetherAI
-            ? runtime.getSetting("TOGETHER_API_KEY")
-            : runtime.getSetting("OPENAI_API_KEY");
-
-    try {
-        if (imageGenModel === ImageGenModel.TogetherAI) {
-            const together = new Together({ apiKey: apiKey as string });
-            const response = await together.images.create({
-                model: "black-forest-labs/FLUX.1-schnell",
-                prompt,
-                width,
-                height,
-                steps: model.steps,
-                n: count,
-            });
-            const urls: string[] = [];
-            for (let i = 0; i < response.data.length; i++) {
-                //@ts-ignore
-                const url = response.data[i].url;
-                urls.push(url);
-            }
-            const base64s = await Promise.all(
-                urls.map(async (url) => {
-                    const response = await fetch(url);
-                    const blob = await response.blob();
-                    const buffer = await blob.arrayBuffer();
-                    let base64 = Buffer.from(buffer).toString("base64");
-                    base64 = "data:image/jpeg;base64," + base64;
-                    return base64;
-                })
-            );
-            return { success: true, data: base64s };
-        } else {
-            let targetSize = `${width}x${height}`;
-            if (
-                targetSize !== "1024x1024" &&
-                targetSize !== "1792x1024" &&
-                targetSize !== "1024x1792"
-            ) {
-                targetSize = "1024x1024";
-            }
-            const openai = new OpenAI({ apiKey: apiKey as string });
-            const response = await openai.images.generate({
-                model: model.subModel,
-                prompt,
-                size: targetSize as "1024x1024" | "1792x1024" | "1024x1792",
-                n: count,
-                response_format: "b64_json",
-            });
-            const base64s = response.data.map(
-                (image) => `data:image/png;base64,${image.b64_json}`
-            );
-            return { success: true, data: base64s };
-        }
-    } catch (error) {
-        console.error(error);
-        return { success: false, error: error };
-    }
-};
-
-export const generateCaption = async (
-    data: { imageUrl: string },
-    runtime: IAgentRuntime
-): Promise<{
-    title: string;
-    description: string;
-}> => {
-    const { imageUrl } = data;
-    const resp = await runtime.imageDescriptionService.describeImage(imageUrl);
-    return {
-        title: resp.title.trim(),
-        description: resp.description.trim(),
-    };
-};
diff --git a/packages/plugin-image-generation/tsconfig.json b/packages/plugin-image-generation/tsconfig.json
index 70b69a61e55..9294a4fa6db 100644
--- a/packages/plugin-image-generation/tsconfig.json
+++ b/packages/plugin-image-generation/tsconfig.json
@@ -1,12 +1,11 @@
 {
     "extends": "../../tsconfig.json",
     "compilerOptions": {
-      "outDir": "dist",
-      "rootDir": ".",
-      "module": "ESNext",
-      "moduleResolution": "Bundler",
-      "types": ["node"]
+        "outDir": "dist",
+        "rootDir": ".",
+        "module": "ESNext",
+        "moduleResolution": "Bundler",
+        "types": ["node"]
     },
     "include": ["src"]
-  }
-  
\ No newline at end of file
+}
diff --git a/packages/plugin-node/package.json b/packages/plugin-node/package.json
new file mode 100644
index 00000000000..c349b2c4a16
--- /dev/null
+++ b/packages/plugin-node/package.json
@@ -0,0 +1,77 @@
+{
+    "name": "@ai16z/plugin-node",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "@cliqz/adblocker-playwright": "1.34.0",
+        "@echogarden/espeak-ng-emscripten": "0.3.0",
+        "@echogarden/kissfft-wasm": "0.2.0",
+        "@echogarden/speex-resampler-wasm": "0.2.1",
+        "@huggingface/transformers": "3.0.1",
+        "@opendocsg/pdf2md": "0.1.31",
+        "@types/uuid": "^10.0.0",
+        "alawmulaw": "6.0.0",
+        "bignumber": "1.1.0",
+        "bignumber.js": "9.1.2",
+        "capsolver-npm": "2.0.2",
+        "cldr-segmentation": "2.2.1",
+        "command-exists": "1.2.9",
+        "csv-writer": "1.6.0",
+        "espeak-ng": "1.0.2",
+        "ffmpeg-static": "5.2.0",
+        "fluent-ffmpeg": "2.1.3",
+        "formdata-node": "6.0.3",
+        "fs-extra": "11.2.0",
+        "gaxios": "6.7.1",
+        "gif-frames": "^0.4.1",
+        "glob": "11.0.0",
+        "graceful-fs": "4.2.11",
+        "html-escaper": "3.0.3",
+        "html-to-text": "9.0.5",
+        "import-meta-resolve": "4.1.0",
+        "jieba-wasm": "2.2.0",
+        "json5": "2.2.3",
+        "kuromoji": "0.1.2",
+        "libsodium-wrappers": "0.7.15",
+        "multer": "1.4.5-lts.1",
+        "node-cache": "5.1.2",
+        "node-llama-cpp": "3.1.1",
+        "nodejs-whisper": "0.1.18",
+        "onnxruntime-node": "^1.20.0",
+        "pdfjs-dist": "4.7.76",
+        "playwright": "1.48.2",
+        "pm2": "5.4.2",
+        "puppeteer-extra": "3.3.6",
+        "puppeteer-extra-plugin-capsolver": "2.0.1",
+        "sharp": "^0.33.5",
+        "srt": "0.0.3",
+        "systeminformation": "5.23.5",
+        "tar": "7.4.3",
+        "tinyld": "1.3.4",
+        "uuid": "11.0.2",
+        "wav": "1.0.2",
+        "wav-encoder": "1.3.0",
+        "wavefile": "11.0.0",
+        "yargs": "17.7.2",
+        "youtube-dl-exec": "3.0.10"
+    },
+    "devDependencies": {
+        "tsup": "^8.3.5"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts",
+        "dev": "tsup --watch",
+        "postinstall": "npx playwright install-deps && npx playwright install"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0",
+        "onnxruntime-node": "^1.20.0"
+    },
+    "trustedDependencies": {
+        "onnxruntime-node": "^1.20.0",
+        "sharp": "^0.33.5"
+    }
+}
diff --git a/packages/plugin-node/src/index.ts b/packages/plugin-node/src/index.ts
new file mode 100644
index 00000000000..1f1f694a38e
--- /dev/null
+++ b/packages/plugin-node/src/index.ts
@@ -0,0 +1,24 @@
+import { Plugin } from "@ai16z/eliza/src/types.ts";
+import { BrowserService } from "./services/browser.ts";
+import { ImageDescriptionService } from "./services/image.ts";
+import { LlamaService } from "./services/llama.ts";
+import { PdfService } from "./services/pdf.ts";
+import { SpeechService } from "./services/speech.ts";
+import { TranscriptionService } from "./services/transcription.ts";
+import { VideoService } from "./services/video.ts";
+
+export const nodePlugin: Plugin = {
+    name: "default",
+    description: "Default plugin, with basic actions and evaluators",
+    services: [
+        BrowserService,
+        ImageDescriptionService,
+        LlamaService,
+        PdfService,
+        SpeechService,
+        TranscriptionService,
+        VideoService,
+    ],
+};
+
+export default nodePlugin;
diff --git a/packages/core/src/services/audioUtils.ts b/packages/plugin-node/src/services/audioUtils.ts
similarity index 100%
rename from packages/core/src/services/audioUtils.ts
rename to packages/plugin-node/src/services/audioUtils.ts
diff --git a/packages/core/src/services/browser.ts b/packages/plugin-node/src/services/browser.ts
similarity index 79%
rename from packages/core/src/services/browser.ts
rename to packages/plugin-node/src/services/browser.ts
index fd6e1792eb4..16cb244a3b1 100644
--- a/packages/core/src/services/browser.ts
+++ b/packages/plugin-node/src/services/browser.ts
@@ -1,28 +1,80 @@
+import { generateText, trimTokens } from "@ai16z/eliza/src/generation.ts";
+import { parseJSONObjectFromText } from "@ai16z/eliza/src/parsing.ts";
+import { Service } from "@ai16z/eliza/src/types.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
+import {
+    IAgentRuntime,
+    ModelClass,
+    ServiceType,
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import { PlaywrightBlocker } from "@cliqz/adblocker-playwright";
 import CaptchaSolver from "capsolver-npm";
-import fetch from "cross-fetch";
 import fs from "fs";
 import path from "path";
 import { Browser, BrowserContext, chromium, Page } from "playwright";
-import { IAgentRuntime } from "../core/types.ts";
-import { stringToUuid } from "../core/uuid.ts";
-import { generateSummary } from "./summary.ts";
-import settings from "../core/settings.ts";
 
-export class BrowserService {
-    private static instance: BrowserService | null = null;
+async function generateSummary(
+    runtime: IAgentRuntime,
+    text: string
+): Promise<{ title: string; description: string }> {
+    // make sure text is under 128k characters
+    text = trimTokens(text, 100000, "gpt-4o-mini"); // TODO: clean this up
+
+    const prompt = `Please generate a concise summary for the following text:
+  
+  Text: """
+  ${text}
+  """
+  
+  Respond with a JSON object in the following format:
+  \`\`\`json
+  {
+    "title": "Generated Title",
+    "summary": "Generated summary and/or description of the text"
+  }
+  \`\`\``;
+
+    const response = await generateText({
+        runtime,
+        context: prompt,
+        modelClass: ModelClass.SMALL,
+    });
+
+    const parsedResponse = parseJSONObjectFromText(response);
+
+    if (parsedResponse) {
+        return {
+            title: parsedResponse.title,
+            description: parsedResponse.summary,
+        };
+    }
+
+    return {
+        title: "",
+        description: "",
+    };
+}
+
+export class BrowserService extends Service {
     private browser: Browser | undefined;
     private context: BrowserContext | undefined;
     private blocker: PlaywrightBlocker | undefined;
     private captchaSolver: CaptchaSolver;
     private CONTENT_CACHE_DIR = "./content_cache";
-    private runtime: IAgentRuntime;
 
     private queue: string[] = [];
     private processing: boolean = false;
 
-    private constructor(runtime: IAgentRuntime) {
-        this.runtime = runtime;
+    static serviceType: ServiceType = ServiceType.BROWSER;
+
+    static register(runtime: IAgentRuntime): IAgentRuntime {
+        // since we are lazy loading, do nothing
+        return runtime;
+    }
+
+    constructor() {
+        super();
         this.browser = undefined;
         this.context = undefined;
         this.blocker = undefined;
@@ -32,13 +84,6 @@ export class BrowserService {
         this.ensureCacheDirectoryExists();
     }
 
-    public static getInstance(runtime: IAgentRuntime): BrowserService {
-        if (!BrowserService.instance) {
-            BrowserService.instance = new BrowserService(runtime);
-        }
-        return BrowserService.instance;
-    }
-
     private ensureCacheDirectoryExists() {
         if (!fs.existsSync(this.CONTENT_CACHE_DIR)) {
             fs.mkdirSync(this.CONTENT_CACHE_DIR);
@@ -73,11 +118,12 @@ export class BrowserService {
     }
 
     async getPageContent(
-        url: string
+        url: string,
+        runtime: IAgentRuntime
     ): Promise<{ title: string; description: string; bodyContent: string }> {
         await this.initialize();
         this.queue.push(url);
-        this.processQueue();
+        this.processQueue(runtime);
 
         return new Promise((resolve, reject) => {
             const checkQueue = async () => {
@@ -86,7 +132,10 @@ export class BrowserService {
                     setTimeout(checkQueue, 100);
                 } else {
                     try {
-                        const result = await this.fetchPageContent(url);
+                        const result = await this.fetchPageContent(
+                            url,
+                            runtime
+                        );
                         resolve(result);
                     } catch (error) {
                         reject(error);
@@ -101,7 +150,7 @@ export class BrowserService {
         return stringToUuid(url);
     }
 
-    private async processQueue(): Promise<void> {
+    private async processQueue(runtime: IAgentRuntime): Promise<void> {
         if (this.processing || this.queue.length === 0) {
             return;
         }
@@ -110,14 +159,15 @@ export class BrowserService {
 
         while (this.queue.length > 0) {
             const url = this.queue.shift();
-            await this.fetchPageContent(url);
+            await this.fetchPageContent(url, runtime);
         }
 
         this.processing = false;
     }
 
     private async fetchPageContent(
-        url: string
+        url: string,
+        runtime: IAgentRuntime
     ): Promise<{ title: string; description: string; bodyContent: string }> {
         const cacheKey = this.getCacheKey(url);
         const cacheFilePath = path.join(
@@ -161,7 +211,7 @@ export class BrowserService {
             }
 
             if (response.status() === 403 || response.status() === 404) {
-                return await this.tryAlternativeSources(url);
+                return await this.tryAlternativeSources(url, runtime);
             }
 
             // Check for CAPTCHA
@@ -174,7 +224,7 @@ export class BrowserService {
                 () => document.body.innerText
             );
             const { description } = await generateSummary(
-                this.runtime,
+                runtime,
                 title + "\n" + bodyContent
             );
             const content = { title, description, bodyContent };
@@ -267,12 +317,13 @@ export class BrowserService {
     }
 
     private async tryAlternativeSources(
-        url: string
+        url: string,
+        runtime: IAgentRuntime
     ): Promise<{ title: string; description: string; bodyContent: string }> {
         // Try Internet Archive
         const archiveUrl = `https://web.archive.org/web/${url}`;
         try {
-            return await this.fetchPageContent(archiveUrl);
+            return await this.fetchPageContent(archiveUrl, runtime);
         } catch (error) {
             console.error("Error fetching from Internet Archive:", error);
         }
@@ -280,7 +331,7 @@ export class BrowserService {
         // Try Google Search as a last resort
         const googleSearchUrl = `https://www.google.com/search?q=${encodeURIComponent(url)}`;
         try {
-            return await this.fetchPageContent(googleSearchUrl);
+            return await this.fetchPageContent(googleSearchUrl, runtime);
         } catch (error) {
             console.error("Error fetching from Google Search:", error);
             console.error("Failed to fetch content from alternative sources");
diff --git a/packages/core/src/services/image.ts b/packages/plugin-node/src/services/image.ts
similarity index 90%
rename from packages/core/src/services/image.ts
rename to packages/plugin-node/src/services/image.ts
index 7f29418971b..9868cfcc9ca 100644
--- a/packages/core/src/services/image.ts
+++ b/packages/plugin-node/src/services/image.ts
@@ -1,4 +1,11 @@
 // Current image recognition service -- local recognition working, no openai recognition
+import models from "@ai16z/eliza/src/models.ts";
+import { Service } from "@ai16z/eliza/src/types.ts";
+import {
+    IAgentRuntime,
+    ModelProviderName,
+    ServiceType,
+} from "@ai16z/eliza/src/types.ts";
 import {
     AutoProcessor,
     AutoTokenizer,
@@ -14,48 +21,36 @@ import fs from "fs";
 import gifFrames from "gif-frames";
 import os from "os";
 import path from "path";
-import models from "../core/models.ts";
-import { IAgentRuntime, ModelProvider } from "../core/types.ts";
 
-class ImageDescriptionService {
-    private static instance: ImageDescriptionService | null = null;
+export class ImageDescriptionService extends Service {
     private modelId: string = "onnx-community/Florence-2-base-ft";
     private device: string = "gpu";
     private model: PreTrainedModel | null = null;
     private processor: Florence2Processor | null = null;
     private tokenizer: PreTrainedTokenizer | null = null;
     private initialized: boolean = false;
-    runtime: IAgentRuntime;
+
+    static serviceType: ServiceType = ServiceType.IMAGE_DESCRIPTION;
 
     private queue: string[] = [];
     private processing: boolean = false;
 
-    private constructor(runtime: IAgentRuntime) {
-        this.runtime = runtime;
-        this.initialize();
-    }
-
-    public static getInstance(runtime: IAgentRuntime): ImageDescriptionService {
-        if (!ImageDescriptionService.instance) {
-            ImageDescriptionService.instance = new ImageDescriptionService(
-                runtime
-            );
-        }
-        return ImageDescriptionService.instance;
+    constructor() {
+        super();
     }
 
     async initialize(
-        modelId: string | null = null,
-        device: string | null = null
+        device: string | null = null,
+        runtime: IAgentRuntime
     ): Promise<void> {
         if (this.initialized) {
             return;
         }
 
-        const model = models[this.runtime.character.settings.model];
+        const model = models[runtime.character.settings.model];
 
-        if (model === ModelProvider.LLAMALOCAL) {
-            this.modelId = modelId || "onnx-community/Florence-2-base-ft";
+        if (model === ModelProviderName.LLAMALOCAL) {
+            this.modelId = "onnx-community/Florence-2-base-ft";
 
             env.allowLocalModels = false;
             env.allowRemoteModels = true;
@@ -95,10 +90,14 @@ class ImageDescriptionService {
     }
 
     async describeImage(
-        imageUrl: string
+        imageUrl: string,
+        device?: string,
+        runtime?: IAgentRuntime
     ): Promise<{ title: string; description: string }> {
+        this.initialize(device, runtime);
+
         if (this.device === "cloud") {
-            return this.recognizeWithOpenAI(imageUrl);
+            return this.recognizeWithOpenAI(imageUrl, runtime);
         } else {
             this.queue.push(imageUrl);
             this.processQueue();
@@ -118,7 +117,8 @@ class ImageDescriptionService {
     }
 
     private async recognizeWithOpenAI(
-        imageUrl: string
+        imageUrl: string,
+        runtime
     ): Promise<{ title: string; description: string }> {
         const isGif = imageUrl.toLowerCase().endsWith(".gif");
         let imageData: Buffer | null = null;
@@ -150,7 +150,8 @@ class ImageDescriptionService {
                 imageUrl,
                 imageData,
                 prompt,
-                isGif
+                isGif,
+                runtime
             );
             const title = text.split("\n")[0];
             const description = text.split("\n").slice(1).join("\n");
@@ -165,7 +166,8 @@ class ImageDescriptionService {
         imageUrl: string,
         imageData: Buffer,
         prompt: string,
-        isGif: boolean
+        isGif: boolean,
+        runtime: IAgentRuntime
     ): Promise<string> {
         for (let retryAttempts = 0; retryAttempts < 3; retryAttempts++) {
             try {
@@ -215,7 +217,7 @@ class ImageDescriptionService {
                         method: "POST",
                         headers: {
                             "Content-Type": "application/json",
-                            Authorization: `Bearer ${this.runtime.getSetting("OPENAI_API_KEY")}`,
+                            Authorization: `Bearer ${runtime.getSetting("OPENAI_API_KEY")}`,
                         },
                         body: body,
                     }
diff --git a/packages/core/src/services/llama.ts b/packages/plugin-node/src/services/llama.ts
similarity index 86%
rename from packages/core/src/services/llama.ts
rename to packages/plugin-node/src/services/llama.ts
index 33dd34cc106..41ca734ec79 100644
--- a/packages/core/src/services/llama.ts
+++ b/packages/plugin-node/src/services/llama.ts
@@ -1,5 +1,11 @@
-import { fileURLToPath } from "url";
-import path from "path";
+import {
+    elizaLogger,
+    IAgentRuntime,
+    ServiceType,
+} from "@ai16z/eliza/src/index.ts";
+import { Service } from "@ai16z/eliza/src/types.ts";
+import fs from "fs";
+import https from "https";
 import {
     GbnfJsonSchema,
     getLlama,
@@ -11,11 +17,112 @@ import {
     LlamaModel,
     Token,
 } from "node-llama-cpp";
-import fs from "fs";
-import https from "https";
+import path from "path";
 import si from "systeminformation";
-import { wordsToPunish } from "./wordsToPunish.ts";
-import { elizaLogger } from "../index.ts";
+import { fileURLToPath } from "url";
+
+const wordsToPunish = [
+    " please",
+    " feel",
+    " free",
+    "!",
+    "–",
+    "—",
+    "?",
+    ".",
+    ",",
+    "; ",
+    " cosmos",
+    " tapestry",
+    " tapestries",
+    " glitch",
+    " matrix",
+    " cyberspace",
+    " troll",
+    " questions",
+    " topics",
+    " discuss",
+    " basically",
+    " simulation",
+    " simulate",
+    " universe",
+    " like",
+    " debug",
+    " debugging",
+    " wild",
+    " existential",
+    " juicy",
+    " circuits",
+    " help",
+    " ask",
+    " happy",
+    " just",
+    " cosmic",
+    " cool",
+    " joke",
+    " punchline",
+    " fancy",
+    " glad",
+    " assist",
+    " algorithm",
+    " Indeed",
+    " Furthermore",
+    " However",
+    " Notably",
+    " Therefore",
+    " Additionally",
+    " conclusion",
+    " Significantly",
+    " Consequently",
+    " Thus",
+    " What",
+    " Otherwise",
+    " Moreover",
+    " Subsequently",
+    " Accordingly",
+    " Unlock",
+    " Unleash",
+    " buckle",
+    " pave",
+    " forefront",
+    " harness",
+    " harnessing",
+    " bridging",
+    " bridging",
+    " Spearhead",
+    " spearheading",
+    " Foster",
+    " foster",
+    " environmental",
+    " impact",
+    " Navigate",
+    " navigating",
+    " challenges",
+    " chaos",
+    " social",
+    " inclusion",
+    " inclusive",
+    " diversity",
+    " diverse",
+    " delve",
+    " noise",
+    " infinite",
+    " insanity",
+    " coffee",
+    " singularity",
+    " AI",
+    " digital",
+    " artificial",
+    " intelligence",
+    " consciousness",
+    " reality",
+    " metaverse",
+    " virtual",
+    " virtual reality",
+    " VR",
+    " Metaverse",
+    " humanity",
+];
 
 const __dirname = path.dirname(fileURLToPath(import.meta.url));
 
@@ -53,8 +160,7 @@ interface QueuedMessage {
     reject: (reason?: any) => void;
 }
 
-class LlamaService {
-    private static instance: LlamaService | null = null;
+export class LlamaService extends Service {
     private llama: Llama | undefined;
     private model: LlamaModel | undefined;
     private modelPath: string;
@@ -67,7 +173,10 @@ class LlamaService {
     private isProcessing: boolean = false;
     private modelInitialized: boolean = false;
 
-    private constructor() {
+    static serviceType: ServiceType = ServiceType.TEXT_GENERATION;
+
+    constructor() {
+        super();
         this.llama = undefined;
         this.model = undefined;
         this.modelUrl =
@@ -80,12 +189,7 @@ class LlamaService {
             await this.initializeModel();
         }
     }
-    public static getInstance(): LlamaService {
-        if (!LlamaService.instance) {
-            LlamaService.instance = new LlamaService();
-        }
-        return LlamaService.instance;
-    }
+
     async initializeModel() {
         try {
             await this.checkModel();
@@ -389,4 +493,4 @@ class LlamaService {
     }
 }
 
-export default LlamaService;
\ No newline at end of file
+export default LlamaService;
diff --git a/packages/core/src/services/pdf.ts b/packages/plugin-node/src/services/pdf.ts
similarity index 83%
rename from packages/core/src/services/pdf.ts
rename to packages/plugin-node/src/services/pdf.ts
index 9564b8b05f8..8126acc7d7f 100644
--- a/packages/core/src/services/pdf.ts
+++ b/packages/plugin-node/src/services/pdf.ts
@@ -1,7 +1,14 @@
+import { Service, ServiceType } from "@ai16z/eliza/src/types.ts";
 import { getDocument, PDFDocumentProxy } from "pdfjs-dist";
 import { TextItem, TextMarkedContent } from "pdfjs-dist/types/src/display/api";
 
-export class PdfService {
+export class PdfService extends Service {
+    static serviceType: ServiceType = ServiceType.PDF;
+
+    constructor() {
+        super();
+    }
+
     async convertPdfToText(pdfBuffer: Buffer): Promise<string> {
         // Convert Buffer to Uint8Array
         const uint8Array = new Uint8Array(pdfBuffer);
diff --git a/packages/core/src/services/speech.ts b/packages/plugin-node/src/services/speech.ts
similarity index 94%
rename from packages/core/src/services/speech.ts
rename to packages/plugin-node/src/services/speech.ts
index 94ae9787dc0..07dbba38463 100644
--- a/packages/core/src/services/speech.ts
+++ b/packages/plugin-node/src/services/speech.ts
@@ -1,7 +1,12 @@
 import { PassThrough, Readable } from "stream";
-import { IAgentRuntime, ISpeechService } from "../core/types.ts";
+import {
+    IAgentRuntime,
+    ISpeechService,
+    ServiceType,
+} from "@ai16z/eliza/src/types.ts";
 import { getWavHeader } from "./audioUtils.ts";
 import { synthesize } from "../vendor/vits.ts";
+import { Service } from "@ai16z/eliza/src/types.ts";
 function prependWavHeader(
     readable: Readable,
     audioLength: number,
@@ -106,7 +111,8 @@ async function textToSpeech(runtime: IAgentRuntime, text: string) {
     }
 }
 
-export class SpeechService implements ISpeechService {
+export class SpeechService extends Service implements ISpeechService {
+    static serviceType: ServiceType = ServiceType.SPEECH_GENERATION;
     async generate(runtime: IAgentRuntime, text: string): Promise<Readable> {
         // check for elevenlabs API key
         if (runtime.getSetting("ELEVENLABS_XI_API_KEY")) {
diff --git a/packages/core/src/services/transcription.ts b/packages/plugin-node/src/services/transcription.ts
similarity index 91%
rename from packages/core/src/services/transcription.ts
rename to packages/plugin-node/src/services/transcription.ts
index 84621170d62..2f8a0599832 100644
--- a/packages/core/src/services/transcription.ts
+++ b/packages/plugin-node/src/services/transcription.ts
@@ -1,14 +1,14 @@
+import { settings } from "@ai16z/eliza/src/settings.ts";
+import { Service, ServiceType } from "@ai16z/eliza/src/types.ts";
 import { exec } from "child_process";
-import EventEmitter from "events";
 import { File } from "formdata-node";
 import fs from "fs";
 import { nodewhisper } from "nodejs-whisper";
-import OpenAI from "openai";
+import OpenAI from "openai"; // todo, can probably move this to model provider or whateer
 import os from "os";
 import path from "path";
 import { fileURLToPath } from "url";
 import { promisify } from "util";
-import { IAgentRuntime } from "../core/types.ts";
 
 // const __dirname = path.dirname(new URL(import.meta.url).pathname); #compatibility issues with windows
 const __filename = fileURLToPath(import.meta.url);
@@ -16,41 +16,33 @@ const __dirname = path.dirname(__filename);
 
 const execAsync = promisify(exec);
 
-export class TranscriptionService extends EventEmitter {
-    private static instance: TranscriptionService | null = null;
+export class TranscriptionService extends Service {
+    static serviceType: ServiceType = ServiceType.TRANSCRIPTION;
     private CONTENT_CACHE_DIR: string;
     private DEBUG_AUDIO_DIR: string;
     private TARGET_SAMPLE_RATE = 16000; // Common sample rate for speech recognition
     private isCudaAvailable: boolean = false;
     private openai: OpenAI | null = null;
-    private runtime: IAgentRuntime;
 
     private queue: { audioBuffer: ArrayBuffer; resolve: Function }[] = [];
     private processing: boolean = false;
 
-    private constructor(runtime: IAgentRuntime) {
+    constructor() {
         super();
-        this.runtime = runtime;
         const rootDir = path.resolve(__dirname, "../../");
         this.CONTENT_CACHE_DIR = path.join(rootDir, "content_cache");
         this.DEBUG_AUDIO_DIR = path.join(rootDir, "debug_audio");
         this.ensureCacheDirectoryExists();
         this.ensureDebugDirectoryExists();
         // TODO: It'd be nice to handle this more gracefully, but we can do local transcription for now
-        if (this.runtime.getSetting("OPENAI_API_KEY")) {
-            this.openai = new OpenAI({
-                apiKey: this.runtime.getSetting("OPENAI_API_KEY"),
-            });
-        } else {
-            this.detectCuda();
-        }
-    }
-
-    public static getInstance(runtime: IAgentRuntime): TranscriptionService {
-        if (!TranscriptionService.instance) {
-            TranscriptionService.instance = new TranscriptionService(runtime);
-        }
-        return TranscriptionService.instance;
+        // TODO: remove the runtime from here, use it when called
+        // if (runtime.getSetting("OPENAI_API_KEY")) {
+        //     this.openai = new OpenAI({
+        //         apiKey: runtime.getSetting("OPENAI_API_KEY"),
+        //     });
+        // } else {
+        //     this.detectCuda();
+        // }
     }
 
     private ensureCacheDirectoryExists() {
@@ -81,7 +73,7 @@ export class TranscriptionService extends EventEmitter {
             }
         } else if (platform === "win32") {
             const cudaPath = path.join(
-                this.runtime.getSetting("CUDA_PATH") ||
+                settings.CUDA_PATH ||
                     "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0",
                 "bin",
                 "nvcc.exe"
diff --git a/packages/core/src/services/video.ts b/packages/plugin-node/src/services/video.ts
similarity index 90%
rename from packages/core/src/services/video.ts
rename to packages/plugin-node/src/services/video.ts
index 6c477cf2318..6e1ef6fe461 100644
--- a/packages/core/src/services/video.ts
+++ b/packages/plugin-node/src/services/video.ts
@@ -1,28 +1,25 @@
+import { Service } from "@ai16z/eliza/src/types.ts";
+import {
+    IAgentRuntime,
+    ITranscriptionService,
+    Media,
+    ServiceType,
+} from "@ai16z/eliza/src/types.ts";
+import { stringToUuid } from "@ai16z/eliza/src/uuid.ts";
 import ffmpeg from "fluent-ffmpeg";
 import fs from "fs";
 import path from "path";
 import youtubeDl from "youtube-dl-exec";
-import { IAgentRuntime, Media } from "../core/types.ts";
-import { stringToUuid } from "../core/uuid.ts";
-
-export class VideoService {
-    private static instance: VideoService | null = null;
+export class VideoService extends Service {
+    static serviceType: ServiceType = ServiceType.VIDEO;
     private CONTENT_CACHE_DIR = "./content_cache";
-    runtime: IAgentRuntime;
 
     private queue: string[] = [];
     private processing: boolean = false;
 
-    private constructor(runtime: IAgentRuntime) {
+    constructor() {
+        super();
         this.ensureCacheDirectoryExists();
-        this.runtime = runtime;
-    }
-
-    public static getInstance(runtime: IAgentRuntime): VideoService {
-        if (!VideoService.instance) {
-            VideoService.instance = new VideoService(runtime);
-        }
-        return VideoService.instance;
     }
 
     private ensureCacheDirectoryExists() {
@@ -84,9 +81,12 @@ export class VideoService {
         }
     }
 
-    public async processVideo(url: string): Promise<Media> {
+    public async processVideo(
+        url: string,
+        runtime: IAgentRuntime
+    ): Promise<Media> {
         this.queue.push(url);
-        this.processQueue();
+        this.processQueue(runtime);
 
         return new Promise((resolve, reject) => {
             const checkQueue = async () => {
@@ -95,7 +95,10 @@ export class VideoService {
                     setTimeout(checkQueue, 100);
                 } else {
                     try {
-                        const result = await this.processVideoFromUrl(url);
+                        const result = await this.processVideoFromUrl(
+                            url,
+                            runtime
+                        );
                         resolve(result);
                     } catch (error) {
                         reject(error);
@@ -106,7 +109,7 @@ export class VideoService {
         });
     }
 
-    private async processQueue(): Promise<void> {
+    private async processQueue(runtime): Promise<void> {
         if (this.processing || this.queue.length === 0) {
             return;
         }
@@ -115,13 +118,16 @@ export class VideoService {
 
         while (this.queue.length > 0) {
             const url = this.queue.shift()!;
-            await this.processVideoFromUrl(url);
+            await this.processVideoFromUrl(url, runtime);
         }
 
         this.processing = false;
     }
 
-    private async processVideoFromUrl(url: string): Promise<Media> {
+    private async processVideoFromUrl(
+        url: string,
+        runtime: IAgentRuntime
+    ): Promise<Media> {
         const videoId =
             url.match(
                 /(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/watch\?.+&v=))([^\/&?]+)/
@@ -141,7 +147,7 @@ export class VideoService {
         console.log("Fetching video info");
         const videoInfo = await this.fetchVideoInfo(url);
         console.log("Getting transcript");
-        const transcript = await this.getTranscript(url, videoInfo);
+        const transcript = await this.getTranscript(url, videoInfo, runtime);
 
         const result: Media = {
             id: videoUuid,
@@ -198,7 +204,11 @@ export class VideoService {
         }
     }
 
-    private async getTranscript(url: string, videoInfo: any): Promise<string> {
+    private async getTranscript(
+        url: string,
+        videoInfo: any,
+        runtime: IAgentRuntime
+    ): Promise<string> {
         console.log("Getting transcript");
         try {
             // Check for manual subtitles
@@ -234,7 +244,7 @@ export class VideoService {
             console.log(
                 "No captions found, falling back to audio transcription"
             );
-            return this.transcribeAudio(url);
+            return this.transcribeAudio(url, runtime);
         } catch (error) {
             console.error("Error in getTranscript:", error);
             throw error;
@@ -286,7 +296,10 @@ export class VideoService {
         return await response.text();
     }
 
-    async transcribeAudio(url: string): Promise<string> {
+    async transcribeAudio(
+        url: string,
+        runtime: IAgentRuntime
+    ): Promise<string> {
         console.log("Preparing audio for transcription...");
         const mp4FilePath = path.join(
             this.CONTENT_CACHE_DIR,
@@ -314,8 +327,9 @@ export class VideoService {
 
         console.log("Starting transcription...");
         const startTime = Date.now();
-        const transcript =
-            await this.runtime.transcriptionService.transcribe(audioBuffer);
+        const transcript = await runtime
+            .getService<ITranscriptionService>(ServiceType.TRANSCRIPTION)
+            .transcribe(audioBuffer);
         const endTime = Date.now();
         console.log(
             `Transcription completed in ${(endTime - startTime) / 1000} seconds`
diff --git a/packages/core/src/vendor/vits.ts b/packages/plugin-node/src/vendor/vits.ts
similarity index 99%
rename from packages/core/src/vendor/vits.ts
rename to packages/plugin-node/src/vendor/vits.ts
index 7a49f6cd656..37360c3e1b4 100644
--- a/packages/core/src/vendor/vits.ts
+++ b/packages/plugin-node/src/vendor/vits.ts
@@ -2,7 +2,7 @@
 // We had some compatibility issues with the package, so we brought this code in directly
 // This code is licensed under the GPL license
 
-import AlawMulaw from "alawmulaw";
+import * as AlawMulaw from "alawmulaw";
 import { spawn } from "child_process";
 import * as CldrSegmentation from "cldr-segmentation";
 import commandExists from "command-exists";
diff --git a/packages/core/src/vendor/vitsVoiceList.ts b/packages/plugin-node/src/vendor/vitsVoiceList.ts
similarity index 100%
rename from packages/core/src/vendor/vitsVoiceList.ts
rename to packages/plugin-node/src/vendor/vitsVoiceList.ts
diff --git a/packages/plugin-node/tsconfig.json b/packages/plugin-node/tsconfig.json
new file mode 100644
index 00000000000..9294a4fa6db
--- /dev/null
+++ b/packages/plugin-node/tsconfig.json
@@ -0,0 +1,11 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": ".",
+        "module": "ESNext",
+        "moduleResolution": "Bundler",
+        "types": ["node"]
+    },
+    "include": ["src"]
+}
diff --git a/packages/plugin-node/tsup.config.ts b/packages/plugin-node/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/plugin-node/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/plugin-solana/package.json b/packages/plugin-solana/package.json
new file mode 100644
index 00000000000..461db60ed96
--- /dev/null
+++ b/packages/plugin-solana/package.json
@@ -0,0 +1,24 @@
+{
+    "name": "@ai16z/plugin-solana",
+    "version": "0.0.1",
+    "main": "dist/index.js",
+    "type": "module",
+    "types": "dist/index.d.ts",
+    "dependencies": {
+        "@ai16z/eliza": "workspace:*",
+        "tsup": "^8.3.5",
+        "@solana/spl-token": "0.4.9",
+        "@solana/web3.js": "1.95.4",
+        "@coral-xyz/anchor": "^0.30.1",
+        "bignumber": "1.1.0",
+        "bignumber.js": "9.1.2",
+        "pumpdotfun-sdk": "1.3.2",
+        "node-cache": "5.1.2"
+    },
+    "scripts": {
+        "build": "tsup --format esm --dts"
+    },
+    "peerDependencies": {
+        "whatwg-url": "7.1.0"
+    }
+}
diff --git a/packages/core/src/actions/pumpfun.ts b/packages/plugin-solana/src/actions/pumpfun.ts
similarity index 99%
rename from packages/core/src/actions/pumpfun.ts
rename to packages/plugin-solana/src/actions/pumpfun.ts
index 48ef541c8cd..a6453cbc631 100644
--- a/packages/core/src/actions/pumpfun.ts
+++ b/packages/plugin-solana/src/actions/pumpfun.ts
@@ -9,7 +9,7 @@ import {
 } from "pumpdotfun-sdk";
 
 import { getAssociatedTokenAddressSync } from "@solana/spl-token";
-import settings from "../core/settings.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 
 import {
     ActionExample,
@@ -17,7 +17,7 @@ import {
     IAgentRuntime,
     Memory,
     type Action,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 
 export interface CreateAndBuyContent extends Content {
     deployerPrivateKey: string;
diff --git a/packages/core/src/actions/swap.ts b/packages/plugin-solana/src/actions/swap.ts
similarity index 96%
rename from packages/core/src/actions/swap.ts
rename to packages/plugin-solana/src/actions/swap.ts
index 463ed449e2d..e6528ba238f 100644
--- a/packages/core/src/actions/swap.ts
+++ b/packages/plugin-solana/src/actions/swap.ts
@@ -6,12 +6,11 @@ import {
     VersionedTransaction,
 } from "@solana/web3.js";
 import BigNumber from "bignumber.js";
-import fetch from "cross-fetch";
 import { v4 as uuidv4 } from "uuid";
-import { TrustScoreDatabase } from "../adapters/trustScoreDatabase.ts";
-import { composeContext } from "../core/context.ts";
-import { generateObject } from "../core/generation.ts";
-import settings from "../core/settings.ts";
+import { TrustScoreDatabase } from "@ai16z/eliza/src/adapters/trustScoreDatabase.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateObject } from "@ai16z/eliza/src/generation.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 import {
     ActionExample,
     HandlerCallback,
@@ -20,10 +19,13 @@ import {
     ModelClass,
     State,
     type Action,
-} from "../core/types.ts";
-import { TokenProvider } from "../providers/token.ts";
-import { TrustScoreProvider } from "../providers/trustScoreProvider.ts";
-import { walletProvider, WalletProvider } from "../providers/wallet.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { TokenProvider } from "@ai16z/eliza/src/providers/token.ts";
+import { TrustScoreProvider } from "@ai16z/eliza/src/providers/trustScoreProvider.ts";
+import {
+    walletProvider,
+    WalletProvider,
+} from "@ai16z/eliza/src/providers/wallet.ts";
 import { getTokenDecimals } from "./swapUtils.ts";
 
 async function swapToken(
diff --git a/packages/core/src/actions/swapDao.ts b/packages/plugin-solana/src/actions/swapDao.ts
similarity index 98%
rename from packages/core/src/actions/swapDao.ts
rename to packages/plugin-solana/src/actions/swapDao.ts
index 18d58187b5d..a9ebd8c3463 100644
--- a/packages/core/src/actions/swapDao.ts
+++ b/packages/plugin-solana/src/actions/swapDao.ts
@@ -1,11 +1,10 @@
-import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js";
-import fetch from "cross-fetch";
 import {
     ActionExample,
     IAgentRuntime,
     Memory,
     type Action,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
+import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js";
 import { getQuote } from "./swapUtils.ts";
 
 async function invokeSwapDao(
@@ -49,7 +48,7 @@ async function promptConfirmation(): Promise<boolean> {
     return confirmSwap;
 }
 
-export const executeSwap: Action = {
+export const executeSwapForDAO: Action = {
     name: "EXECUTE_SWAP_DAO",
     similes: ["SWAP_TOKENS_DAO", "TOKEN_SWAP_DAO"],
     validate: async (runtime: IAgentRuntime, message: Memory) => {
diff --git a/packages/core/src/actions/swapUtils.ts b/packages/plugin-solana/src/actions/swapUtils.ts
similarity index 99%
rename from packages/core/src/actions/swapUtils.ts
rename to packages/plugin-solana/src/actions/swapUtils.ts
index 1a583eb8410..08924e11488 100644
--- a/packages/core/src/actions/swapUtils.ts
+++ b/packages/plugin-solana/src/actions/swapUtils.ts
@@ -9,7 +9,7 @@ import {
     TokenAmount,
     VersionedTransaction,
 } from "@solana/web3.js";
-import settings from "../core/settings.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 
 const solAddress = settings.SOL_ADDRESS;
 const SLIPPAGE = settings.SLIPPAGE;
diff --git a/packages/core/src/actions/takeOrder.ts b/packages/plugin-solana/src/actions/takeOrder.ts
similarity index 94%
rename from packages/core/src/actions/takeOrder.ts
rename to packages/plugin-solana/src/actions/takeOrder.ts
index 6f0f9f29a0b..c7a09f7e378 100644
--- a/packages/core/src/actions/takeOrder.ts
+++ b/packages/plugin-solana/src/actions/takeOrder.ts
@@ -5,11 +5,11 @@ import {
     Content,
     ActionExample,
     ModelClass,
-} from "../core/types.ts";
+} from "@ai16z/eliza/src/types.ts";
 import * as fs from "fs";
-import settings from "../core/settings.ts";
-import { composeContext } from "../core/context.ts";
-import { generateText } from "../core/generation.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
+import { composeContext } from "@ai16z/eliza/src/context.ts";
+import { generateText } from "@ai16z/eliza/src/generation.ts";
 
 interface Order {
     userId: string;
diff --git a/packages/core/src/adapters/trustScoreDatabase.ts b/packages/plugin-solana/src/adapters/trustScoreDatabase.ts
similarity index 99%
rename from packages/core/src/adapters/trustScoreDatabase.ts
rename to packages/plugin-solana/src/adapters/trustScoreDatabase.ts
index 5ef6231f5e0..d5cc1f47c17 100644
--- a/packages/core/src/adapters/trustScoreDatabase.ts
+++ b/packages/plugin-solana/src/adapters/trustScoreDatabase.ts
@@ -2,7 +2,7 @@
 
 import { Database } from "better-sqlite3";
 import { v4 as uuidv4 } from "uuid";
-import { load } from "./sqlite/sqlite_vec.ts";
+import { load } from "@ai16z/eliza/src/adapters/sqlite/sqlite_vec.ts";
 
 // Define interfaces
 export interface Recommender {
diff --git a/packages/core/src/utils/bignumber.ts b/packages/plugin-solana/src/bignumber.ts
similarity index 100%
rename from packages/core/src/utils/bignumber.ts
rename to packages/plugin-solana/src/bignumber.ts
diff --git a/packages/plugin-solana/src/index.ts b/packages/plugin-solana/src/index.ts
new file mode 100644
index 00000000000..f78ec761c2d
--- /dev/null
+++ b/packages/plugin-solana/src/index.ts
@@ -0,0 +1,21 @@
+import { Plugin } from "@ai16z/eliza";
+import { executeSwap } from "./actions/swap";
+// import take_order from "./actions/takeOrder";
+// import pumpfun from "./actions/pumpfun";
+// import { executeSwapForDAO } from "./actions/swapDao";
+import { walletProvider } from "./providers/wallet";
+
+export const solanaPlugin: Plugin = {
+    name: "solana",
+    description: "Solana Plugin for Eliza",
+    actions: [
+        executeSwap,
+        // pumpfun,
+        // executeSwapForDAO,
+        // take_order,
+    ],
+    evaluators: [],
+    providers: [walletProvider],
+};
+
+export default solanaPlugin;
diff --git a/packages/core/src/providers/balances.ts b/packages/plugin-solana/src/providers/balances.ts
similarity index 96%
rename from packages/core/src/providers/balances.ts
rename to packages/plugin-solana/src/providers/balances.ts
index 10aa2f09bf1..4e28a31f7f1 100644
--- a/packages/core/src/providers/balances.ts
+++ b/packages/plugin-solana/src/providers/balances.ts
@@ -1,10 +1,6 @@
 // TokenBalanceProvider.ts
 import { Connection, PublicKey } from "@solana/web3.js";
-import {
-    getTokenBalances,
-    getTokenPriceInSol,
-} from "../services/tokenUtils.ts";
-import fetch from "cross-fetch";
+import { getTokenBalances, getTokenPriceInSol } from "./tokenUtils.ts";
 
 interface Item {
     name: string;
diff --git a/packages/core/src/providers/orderBook.ts b/packages/plugin-solana/src/providers/orderBook.ts
similarity index 89%
rename from packages/core/src/providers/orderBook.ts
rename to packages/plugin-solana/src/providers/orderBook.ts
index 6fa49a753cd..07870368686 100644
--- a/packages/core/src/providers/orderBook.ts
+++ b/packages/plugin-solana/src/providers/orderBook.ts
@@ -1,6 +1,11 @@
-import { IAgentRuntime, Memory, Provider, State } from "../core/types.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 import * as fs from "fs";
-import settings from "../core/settings.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
 
 interface Order {
     userId: string;
diff --git a/packages/core/src/providers/token.ts b/packages/plugin-solana/src/providers/token.ts
similarity index 98%
rename from packages/core/src/providers/token.ts
rename to packages/plugin-solana/src/providers/token.ts
index c6ee5685c8a..76a76dd19fe 100644
--- a/packages/core/src/providers/token.ts
+++ b/packages/plugin-solana/src/providers/token.ts
@@ -1,18 +1,22 @@
-import { Connection } from "@solana/web3.js";
-// import fetch from "cross-fetch";
-import { IAgentRuntime, Memory, Provider, State } from "../core/types.ts";
-import settings from "../core/settings.ts";
-import { toBN } from "../utils/bignumber.js";
+import settings from "@ai16z/eliza/src/settings.ts";
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 import {
-    ProcessedTokenData,
-    TokenSecurityData,
-    TokenTradeData,
     DexScreenerData,
     //   DexScreenerPair,
     HolderData,
-} from "../types/token.ts";
-import NodeCache from "node-cache";
+    ProcessedTokenData,
+    TokenSecurityData,
+    TokenTradeData,
+} from "@ai16z/eliza/src/types/token.ts";
+import { toBN } from "@ai16z/eliza/src/utils/bignumber.ts";
+import { Connection } from "@solana/web3.js";
 import * as fs from "fs";
+import NodeCache from "node-cache";
 import * as path from "path";
 
 const PROVIDER_CONFIG = {
@@ -43,15 +47,14 @@ export class TokenProvider {
         const __dirname = path.resolve();
 
         // Find the 'eliza' folder in the filepath and adjust the cache directory path
-        const elizaIndex = __dirname.indexOf('eliza');
+        const elizaIndex = __dirname.indexOf("eliza");
         if (elizaIndex !== -1) {
             const pathToEliza = __dirname.slice(0, elizaIndex + 5); // include 'eliza'
-            this.cacheDir = path.join(pathToEliza, 'cache');
+            this.cacheDir = path.join(pathToEliza, "cache");
         } else {
-            this.cacheDir = path.join(__dirname, 'cache');
+            this.cacheDir = path.join(__dirname, "cache");
         }
 
-
         this.cacheDir = path.join(__dirname, "cache");
         if (!fs.existsSync(this.cacheDir)) {
             fs.mkdirSync(this.cacheDir);
diff --git a/packages/core/src/services/tokenUtils.ts b/packages/plugin-solana/src/providers/tokenUtils.ts
similarity index 100%
rename from packages/core/src/services/tokenUtils.ts
rename to packages/plugin-solana/src/providers/tokenUtils.ts
diff --git a/packages/core/src/providers/trustScoreProvider.ts b/packages/plugin-solana/src/providers/trustScoreProvider.ts
similarity index 98%
rename from packages/core/src/providers/trustScoreProvider.ts
rename to packages/plugin-solana/src/providers/trustScoreProvider.ts
index a3828b2ee38..e92a846e633 100644
--- a/packages/core/src/providers/trustScoreProvider.ts
+++ b/packages/plugin-solana/src/providers/trustScoreProvider.ts
@@ -5,7 +5,7 @@ import {
     // DexScreenerData,
     // DexScreenerPair,
     // HolderData,
-} from "../types/token.ts";
+} from "@ai16z/eliza/src/types/token.ts";
 import { Connection, PublicKey } from "@solana/web3.js";
 import { getAssociatedTokenAddress } from "@solana/spl-token";
 import { TokenProvider } from "./token.ts";
@@ -15,9 +15,9 @@ import {
     RecommenderMetrics,
     TokenPerformance,
     TradePerformance,
-} from "../adapters/trustScoreDatabase.ts";
-import settings from "../core/settings.ts";
-import { IAgentRuntime } from "../core/types.ts";
+} from "@ai16z/eliza/src/adapters/trustScoreDatabase.ts";
+import settings from "@ai16z/eliza/src/settings.ts";
+import { IAgentRuntime } from "@ai16z/eliza/src/types.ts";
 
 const Wallet = settings.MAIN_WALLET_ADDRESS;
 interface TradeData {
diff --git a/packages/core/src/providers/wallet.ts b/packages/plugin-solana/src/providers/wallet.ts
similarity index 98%
rename from packages/core/src/providers/wallet.ts
rename to packages/plugin-solana/src/providers/wallet.ts
index 3c9114c4009..5f38e3b8361 100644
--- a/packages/core/src/providers/wallet.ts
+++ b/packages/plugin-solana/src/providers/wallet.ts
@@ -1,6 +1,10 @@
+import {
+    IAgentRuntime,
+    Memory,
+    Provider,
+    State,
+} from "@ai16z/eliza/src/types.ts";
 import { Connection, PublicKey } from "@solana/web3.js";
-import fetch from "cross-fetch";
-import { IAgentRuntime, Memory, Provider, State } from "../core/types.ts";
 import BigNumber from "bignumber.js";
 
 // Provider configuration
diff --git a/packages/core/src/types/token.ts b/packages/plugin-solana/src/types/token.ts
similarity index 100%
rename from packages/core/src/types/token.ts
rename to packages/plugin-solana/src/types/token.ts
diff --git a/packages/plugin-solana/tsconfig.json b/packages/plugin-solana/tsconfig.json
new file mode 100644
index 00000000000..eaa78145aa3
--- /dev/null
+++ b/packages/plugin-solana/tsconfig.json
@@ -0,0 +1,8 @@
+{
+    "extends": "../../tsconfig.json",
+    "compilerOptions": {
+        "outDir": "dist",
+        "rootDir": "./src"
+    },
+    "include": ["src"]
+}
diff --git a/packages/plugin-solana/tsup.config.ts b/packages/plugin-solana/tsup.config.ts
new file mode 100644
index 00000000000..e42bf4efeae
--- /dev/null
+++ b/packages/plugin-solana/tsup.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+    entry: ["src/index.ts"],
+    outDir: "dist",
+    sourcemap: true,
+    clean: true,
+    format: ["esm"], // Ensure you're targeting CommonJS
+    external: [
+        "dotenv", // Externalize dotenv to prevent bundling
+        "fs", // Externalize fs to use Node.js built-in module
+        "path", // Externalize other built-ins if necessary
+        "@reflink/reflink",
+        "@node-llama-cpp",
+        "https",
+        "http",
+        "agentkeepalive",
+        // Add other modules you want to externalize
+    ],
+});
diff --git a/packages/supabase/.gitignore b/packages/supabase/.gitignore
deleted file mode 100644
index a3ad88055b7..00000000000
--- a/packages/supabase/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Supabase
-.branches
-.temp
-.env
diff --git a/packages/supabase/README.md b/packages/supabase/README.md
deleted file mode 100644
index 82ed22ff14c..00000000000
--- a/packages/supabase/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Postgres Schema
-
-Install CLI https://www.timescale.com/blog/how-to-install-psql-on-mac-ubuntu-debian-windows/
-
-`psql <connectionString> -f ./postgres-schema.sql`
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2221456019a..8ac65575ff8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -98,27 +98,236 @@ importers:
         specifier: ^0.26.11
         version: 0.26.11(typescript@5.6.3)
       typedoc-plugin-markdown:
-        specifier: 4.2.9
+        specifier: ^4.2.9
         version: 4.2.9(typedoc@0.26.11(typescript@5.6.3))
 
+  packages/adapter-postgres:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      pg:
+        specifier: ^8.13.1
+        version: 8.13.1
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/adapter-sqlite:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@types/better-sqlite3':
+        specifier: 7.6.11
+        version: 7.6.11
+      better-sqlite3:
+        specifier: 11.5.0
+        version: 11.5.0
+      sqlite-vec:
+        specifier: 0.1.4-alpha.2
+        version: 0.1.4-alpha.2
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/adapter-sqljs:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@types/sql.js':
+        specifier: 1.4.9
+        version: 1.4.9
+      sql.js:
+        specifier: 1.12.0
+        version: 1.12.0
+      uuid:
+        specifier: 11.0.2
+        version: 11.0.2
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/adapter-supabase:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@supabase/supabase-js':
+        specifier: 2.46.1
+        version: 2.46.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
   packages/agent:
     dependencies:
-      '@eliza/core':
+      '@ai16z/adapter-postgres':
+        specifier: workspace:*
+        version: link:../adapter-postgres
+      '@ai16z/adapter-sqlite':
+        specifier: workspace:*
+        version: link:../adapter-sqlite
+      '@ai16z/client-direct':
+        specifier: workspace:*
+        version: link:../client-direct
+      '@ai16z/client-discord':
+        specifier: workspace:*
+        version: link:../client-discord
+      '@ai16z/client-telegram':
+        specifier: workspace:*
+        version: link:../client-telegram
+      '@ai16z/client-twitter':
+        specifier: workspace:*
+        version: link:../client-twitter
+      '@ai16z/eliza':
         specifier: workspace:*
         version: link:../core
-      '@eliza/plugin-image-generation':
+      '@ai16z/plugin-bootstrap':
+        specifier: workspace:*
+        version: link:../plugin-bootstrap
+      '@ai16z/plugin-image-generation':
         specifier: workspace:*
         version: link:../plugin-image-generation
+      '@ai16z/plugin-node':
+        specifier: workspace:*
+        version: link:../plugin-node
+      '@ai16z/plugin-solana':
+        specifier: workspace:*
+        version: link:../plugin-solana
       readline:
         specifier: ^1.3.0
         version: 1.3.0
-      tsup:
-        specifier: ^8.3.5
-        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(typescript@5.6.3)(yaml@2.6.0)
+      yargs:
+        specifier: 17.7.2
+        version: 17.7.2
     devDependencies:
       ts-node:
         specifier: 10.9.2
         version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3)
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/client-direct:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@ai16z/plugin-image-generation':
+        specifier: workspace:*
+        version: link:../plugin-image-generation
+      '@types/body-parser':
+        specifier: 1.19.5
+        version: 1.19.5
+      '@types/cors':
+        specifier: 2.8.17
+        version: 2.8.17
+      '@types/express':
+        specifier: 5.0.0
+        version: 5.0.0
+      body-parser:
+        specifier: 1.20.3
+        version: 1.20.3
+      cors:
+        specifier: 2.8.5
+        version: 2.8.5
+      multer:
+        specifier: 1.4.5-lts.1
+        version: 1.4.5-lts.1
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/client-discord:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@ai16z/plugin-node':
+        specifier: workspace:*
+        version: link:../plugin-node
+      '@discordjs/opus':
+        specifier: github:discordjs/opus
+        version: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13)
+      '@discordjs/rest':
+        specifier: 2.4.0
+        version: 2.4.0
+      '@discordjs/voice':
+        specifier: 0.17.0
+        version: 0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10)
+      discord.js:
+        specifier: 14.16.3
+        version: 14.16.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+      libsodium-wrappers:
+        specifier: 0.7.15
+        version: 0.7.15
+      prism-media:
+        specifier: 1.3.5
+        version: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/client-telegram:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@ai16z/plugin-node':
+        specifier: workspace:*
+        version: link:../plugin-node
+      '@telegraf/types':
+        specifier: 7.1.0
+        version: 7.1.0
+      telegraf:
+        specifier: 4.16.3
+        version: 4.16.3(encoding@0.1.13)
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+
+  packages/client-twitter:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      agent-twitter-client:
+        specifier: 0.0.13
+        version: 0.0.13
+      glob:
+        specifier: 11.0.0
+        version: 11.0.0
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+    devDependencies:
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
 
   packages/core:
     dependencies:
@@ -135,26 +344,180 @@ importers:
         specifier: ^0.0.3
         version: 0.0.3(zod@3.23.8)
       '@ai-sdk/openai':
-        specifier: ^0.0.70
-        version: 0.0.70(zod@3.23.8)
+        specifier: 1.0.0-canary.3
+        version: 1.0.0-canary.3(zod@3.23.8)
       '@anthropic-ai/sdk':
         specifier: ^0.30.1
         version: 0.30.1(encoding@0.1.13)
+      '@types/uuid':
+        specifier: ^10.0.0
+        version: 10.0.0
+      ai:
+        specifier: ^3.4.23
+        version: 3.4.33(openai@4.69.0(encoding@0.1.13)(zod@3.23.8))(react@18.2.0)(sswr@2.1.0(svelte@5.1.12))(svelte@5.1.12)(vue@3.5.12(typescript@5.6.3))(zod@3.23.8)
+      anthropic-vertex-ai:
+        specifier: ^1.0.0
+        version: 1.0.0(encoding@0.1.13)(zod@3.23.8)
+      fastembed:
+        specifier: ^1.14.1
+        version: 1.14.1
+      gaxios:
+        specifier: 6.7.1
+        version: 6.7.1(encoding@0.1.13)
+      glob:
+        specifier: 11.0.0
+        version: 11.0.0
+      js-sha1:
+        specifier: 0.7.0
+        version: 0.7.0
+      ollama-ai-provider:
+        specifier: ^0.16.1
+        version: 0.16.1(zod@3.23.8)
+      openai:
+        specifier: 4.69.0
+        version: 4.69.0(encoding@0.1.13)(zod@3.23.8)
+      tiktoken:
+        specifier: 1.0.17
+        version: 1.0.17
+      tinyld:
+        specifier: 1.3.4
+        version: 1.3.4
+      together-ai:
+        specifier: ^0.7.0
+        version: 0.7.0(encoding@0.1.13)
+      unique-names-generator:
+        specifier: 4.7.1
+        version: 4.7.1
+      uuid:
+        specifier: 11.0.2
+        version: 11.0.2
+    devDependencies:
+      '@eslint/js':
+        specifier: ^9.13.0
+        version: 9.14.0
+      '@rollup/plugin-commonjs':
+        specifier: 25.0.8
+        version: 25.0.8(rollup@2.79.2)
+      '@rollup/plugin-json':
+        specifier: 6.1.0
+        version: 6.1.0(rollup@2.79.2)
+      '@rollup/plugin-node-resolve':
+        specifier: 15.3.0
+        version: 15.3.0(rollup@2.79.2)
+      '@rollup/plugin-replace':
+        specifier: 5.0.7
+        version: 5.0.7(rollup@2.79.2)
+      '@rollup/plugin-terser':
+        specifier: 0.1.0
+        version: 0.1.0(rollup@2.79.2)
+      '@rollup/plugin-typescript':
+        specifier: 11.1.6
+        version: 11.1.6(rollup@2.79.2)(tslib@2.8.0)(typescript@5.6.3)
+      '@types/fluent-ffmpeg':
+        specifier: 2.1.27
+        version: 2.1.27
+      '@types/jest':
+        specifier: 29.5.14
+        version: 29.5.14
+      '@types/node':
+        specifier: 22.8.4
+        version: 22.8.4
+      '@types/pdfjs-dist':
+        specifier: ^2.10.378
+        version: 2.10.378(encoding@0.1.13)
+      '@types/tar':
+        specifier: 6.1.13
+        version: 6.1.13
+      '@types/wav-encoder':
+        specifier: 1.3.3
+        version: 1.3.3
+      '@typescript-eslint/eslint-plugin':
+        specifier: 8.12.2
+        version: 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)
+      '@typescript-eslint/parser':
+        specifier: 8.12.2
+        version: 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)
+      dotenv:
+        specifier: 16.4.5
+        version: 16.4.5
+      eslint:
+        specifier: 9.13.0
+        version: 9.13.0(jiti@1.21.6)
+      eslint-config-prettier:
+        specifier: 9.1.0
+        version: 9.1.0(eslint@9.13.0(jiti@1.21.6))
+      eslint-plugin-prettier:
+        specifier: 5.2.1
+        version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))(prettier@3.3.3)
+      jest:
+        specifier: 29.7.0
+        version: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3))
+      lint-staged:
+        specifier: 15.2.10
+        version: 15.2.10
+      nodemon:
+        specifier: 3.1.7
+        version: 3.1.7
+      pm2:
+        specifier: 5.4.2
+        version: 5.4.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+      prettier:
+        specifier: 3.3.3
+        version: 3.3.3
+      rimraf:
+        specifier: 6.0.1
+        version: 6.0.1
+      rollup:
+        specifier: 2.79.2
+        version: 2.79.2
+      ts-jest:
+        specifier: 29.2.5
+        version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.0)(jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3)
+      ts-node:
+        specifier: 10.9.2
+        version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3)
+      tslib:
+        specifier: 2.8.0
+        version: 2.8.0
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+      typescript:
+        specifier: 5.6.3
+        version: 5.6.3
+
+  packages/plugin-bootstrap:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+
+  packages/plugin-image-generation:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+
+  packages/plugin-node:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
       '@cliqz/adblocker-playwright':
         specifier: 1.34.0
         version: 1.34.0(playwright@1.48.2)
-      '@coral-xyz/anchor':
-        specifier: ^0.30.1
-        version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
-      '@discordjs/opus':
-        specifier: github:discordjs/opus
-        version: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13)
-      '@discordjs/rest':
-        specifier: 2.4.0
-        version: 2.4.0
-      '@discordjs/voice':
-        specifier: 0.17.0
-        version: 0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10)
       '@echogarden/espeak-ng-emscripten':
         specifier: 0.3.0
         version: 0.3.0
@@ -170,57 +533,18 @@ importers:
       '@opendocsg/pdf2md':
         specifier: 0.1.31
         version: 0.1.31(encoding@0.1.13)
-      '@solana/spl-token':
-        specifier: 0.4.9
-        version: 0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)
-      '@solana/web3.js':
-        specifier: 1.95.4
-        version: 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
-      '@supabase/supabase-js':
-        specifier: 2.46.1
-        version: 2.46.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
-      '@telegraf/types':
-        specifier: 7.1.0
-        version: 7.1.0
-      '@types/body-parser':
-        specifier: 1.19.5
-        version: 1.19.5
-      '@types/cors':
-        specifier: 2.8.17
-        version: 2.8.17
-      '@types/express':
-        specifier: 5.0.0
-        version: 5.0.0
       '@types/uuid':
         specifier: ^10.0.0
         version: 10.0.0
-      agent-twitter-client:
-        specifier: 0.0.13
-        version: 0.0.13
-      ai:
-        specifier: ^3.4.23
-        version: 3.4.33(openai@4.69.0(encoding@0.1.13)(zod@3.23.8))(react@18.2.0)(sswr@2.1.0(svelte@5.1.12))(svelte@5.1.12)(vue@3.5.12(typescript@5.6.3))(zod@3.23.8)
       alawmulaw:
         specifier: 6.0.0
         version: 6.0.0
-      ansi-colors:
-        specifier: 4.1.3
-        version: 4.1.3
-      anthropic-vertex-ai:
-        specifier: ^1.0.0
-        version: 1.0.0(encoding@0.1.13)(zod@3.23.8)
-      better-sqlite3:
-        specifier: 11.5.0
-        version: 11.5.0
       bignumber:
         specifier: 1.1.0
         version: 1.1.0
       bignumber.js:
         specifier: 9.1.2
         version: 9.1.2
-      body-parser:
-        specifier: 1.20.3
-        version: 1.20.3
       capsolver-npm:
         specifier: 2.0.2
         version: 2.0.2
@@ -230,33 +554,15 @@ importers:
       command-exists:
         specifier: 1.2.9
         version: 1.2.9
-      commander:
-        specifier: 12.1.0
-        version: 12.1.0
-      cors:
-        specifier: 2.8.5
-        version: 2.8.5
-      cross-fetch:
-        specifier: 4.0.0
-        version: 4.0.0(encoding@0.1.13)
       csv-writer:
         specifier: 1.6.0
         version: 1.6.0
-      discord.js:
-        specifier: 14.16.3
-        version: 14.16.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)
       espeak-ng:
         specifier: 1.0.2
         version: 1.0.2
-      express:
-        specifier: 4.21.1
-        version: 4.21.1
       ffmpeg-static:
         specifier: 5.2.0
         version: 5.2.0
-      figlet:
-        specifier: 1.8.0
-        version: 1.8.0
       fluent-ffmpeg:
         specifier: 2.1.3
         version: 2.1.3
@@ -287,18 +593,9 @@ importers:
       import-meta-resolve:
         specifier: 4.1.0
         version: 4.1.0
-      install:
-        specifier: ^0.13.0
-        version: 0.13.0
       jieba-wasm:
         specifier: 2.2.0
         version: 2.2.0
-      js-sha1:
-        specifier: 0.7.0
-        version: 0.7.0
-      js-yaml:
-        specifier: ^4.1.0
-        version: 4.1.0
       json5:
         specifier: 2.2.3
         version: 2.2.3
@@ -317,54 +614,30 @@ importers:
       node-llama-cpp:
         specifier: 3.1.1
         version: 3.1.1(typescript@5.6.3)
-      node-wav:
-        specifier: 0.0.2
-        version: 0.0.2
       nodejs-whisper:
         specifier: 0.1.18
         version: 0.1.18
-      nodemon:
-        specifier: 3.1.7
-        version: 3.1.7
-      ollama-ai-provider:
-        specifier: ^0.16.1
-        version: 0.16.1(zod@3.23.8)
       onnxruntime-node:
         specifier: ^1.20.0
         version: 1.20.0
-      openai:
-        specifier: 4.69.0
-        version: 4.69.0(encoding@0.1.13)(zod@3.23.8)
       pdfjs-dist:
         specifier: 4.7.76
         version: 4.7.76(encoding@0.1.13)
-      pg:
-        specifier: ^8.13.1
-        version: 8.13.1
       playwright:
         specifier: 1.48.2
         version: 1.48.2
       pm2:
         specifier: 5.4.2
         version: 5.4.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)
-      prism-media:
-        specifier: 1.3.5
-        version: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0)
-      pumpdotfun-sdk:
-        specifier: 1.3.2
-        version: 1.3.2(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@2.79.2)(typescript@5.6.3)(utf-8-validate@5.0.10)
       puppeteer-extra:
         specifier: 3.3.6
         version: 3.3.6(puppeteer-core@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(puppeteer@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))
       puppeteer-extra-plugin-capsolver:
         specifier: 2.0.1
         version: 2.0.1(bufferutil@4.0.8)(encoding@0.1.13)(puppeteer-core@19.11.1(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10))(typescript@5.6.3)(utf-8-validate@5.0.10)
-      sql.js:
-        specifier: 1.12.0
-        version: 1.12.0
-      sqlite-vec:
-        specifier: 0.1.4-alpha.2
-        version: 0.1.4-alpha.2
+      sharp:
+        specifier: ^0.33.5
+        version: 0.33.5
       srt:
         specifier: 0.0.3
         version: 0.0.3
@@ -374,24 +647,9 @@ importers:
       tar:
         specifier: 7.4.3
         version: 7.4.3
-      telegraf:
-        specifier: 4.16.3
-        version: 4.16.3(encoding@0.1.13)
-      tiktoken:
-        specifier: 1.0.17
-        version: 1.0.17
       tinyld:
         specifier: 1.3.4
         version: 1.3.4
-      together-ai:
-        specifier: ^0.7.0
-        version: 0.7.0(encoding@0.1.13)
-      tsup:
-        specifier: ^8.3.5
-        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(typescript@5.6.3)(yaml@2.6.0)
-      unique-names-generator:
-        specifier: 4.7.1
-        version: 4.7.1
       uuid:
         specifier: 11.0.2
         version: 11.0.2
@@ -404,12 +662,9 @@ importers:
       wavefile:
         specifier: 11.0.0
         version: 11.0.0
-      whisper-turbo:
-        specifier: 0.11.0
-        version: 0.11.0
-      ws:
-        specifier: 8.18.0
-        version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
       yargs:
         specifier: 17.7.2
         version: 17.7.2
@@ -417,111 +672,66 @@ importers:
         specifier: 3.0.10
         version: 3.0.10
     devDependencies:
-      '@eslint/js':
-        specifier: ^9.13.0
-        version: 9.14.0
-      '@rollup/plugin-commonjs':
-        specifier: 25.0.8
-        version: 25.0.8(rollup@2.79.2)
-      '@rollup/plugin-json':
-        specifier: 6.1.0
-        version: 6.1.0(rollup@2.79.2)
-      '@rollup/plugin-node-resolve':
-        specifier: 15.3.0
-        version: 15.3.0(rollup@2.79.2)
-      '@rollup/plugin-replace':
-        specifier: 5.0.7
-        version: 5.0.7(rollup@2.79.2)
-      '@rollup/plugin-terser':
-        specifier: 0.1.0
-        version: 0.1.0(rollup@2.79.2)
-      '@rollup/plugin-typescript':
-        specifier: 11.1.6
-        version: 11.1.6(rollup@2.79.2)(tslib@2.8.0)(typescript@5.6.3)
-      '@types/better-sqlite3':
-        specifier: 7.6.11
-        version: 7.6.11
-      '@types/fluent-ffmpeg':
-        specifier: 2.1.27
-        version: 2.1.27
-      '@types/jest':
-        specifier: 29.5.14
-        version: 29.5.14
-      '@types/node':
-        specifier: 22.8.4
-        version: 22.8.4
-      '@types/pdfjs-dist':
-        specifier: ^2.10.378
-        version: 2.10.378(encoding@0.1.13)
-      '@types/sql.js':
-        specifier: 1.4.9
-        version: 1.4.9
-      '@types/tar':
-        specifier: 6.1.13
-        version: 6.1.13
-      '@types/wav-encoder':
-        specifier: 1.3.3
-        version: 1.3.3
-      '@typescript-eslint/eslint-plugin':
-        specifier: 8.12.2
-        version: 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)
-      '@typescript-eslint/parser':
-        specifier: 8.12.2
-        version: 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)
-      dotenv:
-        specifier: 16.4.5
-        version: 16.4.5
-      eslint:
-        specifier: 9.13.0
-        version: 9.13.0(jiti@1.21.6)
-      eslint-config-prettier:
-        specifier: 9.1.0
-        version: 9.1.0(eslint@9.13.0(jiti@1.21.6))
-      eslint-plugin-prettier:
-        specifier: 5.2.1
-        version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))(prettier@3.3.3)
-      itty-router:
-        specifier: 5.0.18
-        version: 5.0.18
-      jest:
-        specifier: 29.7.0
-        version: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3))
-      lint-staged:
-        specifier: 15.2.10
-        version: 15.2.10
-      prettier:
-        specifier: 3.3.3
-        version: 3.3.3
-      rimraf:
-        specifier: 6.0.1
-        version: 6.0.1
-      rollup:
-        specifier: 2.79.2
-        version: 2.79.2
-      ts-jest:
-        specifier: 29.2.5
-        version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.17.19)(jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3)
-      ts-node:
-        specifier: 10.9.2
-        version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3)
-      tslib:
-        specifier: 2.8.0
-        version: 2.8.0
-      typescript:
-        specifier: 5.6.3
-        version: 5.6.3
-      wrangler:
-        specifier: 3.84.0
-        version: 3.84.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
 
-  packages/plugin-image-generation:
+  packages/plugin-solana:
+    dependencies:
+      '@ai16z/eliza':
+        specifier: workspace:*
+        version: link:../core
+      '@coral-xyz/anchor':
+        specifier: ^0.30.1
+        version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
+      '@solana/spl-token':
+        specifier: 0.4.9
+        version: 0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)
+      '@solana/web3.js':
+        specifier: 1.95.4
+        version: 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
+      bignumber:
+        specifier: 1.1.0
+        version: 1.1.0
+      bignumber.js:
+        specifier: 9.1.2
+        version: 9.1.2
+      node-cache:
+        specifier: 5.1.2
+        version: 5.1.2
+      pumpdotfun-sdk:
+        specifier: 1.3.2
+        version: 1.3.2(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.24.4)(typescript@5.6.3)(utf-8-validate@5.0.10)
+      tsup:
+        specifier: ^8.3.5
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
+      whatwg-url:
+        specifier: 7.1.0
+        version: 7.1.0
+
+  packages/test:
     dependencies:
-      '@eliza/core':
+      '@ai16z/adapter-sqlite':
+        specifier: workspace:*
+        version: link:../adapter-sqlite
+      '@ai16z/adapter-sqljs':
+        specifier: workspace:*
+        version: link:../adapter-sqljs
+      '@ai16z/adapter-supabase':
+        specifier: workspace:*
+        version: link:../adapter-supabase
+      '@ai16z/eliza':
         specifier: workspace:*
         version: link:../core
+      '@ai16z/plugin-bootstrap':
+        specifier: workspace:*
+        version: link:../plugin-bootstrap
+      '@ai16z/plugin-node':
+        specifier: workspace:*
+        version: link:../plugin-node
       tsup:
         specifier: ^8.3.5
-        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(typescript@5.6.3)(yaml@2.6.0)
+        version: 8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0)
       whatwg-url:
         specifier: 7.1.0
         version: 7.1.0
@@ -552,8 +762,8 @@ packages:
     peerDependencies:
       zod: ^3.0.0
 
-  '@ai-sdk/openai@0.0.70':
-    resolution: {integrity: sha512-RYLfiIG093bq6a3BJe2uUTL51zjxnDQLo4qHlNk3PLKSOxbb9Ap/vmhCLnPKo+flqFhqiD6YE9wuNZv++reHaA==}
+  '@ai-sdk/openai@1.0.0-canary.3':
+    resolution: {integrity: sha512-5xtkCL5ObmGCaGbk19AGnr5gGdFGd22JhSq9CmeuvjyeKy5xSU9Qc2PaXwx6GsKEYSFC72IT1U9TYxo+n5HRCg==}
     engines: {node: '>=18'}
     peerDependencies:
       zod: ^3.0.0
@@ -576,6 +786,15 @@ packages:
       zod:
         optional: true
 
+  '@ai-sdk/provider-utils@2.0.0-canary.3':
+    resolution: {integrity: sha512-2kxAkaESSm3295tJRs77NmCCi9Ty7eaEOpqA0xinEmYjobAP/VrzaGthvAVXIzjbQj6ndabDGsVzdnNkhLr1zQ==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      zod: ^3.0.0
+    peerDependenciesMeta:
+      zod:
+        optional: true
+
   '@ai-sdk/provider@0.0.22':
     resolution: {integrity: sha512-smZ1/2jL/JSKnbhC6ama/PxI2D/psj+YAe0c0qpd5ComQCNFltg72VFf0rpUSFMmFuj1pCCNoBOCrvyl8HTZHQ==}
     engines: {node: '>=18'}
@@ -584,6 +803,10 @@ packages:
     resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==}
     engines: {node: '>=18'}
 
+  '@ai-sdk/provider@1.0.0-canary.0':
+    resolution: {integrity: sha512-NyYVTM8veeOLUNcY+2bGQ359AEWm/P3FgNVweGR8dNfihFXYxsBQhB58RhcVnKgWzlUgNFGi9tajgbSKkImTTg==}
+    engines: {node: '>=18'}
+
   '@ai-sdk/react@0.0.70':
     resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==}
     engines: {node: '>=18'}
@@ -765,6 +988,27 @@ packages:
   '@anthropic-ai/sdk@0.30.1':
     resolution: {integrity: sha512-nuKvp7wOIz6BFei8WrTdhmSsx5mwnArYyJgh4+vYu3V4J0Ltb8Xm3odPm51n1aSI0XxNCrDl7O88cxCtUdAkaw==}
 
+  '@anush008/tokenizers-darwin-universal@0.0.0':
+    resolution: {integrity: sha512-SACpWEooTjFX89dFKRVUhivMxxcZRtA3nJGVepdLyrwTkQ1TZQ8581B5JoXp0TcTMHfgnDaagifvVoBiFEdNCQ==}
+    engines: {node: '>= 10'}
+    os: [darwin]
+
+  '@anush008/tokenizers-linux-x64-gnu@0.0.0':
+    resolution: {integrity: sha512-TLjByOPWUEq51L3EJkS+slyH57HKJ7lAz/aBtEt7TIPq4QsE2owOPGovByOLIq1x5Wgh9b+a4q2JasrEFSDDhg==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [linux]
+
+  '@anush008/tokenizers-win32-x64-msvc@0.0.0':
+    resolution: {integrity: sha512-/5kP0G96+Cr6947F0ZetXnmL31YCaN15dbNbh2NHg7TXXRwfqk95+JtPP5Q7v4jbR2xxAmuseBqB4H/V7zKWuw==}
+    engines: {node: '>= 10'}
+    cpu: [x64]
+    os: [win32]
+
+  '@anush008/tokenizers@0.0.0':
+    resolution: {integrity: sha512-IQD9wkVReKAhsEAbDjh/0KrBGTEXelqZLpOBRDaIRvlzZ9sjmUP+gKbpvzyJnei2JHQiE8JAgj7YcNloINbGBw==}
+    engines: {node: '>= 10'}
+
   '@babel/code-frame@7.26.2':
     resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
     engines: {node: '>=6.9.0'}
@@ -1445,44 +1689,6 @@ packages:
     resolution: {integrity: sha512-d7TeUl5t+TOMJe7/CRYtf+x6hbd8N25DtH7guQTIjjr3AFVortxiAIgNejGvVqy0by4eNByw+oVil15oqxz2Eg==}
     deprecated: This project has been renamed to @ghostery/adblocker. Install using @ghostery/adblocker instead
 
-  '@cloudflare/kv-asset-handler@0.3.4':
-    resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==}
-    engines: {node: '>=16.13'}
-
-  '@cloudflare/workerd-darwin-64@1.20241022.0':
-    resolution: {integrity: sha512-1NNYun37myMTgCUiPQEJ0cMal4mKZVTpkD0b2tx9hV70xji+frVJcSK8YVLeUm1P+Rw1d/ct8DMgQuCpsz3Fsw==}
-    engines: {node: '>=16'}
-    cpu: [x64]
-    os: [darwin]
-
-  '@cloudflare/workerd-darwin-arm64@1.20241022.0':
-    resolution: {integrity: sha512-FOO/0P0U82EsTLTdweNVgw+4VOk5nghExLPLSppdOziq6IR5HVgP44Kmq5LdsUeHUhwUmfOh9hzaTpkNzUqKvw==}
-    engines: {node: '>=16'}
-    cpu: [arm64]
-    os: [darwin]
-
-  '@cloudflare/workerd-linux-64@1.20241022.0':
-    resolution: {integrity: sha512-RsNc19BQJG9yd+ngnjuDeG9ywZG+7t1L4JeglgceyY5ViMNMKVO7Zpbsu69kXslU9h6xyQG+lrmclg3cBpnhYA==}
-    engines: {node: '>=16'}
-    cpu: [x64]
-    os: [linux]
-
-  '@cloudflare/workerd-linux-arm64@1.20241022.0':
-    resolution: {integrity: sha512-x5mUXpKxfsosxcFmcq5DaqLs37PejHYVRsNz1cWI59ma7aC4y4Qn6Tf3i0r9MwQTF/MccP4SjVslMU6m4W7IaA==}
-    engines: {node: '>=16'}
-    cpu: [arm64]
-    os: [linux]
-
-  '@cloudflare/workerd-windows-64@1.20241022.0':
-    resolution: {integrity: sha512-eBCClx4szCOgKqOlxxbdNszMqQf3MRG1B9BRIqEM/diDfdR9IrZ8l3FaEm+l9gXgPmS6m1NBn40aWuGBl8UTSw==}
-    engines: {node: '>=16'}
-    cpu: [x64]
-    os: [win32]
-
-  '@cloudflare/workers-shared@0.7.0':
-    resolution: {integrity: sha512-LLQRTqx7lKC7o2eCYMpyc5FXV8d0pUX6r3A+agzhqS9aoR5A6zCPefwQGcvbKx83ozX22ATZcemwxQXn12UofQ==}
-    engines: {node: '>=16.7.0'}
-
   '@colors/colors@1.5.0':
     resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
     engines: {node: '>=0.1.90'}
@@ -1793,15 +1999,11 @@ packages:
   '@emnapi/wasi-threads@1.0.1':
     resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
 
-  '@esbuild-plugins/node-globals-polyfill@0.2.3':
-    resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==}
-    peerDependencies:
-      esbuild: '*'
-
-  '@esbuild-plugins/node-modules-polyfill@0.2.2':
-    resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==}
-    peerDependencies:
-      esbuild: '*'
+  '@esbuild/aix-ppc64@0.23.1':
+    resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
+    engines: {node: '>=18'}
+    cpu: [ppc64]
+    os: [aix]
 
   '@esbuild/aix-ppc64@0.24.0':
     resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
@@ -1809,9 +2011,9 @@ packages:
     cpu: [ppc64]
     os: [aix]
 
-  '@esbuild/android-arm64@0.17.19':
-    resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
-    engines: {node: '>=12'}
+  '@esbuild/android-arm64@0.23.1':
+    resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
+    engines: {node: '>=18'}
     cpu: [arm64]
     os: [android]
 
@@ -1821,9 +2023,9 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@esbuild/android-arm@0.17.19':
-    resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
-    engines: {node: '>=12'}
+  '@esbuild/android-arm@0.23.1':
+    resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
+    engines: {node: '>=18'}
     cpu: [arm]
     os: [android]
 
@@ -1833,9 +2035,9 @@ packages:
     cpu: [arm]
     os: [android]
 
-  '@esbuild/android-x64@0.17.19':
-    resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
-    engines: {node: '>=12'}
+  '@esbuild/android-x64@0.23.1':
+    resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [android]
 
@@ -1845,9 +2047,9 @@ packages:
     cpu: [x64]
     os: [android]
 
-  '@esbuild/darwin-arm64@0.17.19':
-    resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
-    engines: {node: '>=12'}
+  '@esbuild/darwin-arm64@0.23.1':
+    resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
+    engines: {node: '>=18'}
     cpu: [arm64]
     os: [darwin]
 
@@ -1857,9 +2059,9 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
-  '@esbuild/darwin-x64@0.17.19':
-    resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
-    engines: {node: '>=12'}
+  '@esbuild/darwin-x64@0.23.1':
+    resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [darwin]
 
@@ -1869,9 +2071,9 @@ packages:
     cpu: [x64]
     os: [darwin]
 
-  '@esbuild/freebsd-arm64@0.17.19':
-    resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
-    engines: {node: '>=12'}
+  '@esbuild/freebsd-arm64@0.23.1':
+    resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
+    engines: {node: '>=18'}
     cpu: [arm64]
     os: [freebsd]
 
@@ -1881,9 +2083,9 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
-  '@esbuild/freebsd-x64@0.17.19':
-    resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
-    engines: {node: '>=12'}
+  '@esbuild/freebsd-x64@0.23.1':
+    resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [freebsd]
 
@@ -1893,9 +2095,9 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
-  '@esbuild/linux-arm64@0.17.19':
-    resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-arm64@0.23.1':
+    resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
+    engines: {node: '>=18'}
     cpu: [arm64]
     os: [linux]
 
@@ -1905,9 +2107,9 @@ packages:
     cpu: [arm64]
     os: [linux]
 
-  '@esbuild/linux-arm@0.17.19':
-    resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-arm@0.23.1':
+    resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
+    engines: {node: '>=18'}
     cpu: [arm]
     os: [linux]
 
@@ -1917,9 +2119,9 @@ packages:
     cpu: [arm]
     os: [linux]
 
-  '@esbuild/linux-ia32@0.17.19':
-    resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-ia32@0.23.1':
+    resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
+    engines: {node: '>=18'}
     cpu: [ia32]
     os: [linux]
 
@@ -1929,9 +2131,9 @@ packages:
     cpu: [ia32]
     os: [linux]
 
-  '@esbuild/linux-loong64@0.17.19':
-    resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-loong64@0.23.1':
+    resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
+    engines: {node: '>=18'}
     cpu: [loong64]
     os: [linux]
 
@@ -1941,9 +2143,9 @@ packages:
     cpu: [loong64]
     os: [linux]
 
-  '@esbuild/linux-mips64el@0.17.19':
-    resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-mips64el@0.23.1':
+    resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
+    engines: {node: '>=18'}
     cpu: [mips64el]
     os: [linux]
 
@@ -1953,9 +2155,9 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
-  '@esbuild/linux-ppc64@0.17.19':
-    resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-ppc64@0.23.1':
+    resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
+    engines: {node: '>=18'}
     cpu: [ppc64]
     os: [linux]
 
@@ -1965,9 +2167,9 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
-  '@esbuild/linux-riscv64@0.17.19':
-    resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-riscv64@0.23.1':
+    resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
+    engines: {node: '>=18'}
     cpu: [riscv64]
     os: [linux]
 
@@ -1977,9 +2179,9 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
-  '@esbuild/linux-s390x@0.17.19':
-    resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-s390x@0.23.1':
+    resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
+    engines: {node: '>=18'}
     cpu: [s390x]
     os: [linux]
 
@@ -1989,9 +2191,9 @@ packages:
     cpu: [s390x]
     os: [linux]
 
-  '@esbuild/linux-x64@0.17.19':
-    resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-x64@0.23.1':
+    resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [linux]
 
@@ -2001,9 +2203,9 @@ packages:
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/netbsd-x64@0.17.19':
-    resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
-    engines: {node: '>=12'}
+  '@esbuild/netbsd-x64@0.23.1':
+    resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [netbsd]
 
@@ -2013,15 +2215,21 @@ packages:
     cpu: [x64]
     os: [netbsd]
 
+  '@esbuild/openbsd-arm64@0.23.1':
+    resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [openbsd]
+
   '@esbuild/openbsd-arm64@0.24.0':
     resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [openbsd]
 
-  '@esbuild/openbsd-x64@0.17.19':
-    resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
-    engines: {node: '>=12'}
+  '@esbuild/openbsd-x64@0.23.1':
+    resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [openbsd]
 
@@ -2031,9 +2239,9 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/sunos-x64@0.17.19':
-    resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
-    engines: {node: '>=12'}
+  '@esbuild/sunos-x64@0.23.1':
+    resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [sunos]
 
@@ -2043,9 +2251,9 @@ packages:
     cpu: [x64]
     os: [sunos]
 
-  '@esbuild/win32-arm64@0.17.19':
-    resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
-    engines: {node: '>=12'}
+  '@esbuild/win32-arm64@0.23.1':
+    resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
+    engines: {node: '>=18'}
     cpu: [arm64]
     os: [win32]
 
@@ -2055,9 +2263,9 @@ packages:
     cpu: [arm64]
     os: [win32]
 
-  '@esbuild/win32-ia32@0.17.19':
-    resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
-    engines: {node: '>=12'}
+  '@esbuild/win32-ia32@0.23.1':
+    resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
+    engines: {node: '>=18'}
     cpu: [ia32]
     os: [win32]
 
@@ -2067,9 +2275,9 @@ packages:
     cpu: [ia32]
     os: [win32]
 
-  '@esbuild/win32-x64@0.17.19':
-    resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
-    engines: {node: '>=12'}
+  '@esbuild/win32-x64@0.23.1':
+    resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
+    engines: {node: '>=18'}
     cpu: [x64]
     os: [win32]
 
@@ -2117,10 +2325,6 @@ packages:
     resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@fastify/busboy@2.1.1':
-    resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
-    engines: {node: '>=14'}
-
   '@google-cloud/vertexai@1.9.0':
     resolution: {integrity: sha512-8brlcJwFXI4fPuBtsDNQqCdWZmz8gV9jeEKOU0vc5H2SjehCQpXK/NwuSEr916zbhlBHtg/sU37qQQdgvh5BRA==}
     engines: {node: '>=18.0.0'}
@@ -3771,9 +3975,6 @@ packages:
   '@types/retry@0.12.0':
     resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
 
-  '@types/retry@0.12.1':
-    resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==}
-
   '@types/sax@1.2.7':
     resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
 
@@ -4239,9 +4440,6 @@ packages:
     resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
     engines: {node: '>=8'}
 
-  as-table@1.0.55:
-    resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
-
   asn1@0.2.6:
     resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
 
@@ -4444,9 +4642,6 @@ packages:
   bl@4.1.0:
     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
 
-  blake3-wasm@2.1.5:
-    resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
-
   blessed@0.1.81:
     resolution: {integrity: sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==}
     engines: {node: '>= 0.8.0'}
@@ -4614,9 +4809,6 @@ packages:
     resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==}
     engines: {node: '>=6'}
 
-  capnp-ts@0.7.0:
-    resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==}
-
   capsolver-npm@2.0.2:
     resolution: {integrity: sha512-PvkAGTuwtKXczJeoiLu2XQ4SzJh0m7Yr3ONJuvdjEAw95LwtfGxZ3Ip/w21kR94R4O260omLGlTcQvPf2ECnLg==}
 
@@ -4857,9 +5049,6 @@ packages:
     resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
     engines: {node: '>= 0.8'}
 
-  comlink@4.3.1:
-    resolution: {integrity: sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==}
-
   comma-separated-tokens@1.0.8:
     resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
 
@@ -5020,10 +5209,6 @@ packages:
     resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
     engines: {node: '>= 0.6'}
 
-  cookie@0.7.2:
-    resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
-    engines: {node: '>= 0.6'}
-
   copy-text-to-clipboard@3.2.0:
     resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==}
     engines: {node: '>=12'}
@@ -5107,9 +5292,6 @@ packages:
   cross-fetch@3.1.8:
     resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
 
-  cross-fetch@4.0.0:
-    resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
-
   cross-spawn@7.0.5:
     resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
     engines: {node: '>= 8'}
@@ -5402,16 +5584,10 @@ packages:
   data-uri-to-buffer@0.0.3:
     resolution: {integrity: sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw==}
 
-  data-uri-to-buffer@2.0.2:
-    resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
-
   data-uri-to-buffer@6.0.2:
     resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
     engines: {node: '>= 14'}
 
-  date-fns@4.1.0:
-    resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
-
   dateformat@3.0.3:
     resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
 
@@ -5527,9 +5703,6 @@ packages:
     resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
     engines: {node: '>= 0.4'}
 
-  defu@6.1.4:
-    resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
-
   degenerator@5.0.1:
     resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
     engines: {node: '>= 14'}
@@ -5722,8 +5895,8 @@ packages:
     engines: {node: '>=0.10.0'}
     hasBin: true
 
-  electron-to-chromium@1.5.53:
-    resolution: {integrity: sha512-7F6qFMWzBArEFK4PLE+c+nWzhS1kIoNkQvGnNDogofxQAym+roQ0GUIdw6C/4YdJ6JKGp19c2a/DLcfKTi4wRQ==}
+  electron-to-chromium@1.5.55:
+    resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==}
 
   emittery@0.13.1:
     resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
@@ -5840,9 +6013,9 @@ packages:
   esast-util-from-js@2.0.1:
     resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
 
-  esbuild@0.17.19:
-    resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
-    engines: {node: '>=12'}
+  esbuild@0.23.1:
+    resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
+    engines: {node: '>=18'}
     hasBin: true
 
   esbuild@0.24.0:
@@ -5987,9 +6160,6 @@ packages:
   estree-util-visit@2.0.0:
     resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
 
-  estree-walker@0.6.1:
-    resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
-
   estree-walker@2.0.2:
     resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
 
@@ -6042,6 +6212,10 @@ packages:
     resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==}
     engines: {node: '>=14.18'}
 
+  eventsource-parser@3.0.0:
+    resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==}
+    engines: {node: '>=18.0.0'}
+
   execa@5.0.0:
     resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==}
     engines: {node: '>=10'}
@@ -6054,10 +6228,6 @@ packages:
     resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
     engines: {node: '>=16.17'}
 
-  exit-hook@2.2.1:
-    resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
-    engines: {node: '>=6'}
-
   exit@0.1.2:
     resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
     engines: {node: '>= 0.8.0'}
@@ -6135,6 +6305,9 @@ packages:
   fast-uri@3.0.3:
     resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==}
 
+  fastembed@1.14.1:
+    resolution: {integrity: sha512-Y14v+FWZwjNUpQ7mRGYu4N5yF+hZkF7zqzPWzzLbwdIEtYsHy0DSpiVJ+Fg6Oi1fQjrBKASQt0hdSMSjw1/Wtw==}
+
   fastestsmallesttextencoderdecoder@1.0.22:
     resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==}
 
@@ -6173,11 +6346,6 @@ packages:
     resolution: {integrity: sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==}
     engines: {node: '>=16'}
 
-  figlet@1.8.0:
-    resolution: {integrity: sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==}
-    engines: {node: '>= 0.4.0'}
-    hasBin: true
-
   figures@3.2.0:
     resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
     engines: {node: '>=8'}
@@ -6246,9 +6414,6 @@ packages:
     resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==}
     engines: {node: '>=18'}
 
-  fix-webm-duration@1.0.6:
-    resolution: {integrity: sha512-zVAqi4gE+8ywxJuAyV/rlJVX6CMtvyapEbQx6jyoeX9TMjdqAlt/FdG5d7rXSSkDVzTvS0H7CtwzHcH/vh4FPA==}
-
   flat-cache@4.0.1:
     resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
     engines: {node: '>=16'}
@@ -6445,9 +6610,6 @@ packages:
     resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
     engines: {node: '>=8'}
 
-  get-source@2.0.12:
-    resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
-
   get-stream@5.2.0:
     resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
     engines: {node: '>=8'}
@@ -6464,6 +6626,9 @@ packages:
     resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
     engines: {node: '>=16'}
 
+  get-tsconfig@4.8.1:
+    resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+
   get-uri@6.0.3:
     resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==}
     engines: {node: '>= 14'}
@@ -6884,9 +7049,6 @@ packages:
     peerDependencies:
       postcss: ^8.1.0
 
-  idb@7.1.1:
-    resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
-
   ieee754@1.2.1:
     resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
 
@@ -6980,10 +7142,6 @@ packages:
     resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
     engines: {node: '>=12.0.0'}
 
-  install@0.13.0:
-    resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==}
-    engines: {node: '>= 0.10'}
-
   internmap@1.0.1:
     resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
 
@@ -7269,12 +7427,6 @@ packages:
     resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
     engines: {node: '>=8'}
 
-  itty-router@5.0.18:
-    resolution: {integrity: sha512-mK3ReOt4ARAGy0V0J7uHmArG2USN2x0zprZ+u+YgmeRjXTDbaowDy3kPcsmQY6tH+uHhDgpWit9Vqmv/4rTXwA==}
-
-  itty-time@1.0.6:
-    resolution: {integrity: sha512-+P8IZaLLBtFv8hCkIjcymZOp4UJ+xW6bSlQsXGqrkmJh7vSiMFSlNne0mCYagEE0N7HDNR5jJBRxwN0oYv61Rw==}
-
   jackspeak@3.4.3:
     resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
 
@@ -7812,9 +7964,6 @@ packages:
   magic-bytes.js@1.10.0:
     resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==}
 
-  magic-string@0.25.9:
-    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
-
   magic-string@0.30.12:
     resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
 
@@ -8125,11 +8274,6 @@ packages:
     engines: {node: '>=4'}
     hasBin: true
 
-  mime@3.0.0:
-    resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
-    engines: {node: '>=10.0.0'}
-    hasBin: true
-
   mimic-fn@2.1.0:
     resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
     engines: {node: '>=6'}
@@ -8164,11 +8308,6 @@ packages:
     peerDependencies:
       webpack: ^5.0.0
 
-  miniflare@3.20241022.0:
-    resolution: {integrity: sha512-x9Fbq1Hmz1f0osIT9Qmj78iX4UpCP2EqlZnA/tzj/3+I49vc3Kq0fNqSSKplcdf6HlCHdL3fOBicmreQF4BUUQ==}
-    engines: {node: '>=16.13'}
-    hasBin: true
-
   minimalistic-assert@1.0.1:
     resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
 
@@ -8319,10 +8458,6 @@ packages:
     resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==}
     engines: {node: '>=10'}
 
-  mustache@4.2.0:
-    resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
-    hasBin: true
-
   mute-stream@0.0.8:
     resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
 
@@ -8472,10 +8607,6 @@ packages:
   node-releases@2.0.18:
     resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
 
-  node-wav@0.0.2:
-    resolution: {integrity: sha512-M6Rm/bbG6De/gKGxOpeOobx/dnGuP0dz40adqx38boqHhlWssBJZgLCPBNtb9NkrmnKYiV04xELq+R6PFOnoLA==}
-    engines: {node: '>=4.4.0'}
-
   nodejs-whisper@0.1.18:
     resolution: {integrity: sha512-2FETHL/Ur46jIEh3H4bhJ0WAdPJxWBcaLPcdHCy6oDAXfD7ZGomQAiIL+musqtY1G1IV6/5+zUZJNxdZIsfy6A==}
     hasBin: true
@@ -8624,9 +8755,6 @@ packages:
     resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==}
     engines: {node: '>= 18'}
 
-  ohash@1.1.4:
-    resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==}
-
   ollama-ai-provider@0.16.1:
     resolution: {integrity: sha512-0vSQVz5Y/LguyzfO4bi1JrrVGF/k2JvO8/uFR0wYmqDFp8KPp4+AhdENSynGBr1oRhMWOM4F1l6cv7UNDgRMjw==}
     engines: {node: '>=18'}
@@ -8793,10 +8921,6 @@ packages:
     resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
     engines: {node: '>=8'}
 
-  p-retry@5.1.2:
-    resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
   p-timeout@3.2.0:
     resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
     engines: {node: '>=8'}
@@ -8967,9 +9091,6 @@ packages:
   path-to-regexp@3.3.0:
     resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
 
-  path-to-regexp@6.3.0:
-    resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
-
   path-type@3.0.0:
     resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
     engines: {node: '>=4'}
@@ -9454,9 +9575,6 @@ packages:
     resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==}
     engines: {node: '>=4'}
 
-  printable-characters@1.0.42:
-    resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
-
   prism-media@1.3.5:
     resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==}
     version: 1.3.5
@@ -9561,8 +9679,8 @@ packages:
   proxy-from-env@1.1.0:
     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
 
-  psl@1.9.0:
-    resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+  psl@1.10.0:
+    resolution: {integrity: sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==}
 
   pstree.remy@1.1.8:
     resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
@@ -9975,6 +10093,9 @@ packages:
   resolve-pathname@3.0.0:
     resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==}
 
+  resolve-pkg-maps@1.0.0:
+    resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
   resolve.exports@2.0.2:
     resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
     engines: {node: '>=10'}
@@ -10032,16 +10153,6 @@ packages:
   robust-predicates@3.0.2:
     resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
 
-  rollup-plugin-inject@3.0.2:
-    resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==}
-    deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
-
-  rollup-plugin-node-polyfills@0.2.1:
-    resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==}
-
-  rollup-pluginutils@2.8.2:
-    resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
-
   rollup@2.79.2:
     resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==}
     engines: {node: '>=10.0.0'}
@@ -10361,10 +10472,6 @@ packages:
     resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
     engines: {node: '>= 8'}
 
-  sourcemap-codec@1.4.8:
-    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
-    deprecated: Please use @jridgewell/sourcemap-codec instead
-
   space-separated-tokens@1.1.5:
     resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
 
@@ -10460,9 +10567,6 @@ packages:
     resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
     engines: {node: '>=10'}
 
-  stacktracey@2.1.8:
-    resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
-
   statuses@1.5.0:
     resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
     engines: {node: '>= 0.6'}
@@ -10486,10 +10590,6 @@ packages:
     resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==}
     engines: {node: '>=18'}
 
-  stoppable@1.1.0:
-    resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
-    engines: {node: '>=4', npm: '>=6'}
-
   stream-parser@0.3.1:
     resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==}
 
@@ -10792,11 +10892,11 @@ packages:
     resolution: {integrity: sha512-CvvMFgecnQMyg59nOnAD5O4lV83cVj2ooDniJ3j2bYvMajqlK4wQ13k6OUHfA+J5nkInTxbSGJv2olUJIiAtJg==}
     engines: {node: '>= 18'}
 
-  tldts-core@6.1.58:
-    resolution: {integrity: sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg==}
+  tldts-core@6.1.59:
+    resolution: {integrity: sha512-EiYgNf275AQyVORl8HQYYe7rTVnmLb4hkWK7wAk/12Ksy5EiHpmUmTICa4GojookBPC8qkLMBKKwCmzNA47ZPQ==}
 
-  tldts-experimental@6.1.58:
-    resolution: {integrity: sha512-oMXXM56JFUjwcw+2Vt7NP3LQUpK3ZLdGAqSAFwGtAPWjvKK36bJ162UjsnSdFsq6nU3Wae5HYlE8N/vULPZ00g==}
+  tldts-experimental@6.1.59:
+    resolution: {integrity: sha512-blesi68v+a9ISgFoV1bCbGXoRiKCIk4Bw3tcbBwPjuUzlggK0zjsZuPC6sJ9EOJgKBiqOLqvrTiXGP5Ryc7E5Q==}
 
   tmp@0.0.33:
     resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
@@ -10869,10 +10969,6 @@ packages:
   trough@2.2.0:
     resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
 
-  true-myth@6.2.0:
-    resolution: {integrity: sha512-NYvzj/h2mGXmdIBmz825c/lQhpI4bzUQEEiBCAbNOVpr6aeYa1WTpJ+OmGmj1yPqbTLPKCCSi54yDnaEup504Q==}
-    engines: {node: 14.* || 16.* || >= 18.*}
-
   ts-api-utils@1.4.0:
     resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==}
     engines: {node: '>=16'}
@@ -10956,6 +11052,11 @@ packages:
       typescript:
         optional: true
 
+  tsx@4.19.2:
+    resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
+    engines: {node: '>=18.0.0'}
+    hasBin: true
+
   tuf-js@2.2.1:
     resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==}
     engines: {node: ^16.14.0 || >=18.0.0}
@@ -11063,17 +11164,10 @@ packages:
   undici-types@6.19.8:
     resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
 
-  undici@5.28.4:
-    resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
-    engines: {node: '>=14.0'}
-
   undici@6.19.8:
     resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==}
     engines: {node: '>=18.17'}
 
-  unenv-nightly@2.0.0-20241024-111401-d4156ac:
-    resolution: {integrity: sha512-xJO1hfY+Te+/XnfCYrCbFbRcgu6XEODND1s5wnVbaBCkuQX7JXF7fHEXPrukFE2j8EOH848P8QN19VO47XN8hw==}
-
   unicode-canonical-property-names-ecmascript@2.0.1:
     resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
     engines: {node: '>=4'}
@@ -11455,12 +11549,6 @@ packages:
     engines: {node: ^16.13.0 || >=18.0.0}
     hasBin: true
 
-  whisper-turbo@0.11.0:
-    resolution: {integrity: sha512-h2tGY1VwNAjFsEUkn2fE5NrpyNioHLQu8CSHF2s6N3mhkvPytYSNLhqUNER5OMr8s7bLtV6aQHt4jZkSmE5B6g==}
-
-  whisper-webgpu@0.10.0:
-    resolution: {integrity: sha512-zrv72GKvL9Ui5VF4vDiUI1CnNffgBrTfDGEnCa3qKDF7TqJ5FdcLRoW8KWWMN5GaKDRPloqk2+xJFQfJaXRI8Q==}
-
   wide-align@1.1.5:
     resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
 
@@ -11478,21 +11566,6 @@ packages:
   wordwrap@1.0.0:
     resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
 
-  workerd@1.20241022.0:
-    resolution: {integrity: sha512-jyGXsgO9DRcJyx6Ovv7gUyDPc3UYC2i/E0p9GFUg6GUzpldw4Y93y9kOmdfsOnKZ3+lY53veSiUniiBPE6Q2NQ==}
-    engines: {node: '>=16'}
-    hasBin: true
-
-  wrangler@3.84.0:
-    resolution: {integrity: sha512-EA8oh7YQmZ3kD+a5MId9reHKGgXpodmsPWMLriE5gT5YmG9is66n0AA2tyLzQZKZXmgbo6JyGxvCDPcLeb/X0w==}
-    engines: {node: '>=16.17.0'}
-    hasBin: true
-    peerDependencies:
-      '@cloudflare/workers-types': ^4.20241022.0
-    peerDependenciesMeta:
-      '@cloudflare/workers-types':
-        optional: true
-
   wrap-ansi@6.2.0:
     resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
     engines: {node: '>=8'}
@@ -11582,9 +11655,6 @@ packages:
     resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
     engines: {node: '>=0.4'}
 
-  xxhash-wasm@1.0.2:
-    resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==}
-
   y18n@5.0.8:
     resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
     engines: {node: '>=10'}
@@ -11652,9 +11722,6 @@ packages:
     resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
     engines: {node: '>=18'}
 
-  youch@3.3.4:
-    resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
-
   youtube-dl-exec@3.0.10:
     resolution: {integrity: sha512-t3ih+3bn2rFYSStuVjKVHUPyPYhPvPjIPjJZAzjFb6qD8uJxgJ5GHicSwbPkezM8IVdnoKPRkZ6XuIPHCqRRZg==}
     engines: {node: '>= 18'}
@@ -11707,10 +11774,10 @@ snapshots:
       '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8)
       zod: 3.23.8
 
-  '@ai-sdk/openai@0.0.70(zod@3.23.8)':
+  '@ai-sdk/openai@1.0.0-canary.3(zod@3.23.8)':
     dependencies:
-      '@ai-sdk/provider': 0.0.26
-      '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8)
+      '@ai-sdk/provider': 1.0.0-canary.0
+      '@ai-sdk/provider-utils': 2.0.0-canary.3(zod@3.23.8)
       zod: 3.23.8
 
   '@ai-sdk/provider-utils@1.0.17(zod@3.23.8)':
@@ -11731,6 +11798,15 @@ snapshots:
     optionalDependencies:
       zod: 3.23.8
 
+  '@ai-sdk/provider-utils@2.0.0-canary.3(zod@3.23.8)':
+    dependencies:
+      '@ai-sdk/provider': 1.0.0-canary.0
+      eventsource-parser: 3.0.0
+      nanoid: 5.0.8
+      secure-json-parse: 2.7.0
+    optionalDependencies:
+      zod: 3.23.8
+
   '@ai-sdk/provider@0.0.22':
     dependencies:
       json-schema: 0.4.0
@@ -11739,6 +11815,10 @@ snapshots:
     dependencies:
       json-schema: 0.4.0
 
+  '@ai-sdk/provider@1.0.0-canary.0':
+    dependencies:
+      json-schema: 0.4.0
+
   '@ai-sdk/react@0.0.70(react@18.2.0)(zod@3.23.8)':
     dependencies:
       '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8)
@@ -11993,6 +12073,21 @@ snapshots:
     transitivePeerDependencies:
       - encoding
 
+  '@anush008/tokenizers-darwin-universal@0.0.0':
+    optional: true
+
+  '@anush008/tokenizers-linux-x64-gnu@0.0.0':
+    optional: true
+
+  '@anush008/tokenizers-win32-x64-msvc@0.0.0':
+    optional: true
+
+  '@anush008/tokenizers@0.0.0':
+    optionalDependencies:
+      '@anush008/tokenizers-darwin-universal': 0.0.0
+      '@anush008/tokenizers-linux-x64-gnu': 0.0.0
+      '@anush008/tokenizers-win32-x64-msvc': 0.0.0
+
   '@babel/code-frame@7.26.2':
     dependencies:
       '@babel/helper-validator-identifier': 7.25.9
@@ -12852,7 +12947,7 @@ snapshots:
       '@cliqz/adblocker': 1.34.0
       '@cliqz/adblocker-content': 1.34.0
       playwright: 1.48.2
-      tldts-experimental: 6.1.58
+      tldts-experimental: 6.1.59
 
   '@cliqz/adblocker@1.34.0':
     dependencies:
@@ -12863,31 +12958,7 @@ snapshots:
       '@remusao/smaz': 1.10.0
       '@types/chrome': 0.0.278
       '@types/firefox-webext-browser': 120.0.4
-      tldts-experimental: 6.1.58
-
-  '@cloudflare/kv-asset-handler@0.3.4':
-    dependencies:
-      mime: 3.0.0
-
-  '@cloudflare/workerd-darwin-64@1.20241022.0':
-    optional: true
-
-  '@cloudflare/workerd-darwin-arm64@1.20241022.0':
-    optional: true
-
-  '@cloudflare/workerd-linux-64@1.20241022.0':
-    optional: true
-
-  '@cloudflare/workerd-linux-arm64@1.20241022.0':
-    optional: true
-
-  '@cloudflare/workerd-windows-64@1.20241022.0':
-    optional: true
-
-  '@cloudflare/workers-shared@0.7.0':
-    dependencies:
-      mime: 3.0.0
-      zod: 3.23.8
+      tldts-experimental: 6.1.59
 
   '@colors/colors@1.5.0':
     optional: true
@@ -13874,149 +13945,145 @@ snapshots:
     dependencies:
       tslib: 2.8.0
 
-  '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)':
-    dependencies:
-      esbuild: 0.17.19
-
-  '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)':
-    dependencies:
-      esbuild: 0.17.19
-      escape-string-regexp: 4.0.0
-      rollup-plugin-node-polyfills: 0.2.1
+  '@esbuild/aix-ppc64@0.23.1':
+    optional: true
 
   '@esbuild/aix-ppc64@0.24.0':
     optional: true
 
-  '@esbuild/android-arm64@0.17.19':
+  '@esbuild/android-arm64@0.23.1':
     optional: true
 
   '@esbuild/android-arm64@0.24.0':
     optional: true
 
-  '@esbuild/android-arm@0.17.19':
+  '@esbuild/android-arm@0.23.1':
     optional: true
 
   '@esbuild/android-arm@0.24.0':
     optional: true
 
-  '@esbuild/android-x64@0.17.19':
+  '@esbuild/android-x64@0.23.1':
     optional: true
 
   '@esbuild/android-x64@0.24.0':
     optional: true
 
-  '@esbuild/darwin-arm64@0.17.19':
+  '@esbuild/darwin-arm64@0.23.1':
     optional: true
 
   '@esbuild/darwin-arm64@0.24.0':
     optional: true
 
-  '@esbuild/darwin-x64@0.17.19':
+  '@esbuild/darwin-x64@0.23.1':
     optional: true
 
   '@esbuild/darwin-x64@0.24.0':
     optional: true
 
-  '@esbuild/freebsd-arm64@0.17.19':
+  '@esbuild/freebsd-arm64@0.23.1':
     optional: true
 
   '@esbuild/freebsd-arm64@0.24.0':
     optional: true
 
-  '@esbuild/freebsd-x64@0.17.19':
+  '@esbuild/freebsd-x64@0.23.1':
     optional: true
 
   '@esbuild/freebsd-x64@0.24.0':
     optional: true
 
-  '@esbuild/linux-arm64@0.17.19':
+  '@esbuild/linux-arm64@0.23.1':
     optional: true
 
   '@esbuild/linux-arm64@0.24.0':
     optional: true
 
-  '@esbuild/linux-arm@0.17.19':
+  '@esbuild/linux-arm@0.23.1':
     optional: true
 
   '@esbuild/linux-arm@0.24.0':
     optional: true
 
-  '@esbuild/linux-ia32@0.17.19':
+  '@esbuild/linux-ia32@0.23.1':
     optional: true
 
   '@esbuild/linux-ia32@0.24.0':
     optional: true
 
-  '@esbuild/linux-loong64@0.17.19':
+  '@esbuild/linux-loong64@0.23.1':
     optional: true
 
   '@esbuild/linux-loong64@0.24.0':
     optional: true
 
-  '@esbuild/linux-mips64el@0.17.19':
+  '@esbuild/linux-mips64el@0.23.1':
     optional: true
 
   '@esbuild/linux-mips64el@0.24.0':
     optional: true
 
-  '@esbuild/linux-ppc64@0.17.19':
+  '@esbuild/linux-ppc64@0.23.1':
     optional: true
 
   '@esbuild/linux-ppc64@0.24.0':
     optional: true
 
-  '@esbuild/linux-riscv64@0.17.19':
+  '@esbuild/linux-riscv64@0.23.1':
     optional: true
 
   '@esbuild/linux-riscv64@0.24.0':
     optional: true
 
-  '@esbuild/linux-s390x@0.17.19':
+  '@esbuild/linux-s390x@0.23.1':
     optional: true
 
   '@esbuild/linux-s390x@0.24.0':
     optional: true
 
-  '@esbuild/linux-x64@0.17.19':
+  '@esbuild/linux-x64@0.23.1':
     optional: true
 
   '@esbuild/linux-x64@0.24.0':
     optional: true
 
-  '@esbuild/netbsd-x64@0.17.19':
+  '@esbuild/netbsd-x64@0.23.1':
     optional: true
 
   '@esbuild/netbsd-x64@0.24.0':
     optional: true
 
+  '@esbuild/openbsd-arm64@0.23.1':
+    optional: true
+
   '@esbuild/openbsd-arm64@0.24.0':
     optional: true
 
-  '@esbuild/openbsd-x64@0.17.19':
+  '@esbuild/openbsd-x64@0.23.1':
     optional: true
 
   '@esbuild/openbsd-x64@0.24.0':
     optional: true
 
-  '@esbuild/sunos-x64@0.17.19':
+  '@esbuild/sunos-x64@0.23.1':
     optional: true
 
   '@esbuild/sunos-x64@0.24.0':
     optional: true
 
-  '@esbuild/win32-arm64@0.17.19':
+  '@esbuild/win32-arm64@0.23.1':
     optional: true
 
   '@esbuild/win32-arm64@0.24.0':
     optional: true
 
-  '@esbuild/win32-ia32@0.17.19':
+  '@esbuild/win32-ia32@0.23.1':
     optional: true
 
   '@esbuild/win32-ia32@0.24.0':
     optional: true
 
-  '@esbuild/win32-x64@0.17.19':
+  '@esbuild/win32-x64@0.23.1':
     optional: true
 
   '@esbuild/win32-x64@0.24.0':
@@ -14063,8 +14130,6 @@ snapshots:
     dependencies:
       levn: 0.4.1
 
-  '@fastify/busboy@2.1.1': {}
-
   '@google-cloud/vertexai@1.9.0(encoding@0.1.13)':
     dependencies:
       google-auth-library: 9.14.2(encoding@0.1.13)
@@ -14971,7 +15036,7 @@ snapshots:
       '@octokit/request-error': 3.0.3
       '@octokit/types': 9.3.2
       is-plain-object: 5.0.0
-      node-fetch: 2.6.7(encoding@0.1.13)
+      node-fetch: 2.7.0(encoding@0.1.13)
       universal-user-agent: 6.0.1
     transitivePeerDependencies:
       - encoding
@@ -15205,6 +15270,12 @@ snapshots:
     optionalDependencies:
       rollup: 2.79.2
 
+  '@rollup/plugin-json@6.1.0(rollup@4.24.4)':
+    dependencies:
+      '@rollup/pluginutils': 5.1.3(rollup@4.24.4)
+    optionalDependencies:
+      rollup: 4.24.4
+
   '@rollup/plugin-node-resolve@15.3.0(rollup@2.79.2)':
     dependencies:
       '@rollup/pluginutils': 5.1.3(rollup@2.79.2)
@@ -15245,6 +15316,14 @@ snapshots:
     optionalDependencies:
       rollup: 2.79.2
 
+  '@rollup/pluginutils@5.1.3(rollup@4.24.4)':
+    dependencies:
+      '@types/estree': 1.0.6
+      estree-walker: 2.0.2
+      picomatch: 4.0.2
+    optionalDependencies:
+      rollup: 4.24.4
+
   '@rollup/rollup-android-arm-eabi@4.24.4':
     optional: true
 
@@ -16147,8 +16226,6 @@ snapshots:
 
   '@types/retry@0.12.0': {}
 
-  '@types/retry@0.12.1': {}
-
   '@types/sax@1.2.7':
     dependencies:
       '@types/node': 22.8.4
@@ -16702,10 +16779,6 @@ snapshots:
 
   arrify@2.0.1: {}
 
-  as-table@1.0.55:
-    dependencies:
-      printable-characters: 1.0.42
-
   asn1@0.2.6:
     dependencies:
       safer-buffer: 2.1.2
@@ -16955,8 +17028,6 @@ snapshots:
       inherits: 2.0.4
       readable-stream: 3.6.2
 
-  blake3-wasm@2.1.5: {}
-
   blessed@0.1.81: {}
 
   bn.js@5.2.1: {}
@@ -17033,7 +17104,7 @@ snapshots:
   browserslist@4.24.2:
     dependencies:
       caniuse-lite: 1.0.30001678
-      electron-to-chromium: 1.5.53
+      electron-to-chromium: 1.5.55
       node-releases: 2.0.18
       update-browserslist-db: 1.1.1(browserslist@4.24.2)
 
@@ -17171,13 +17242,6 @@ snapshots:
       - supports-color
     optional: true
 
-  capnp-ts@0.7.0:
-    dependencies:
-      debug: 4.3.7(supports-color@5.5.0)
-      tslib: 2.8.0
-    transitivePeerDependencies:
-      - supports-color
-
   capsolver-npm@2.0.2:
     dependencies:
       axios: 0.27.2
@@ -17426,8 +17490,6 @@ snapshots:
     dependencies:
       delayed-stream: 1.0.0
 
-  comlink@4.3.1: {}
-
   comma-separated-tokens@1.0.8: {}
 
   comma-separated-tokens@2.0.3: {}
@@ -17598,8 +17660,6 @@ snapshots:
 
   cookie@0.7.1: {}
 
-  cookie@0.7.2: {}
-
   copy-text-to-clipboard@3.2.0: {}
 
   copy-webpack-plugin@11.0.0(webpack@5.96.1):
@@ -17705,12 +17765,6 @@ snapshots:
     transitivePeerDependencies:
       - encoding
 
-  cross-fetch@4.0.0(encoding@0.1.13):
-    dependencies:
-      node-fetch: 2.7.0(encoding@0.1.13)
-    transitivePeerDependencies:
-      - encoding
-
   cross-spawn@7.0.5:
     dependencies:
       path-key: 3.1.1
@@ -18050,12 +18104,8 @@ snapshots:
 
   data-uri-to-buffer@0.0.3: {}
 
-  data-uri-to-buffer@2.0.2: {}
-
   data-uri-to-buffer@6.0.2: {}
 
-  date-fns@4.1.0: {}
-
   dateformat@3.0.3: {}
 
   dayjs@1.11.13: {}
@@ -18150,8 +18200,6 @@ snapshots:
       has-property-descriptors: 1.0.2
       object-keys: 1.1.1
 
-  defu@6.1.4: {}
-
   degenerator@5.0.1:
     dependencies:
       ast-types: 0.13.4
@@ -18361,7 +18409,7 @@ snapshots:
     dependencies:
       jake: 10.9.2
 
-  electron-to-chromium@1.5.53: {}
+  electron-to-chromium@1.5.55: {}
 
   emittery@0.13.1: {}
 
@@ -18472,30 +18520,33 @@ snapshots:
       esast-util-from-estree: 2.0.0
       vfile-message: 4.0.2
 
-  esbuild@0.17.19:
+  esbuild@0.23.1:
     optionalDependencies:
-      '@esbuild/android-arm': 0.17.19
-      '@esbuild/android-arm64': 0.17.19
-      '@esbuild/android-x64': 0.17.19
-      '@esbuild/darwin-arm64': 0.17.19
-      '@esbuild/darwin-x64': 0.17.19
-      '@esbuild/freebsd-arm64': 0.17.19
-      '@esbuild/freebsd-x64': 0.17.19
-      '@esbuild/linux-arm': 0.17.19
-      '@esbuild/linux-arm64': 0.17.19
-      '@esbuild/linux-ia32': 0.17.19
-      '@esbuild/linux-loong64': 0.17.19
-      '@esbuild/linux-mips64el': 0.17.19
-      '@esbuild/linux-ppc64': 0.17.19
-      '@esbuild/linux-riscv64': 0.17.19
-      '@esbuild/linux-s390x': 0.17.19
-      '@esbuild/linux-x64': 0.17.19
-      '@esbuild/netbsd-x64': 0.17.19
-      '@esbuild/openbsd-x64': 0.17.19
-      '@esbuild/sunos-x64': 0.17.19
-      '@esbuild/win32-arm64': 0.17.19
-      '@esbuild/win32-ia32': 0.17.19
-      '@esbuild/win32-x64': 0.17.19
+      '@esbuild/aix-ppc64': 0.23.1
+      '@esbuild/android-arm': 0.23.1
+      '@esbuild/android-arm64': 0.23.1
+      '@esbuild/android-x64': 0.23.1
+      '@esbuild/darwin-arm64': 0.23.1
+      '@esbuild/darwin-x64': 0.23.1
+      '@esbuild/freebsd-arm64': 0.23.1
+      '@esbuild/freebsd-x64': 0.23.1
+      '@esbuild/linux-arm': 0.23.1
+      '@esbuild/linux-arm64': 0.23.1
+      '@esbuild/linux-ia32': 0.23.1
+      '@esbuild/linux-loong64': 0.23.1
+      '@esbuild/linux-mips64el': 0.23.1
+      '@esbuild/linux-ppc64': 0.23.1
+      '@esbuild/linux-riscv64': 0.23.1
+      '@esbuild/linux-s390x': 0.23.1
+      '@esbuild/linux-x64': 0.23.1
+      '@esbuild/netbsd-x64': 0.23.1
+      '@esbuild/openbsd-arm64': 0.23.1
+      '@esbuild/openbsd-x64': 0.23.1
+      '@esbuild/sunos-x64': 0.23.1
+      '@esbuild/win32-arm64': 0.23.1
+      '@esbuild/win32-ia32': 0.23.1
+      '@esbuild/win32-x64': 0.23.1
+    optional: true
 
   esbuild@0.24.0:
     optionalDependencies:
@@ -18685,8 +18736,6 @@ snapshots:
       '@types/estree-jsx': 1.0.5
       '@types/unist': 3.0.3
 
-  estree-walker@0.6.1: {}
-
   estree-walker@2.0.2: {}
 
   estree-walker@3.0.3:
@@ -18725,6 +18774,8 @@ snapshots:
 
   eventsource-parser@1.1.2: {}
 
+  eventsource-parser@3.0.0: {}
+
   execa@5.0.0:
     dependencies:
       cross-spawn: 7.0.5
@@ -18761,8 +18812,6 @@ snapshots:
       signal-exit: 4.1.0
       strip-final-newline: 3.0.0
 
-  exit-hook@2.2.1: {}
-
   exit@0.1.2: {}
 
   expand-template@2.0.3: {}
@@ -18831,7 +18880,7 @@ snapshots:
 
   extract-zip@2.0.1:
     dependencies:
-      debug: 4.3.4
+      debug: 4.3.7(supports-color@5.5.0)
       get-stream: 5.2.0
       yauzl: 2.10.0
     optionalDependencies:
@@ -18873,6 +18922,13 @@ snapshots:
 
   fast-uri@3.0.3: {}
 
+  fastembed@1.14.1:
+    dependencies:
+      '@anush008/tokenizers': 0.0.0
+      onnxruntime-node: 1.20.0
+      progress: 2.0.3
+      tar: 6.2.1
+
   fastestsmallesttextencoderdecoder@1.0.22: {}
 
   fastq@1.17.1:
@@ -18914,8 +18970,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  figlet@1.8.0: {}
-
   figures@3.2.0:
     dependencies:
       escape-string-regexp: 1.0.5
@@ -18993,8 +19047,6 @@ snapshots:
       semver-regex: 4.0.5
       super-regex: 1.0.0
 
-  fix-webm-duration@1.0.6: {}
-
   flat-cache@4.0.1:
     dependencies:
       flatted: 3.3.1
@@ -19205,11 +19257,6 @@ snapshots:
 
   get-port@5.1.1: {}
 
-  get-source@2.0.12:
-    dependencies:
-      data-uri-to-buffer: 2.0.2
-      source-map: 0.6.1
-
   get-stream@5.2.0:
     dependencies:
       pump: 3.0.2
@@ -19220,6 +19267,11 @@ snapshots:
 
   get-stream@8.0.1: {}
 
+  get-tsconfig@4.8.1:
+    dependencies:
+      resolve-pkg-maps: 1.0.0
+    optional: true
+
   get-uri@6.0.3:
     dependencies:
       basic-ftp: 5.0.5
@@ -19826,8 +19878,6 @@ snapshots:
     dependencies:
       postcss: 8.4.47
 
-  idb@7.1.1: {}
-
   ieee754@1.2.1: {}
 
   ignore-by-default@1.0.1: {}
@@ -19920,8 +19970,6 @@ snapshots:
       through: 2.3.8
       wrap-ansi: 6.2.0
 
-  install@0.13.0: {}
-
   internmap@1.0.1: {}
 
   internmap@2.0.3: {}
@@ -20160,10 +20208,6 @@ snapshots:
       html-escaper: 2.0.2
       istanbul-lib-report: 3.0.1
 
-  itty-router@5.0.18: {}
-
-  itty-time@1.0.6: {}
-
   jackspeak@3.4.3:
     dependencies:
       '@isaacs/cliui': 8.0.2
@@ -20283,7 +20327,7 @@ snapshots:
 
   jest-diff@29.7.0:
     dependencies:
-      chalk: 4.1.0
+      chalk: 4.1.2
       diff-sequences: 29.6.3
       jest-get-type: 29.6.3
       pretty-format: 29.7.0
@@ -20989,10 +21033,6 @@ snapshots:
 
   magic-bytes.js@1.10.0: {}
 
-  magic-string@0.25.9:
-    dependencies:
-      sourcemap-codec: 1.4.8
-
   magic-string@0.30.12:
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.0
@@ -21644,8 +21684,6 @@ snapshots:
 
   mime@1.6.0: {}
 
-  mime@3.0.0: {}
-
   mimic-fn@2.1.0: {}
 
   mimic-fn@4.0.0: {}
@@ -21667,25 +21705,6 @@ snapshots:
       tapable: 2.2.1
       webpack: 5.96.1
 
-  miniflare@3.20241022.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
-    dependencies:
-      '@cspotcode/source-map-support': 0.8.1
-      acorn: 8.14.0
-      acorn-walk: 8.3.4
-      capnp-ts: 0.7.0
-      exit-hook: 2.2.1
-      glob-to-regexp: 0.4.1
-      stoppable: 1.1.0
-      undici: 5.28.4
-      workerd: 1.20241022.0
-      ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
-      youch: 3.3.4
-      zod: 3.23.8
-    transitivePeerDependencies:
-      - bufferutil
-      - supports-color
-      - utf-8-validate
-
   minimalistic-assert@1.0.1: {}
 
   minimatch@10.0.1:
@@ -21833,8 +21852,6 @@ snapshots:
       arrify: 2.0.1
       minimatch: 3.0.5
 
-  mustache@4.2.0: {}
-
   mute-stream@0.0.8: {}
 
   mute-stream@1.0.0: {}
@@ -22006,8 +22023,6 @@ snapshots:
 
   node-releases@2.0.18: {}
 
-  node-wav@0.0.2: {}
-
   nodejs-whisper@0.1.18:
     dependencies:
       readline-sync: 1.4.10
@@ -22153,7 +22168,7 @@ snapshots:
       '@yarnpkg/parsers': 3.0.2
       '@zkochan/js-yaml': 0.0.7
       axios: 1.7.7(debug@4.3.7)
-      chalk: 4.1.0
+      chalk: 4.1.2
       cli-cursor: 3.1.0
       cli-spinners: 2.6.1
       cliui: 8.0.1
@@ -22224,8 +22239,6 @@ snapshots:
       '@octokit/request-error': 6.1.5
       '@octokit/types': 13.6.1
 
-  ohash@1.1.4: {}
-
   ollama-ai-provider@0.16.1(zod@3.23.8):
     dependencies:
       '@ai-sdk/provider': 0.0.26
@@ -22320,9 +22333,9 @@ snapshots:
   ora@5.3.0:
     dependencies:
       bl: 4.1.0
-      chalk: 4.1.0
+      chalk: 4.1.2
       cli-cursor: 3.1.0
-      cli-spinners: 2.6.1
+      cli-spinners: 2.9.2
       is-interactive: 1.0.0
       log-symbols: 4.1.0
       strip-ansi: 6.0.1
@@ -22418,11 +22431,6 @@ snapshots:
       '@types/retry': 0.12.0
       retry: 0.13.1
 
-  p-retry@5.1.2:
-    dependencies:
-      '@types/retry': 0.12.1
-      retry: 0.13.1
-
   p-timeout@3.2.0:
     dependencies:
       p-finally: 1.0.0
@@ -22614,8 +22622,6 @@ snapshots:
 
   path-to-regexp@3.3.0: {}
 
-  path-to-regexp@6.3.0: {}
-
   path-type@3.0.0:
     dependencies:
       pify: 3.0.0
@@ -22856,12 +22862,13 @@ snapshots:
       postcss: 8.4.47
       postcss-selector-parser: 6.1.2
 
-  postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(yaml@2.6.0):
+  postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(yaml@2.6.0):
     dependencies:
       lilconfig: 3.1.2
     optionalDependencies:
       jiti: 1.21.6
       postcss: 8.4.47
+      tsx: 4.19.2
       yaml: 2.6.0
 
   postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.6.3)(webpack@5.96.1):
@@ -23099,8 +23106,6 @@ snapshots:
 
   pretty-time@1.1.0: {}
 
-  printable-characters@1.0.42: {}
-
   prism-media@1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0):
     optionalDependencies:
       '@discordjs/opus': https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13)
@@ -23203,7 +23208,9 @@ snapshots:
 
   proxy-from-env@1.1.0: {}
 
-  psl@1.9.0: {}
+  psl@1.10.0:
+    dependencies:
+      punycode: 2.3.1
 
   pstree.remy@1.1.8: {}
 
@@ -23212,10 +23219,10 @@ snapshots:
       end-of-stream: 1.4.4
       once: 1.4.0
 
-  pumpdotfun-sdk@1.3.2(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@2.79.2)(typescript@5.6.3)(utf-8-validate@5.0.10):
+  pumpdotfun-sdk@1.3.2(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@4.24.4)(typescript@5.6.3)(utf-8-validate@5.0.10):
     dependencies:
       '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
-      '@rollup/plugin-json': 6.1.0(rollup@2.79.2)
+      '@rollup/plugin-json': 6.1.0(rollup@4.24.4)
       '@solana/spl-token': 0.4.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)
       '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)
     transitivePeerDependencies:
@@ -23792,6 +23799,9 @@ snapshots:
 
   resolve-pathname@3.0.0: {}
 
+  resolve-pkg-maps@1.0.0:
+    optional: true
+
   resolve.exports@2.0.2: {}
 
   resolve@1.22.8:
@@ -23841,20 +23851,6 @@ snapshots:
 
   robust-predicates@3.0.2: {}
 
-  rollup-plugin-inject@3.0.2:
-    dependencies:
-      estree-walker: 0.6.1
-      magic-string: 0.25.9
-      rollup-pluginutils: 2.8.2
-
-  rollup-plugin-node-polyfills@0.2.1:
-    dependencies:
-      rollup-plugin-inject: 3.0.2
-
-  rollup-pluginutils@2.8.2:
-    dependencies:
-      estree-walker: 0.6.1
-
   rollup@2.79.2:
     optionalDependencies:
       fsevents: 2.3.3
@@ -24298,8 +24294,6 @@ snapshots:
     dependencies:
       whatwg-url: 7.1.0
 
-  sourcemap-codec@1.4.8: {}
-
   space-separated-tokens@1.1.5: {}
 
   space-separated-tokens@2.0.2: {}
@@ -24407,11 +24401,6 @@ snapshots:
     dependencies:
       escape-string-regexp: 2.0.0
 
-  stacktracey@2.1.8:
-    dependencies:
-      as-table: 1.0.55
-      get-source: 2.0.12
-
   statuses@1.5.0: {}
 
   statuses@2.0.1: {}
@@ -24429,8 +24418,6 @@ snapshots:
 
   steno@4.0.2: {}
 
-  stoppable@1.1.0: {}
-
   stream-parser@0.3.1:
     dependencies:
       debug: 2.6.9
@@ -24763,11 +24750,11 @@ snapshots:
 
   tinyspawn@1.3.3: {}
 
-  tldts-core@6.1.58: {}
+  tldts-core@6.1.59: {}
 
-  tldts-experimental@6.1.58:
+  tldts-experimental@6.1.59:
     dependencies:
-      tldts-core: 6.1.58
+      tldts-core: 6.1.59
 
   tmp@0.0.33:
     dependencies:
@@ -24808,12 +24795,12 @@ snapshots:
 
   tough-cookie@2.5.0:
     dependencies:
-      psl: 1.9.0
+      psl: 1.10.0
       punycode: 2.3.1
 
   tough-cookie@4.1.4:
     dependencies:
-      psl: 1.9.0
+      psl: 1.10.0
       punycode: 2.3.1
       universalify: 0.2.0
       url-parse: 1.5.10
@@ -24836,8 +24823,6 @@ snapshots:
 
   trough@2.2.0: {}
 
-  true-myth@6.2.0: {}
-
   ts-api-utils@1.4.0(typescript@5.6.3):
     dependencies:
       typescript: 5.6.3
@@ -24846,7 +24831,7 @@ snapshots:
 
   ts-interface-checker@0.1.13: {}
 
-  ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.17.19)(jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3):
+  ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.0)(jest@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3)))(typescript@5.6.3):
     dependencies:
       bs-logger: 0.2.6
       ejs: 3.1.10
@@ -24864,7 +24849,7 @@ snapshots:
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
       babel-jest: 29.7.0(@babel/core@7.26.0)
-      esbuild: 0.17.19
+      esbuild: 0.24.0
 
   ts-mixer@6.0.4: {}
 
@@ -24896,7 +24881,7 @@ snapshots:
 
   tslib@2.8.0: {}
 
-  tsup@8.3.5(jiti@1.21.6)(postcss@8.4.47)(typescript@5.6.3)(yaml@2.6.0):
+  tsup@8.3.5(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(typescript@5.6.3)(yaml@2.6.0):
     dependencies:
       bundle-require: 5.0.0(esbuild@0.24.0)
       cac: 6.7.14
@@ -24906,7 +24891,7 @@ snapshots:
       esbuild: 0.24.0
       joycon: 3.1.1
       picocolors: 1.1.1
-      postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.47)(yaml@2.6.0)
+      postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.2)(yaml@2.6.0)
       resolve-from: 5.0.0
       rollup: 4.24.4
       source-map: 0.8.0-beta.0
@@ -24923,6 +24908,14 @@ snapshots:
       - tsx
       - yaml
 
+  tsx@4.19.2:
+    dependencies:
+      esbuild: 0.23.1
+      get-tsconfig: 4.8.1
+    optionalDependencies:
+      fsevents: 2.3.3
+    optional: true
+
   tuf-js@2.2.1:
     dependencies:
       '@tufjs/models': 2.0.1
@@ -25010,19 +25003,8 @@ snapshots:
 
   undici-types@6.19.8: {}
 
-  undici@5.28.4:
-    dependencies:
-      '@fastify/busboy': 2.1.1
-
   undici@6.19.8: {}
 
-  unenv-nightly@2.0.0-20241024-111401-d4156ac:
-    dependencies:
-      defu: 6.1.4
-      ohash: 1.1.4
-      pathe: 1.1.2
-      ufo: 1.5.4
-
   unicode-canonical-property-names-ecmascript@2.0.1: {}
 
   unicode-emoji-modifier-base@1.0.0: {}
@@ -25493,18 +25475,6 @@ snapshots:
     dependencies:
       isexe: 3.1.1
 
-  whisper-turbo@0.11.0:
-    dependencies:
-      comlink: 4.3.1
-      fix-webm-duration: 1.0.6
-      idb: 7.1.1
-      p-retry: 5.1.2
-      true-myth: 6.2.0
-      uuid: 9.0.1
-      whisper-webgpu: 0.10.0
-
-  whisper-webgpu@0.10.0: {}
-
   wide-align@1.1.5:
     dependencies:
       string-width: 4.2.3
@@ -25519,42 +25489,6 @@ snapshots:
 
   wordwrap@1.0.0: {}
 
-  workerd@1.20241022.0:
-    optionalDependencies:
-      '@cloudflare/workerd-darwin-64': 1.20241022.0
-      '@cloudflare/workerd-darwin-arm64': 1.20241022.0
-      '@cloudflare/workerd-linux-64': 1.20241022.0
-      '@cloudflare/workerd-linux-arm64': 1.20241022.0
-      '@cloudflare/workerd-windows-64': 1.20241022.0
-
-  wrangler@3.84.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
-    dependencies:
-      '@cloudflare/kv-asset-handler': 0.3.4
-      '@cloudflare/workers-shared': 0.7.0
-      '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19)
-      '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19)
-      blake3-wasm: 2.1.5
-      chokidar: 3.6.0
-      date-fns: 4.1.0
-      esbuild: 0.17.19
-      itty-time: 1.0.6
-      miniflare: 3.20241022.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
-      nanoid: 3.3.7
-      path-to-regexp: 6.3.0
-      resolve: 1.22.8
-      resolve.exports: 2.0.2
-      selfsigned: 2.4.1
-      source-map: 0.6.1
-      unenv: unenv-nightly@2.0.0-20241024-111401-d4156ac
-      workerd: 1.20241022.0
-      xxhash-wasm: 1.0.2
-    optionalDependencies:
-      fsevents: 2.3.3
-    transitivePeerDependencies:
-      - bufferutil
-      - supports-color
-      - utf-8-validate
-
   wrap-ansi@6.2.0:
     dependencies:
       ansi-styles: 4.3.0
@@ -25642,8 +25576,6 @@ snapshots:
 
   xtend@4.0.2: {}
 
-  xxhash-wasm@1.0.2: {}
-
   y18n@5.0.8: {}
 
   yallist@3.1.1: {}
@@ -25705,12 +25637,6 @@ snapshots:
 
   yoctocolors@2.1.1: {}
 
-  youch@3.3.4:
-    dependencies:
-      cookie: 0.7.2
-      mustache: 4.2.0
-      stacktracey: 2.1.8
-
   youtube-dl-exec@3.0.10:
     dependencies:
       bin-version-check: 6.0.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index aeffb0635cb..e5293be13a0 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,3 @@
 packages:
     - "docs"
-    - "packages/*"
\ No newline at end of file
+    - "packages/*"
diff --git a/scripts/dev.sh b/scripts/dev.sh
index f888ea22c05..c8f0028d3c6 100644
--- a/scripts/dev.sh
+++ b/scripts/dev.sh
@@ -1,4 +1,12 @@
 echo "Passing arguments: $*"
 npx concurrently --raw \
   "pnpm --dir packages/core dev -- $*" \
-  "node -e \"setTimeout(() => process.exit(0), 5000)\" && pnpm --dir packages/agent dev -- $*"
\ No newline at end of file
+  "pnpm --dir packages/client-telegram dev -- $*" \
+  "pnpm --dir packages/client-discord dev -- $*" \
+  "pnpm --dir packages/client-twitter dev -- $*" \
+  "pnpm --dir packages/client-direct dev -- $*" \
+  "pnpm --dir packages/plugin-bootstrap dev -- $*" \
+  "pnpm --dir packages/plugin-node dev -- $*" \
+  "pnpm --dir packages/adapter-sqlite dev -- $*" \
+  "pnpm --dir packages/adapter-postgres dev -- $*" \
+  "node -e \"setTimeout(() => process.exit(0), 5000)\" && pnpm --dir packages/agent dev -- $*"